INTRODUCCIÓN DE INSCRIPCIÓN
RequestJS fue fundado por James Burke, quien también es el fundador de las especificaciones de AMD.
Requestjs le permitirá escribir JavaScript de una manera diferente de lo habitual. Ya no usará etiquetas de script para introducir archivos JS en HTML, y ya no necesitará administrar dependencias a través de etiquetas de script.
RequestJS es un marco de carga del módulo JavaScript muy pequeño y es uno de los mejores implementadores de la especificación AMD. La última versión de RequestJS es solo 14k después de la compresión, que es muy liviana. También puede funcionar en conjunto con otros marcos, y el uso de necesidades de necesidades seguramente mejorará la calidad de su código frontal.
Hay algunos puntos que vale la pena señalar cuando se usa requisitos para la carga del módulo asíncrono:
1. Dos formas de escribir la definición del módulo
1. Definiciones funcionales que existen en las dependencias
Si el módulo tiene dependencias: el primer parámetro es la matriz de nombres de dependencias; El segundo parámetro es una función. Después de cargar todas las dependencias del módulo, se llamará a la función para definir el módulo, por lo que el módulo debe devolver un objeto que define el módulo. La relación de dependencia se inyecta en la función como un parámetro, y la lista de parámetros corresponde a la lista de nombres de dependencia uno por uno.
Define (['a'], function (aj) {var hello = function () {aj.hello ('i am c.js');} return {hello: hello}});PS: El tipo de valor de retorno del módulo no se ve obligado a ser un objeto, y el valor de retorno de cualquier función está permitido.
2. Definición de formato del módulo CommonJS
Requerir: Se utiliza para introducir métodos que dependen de otros módulos.
Exportaciones: exporta un objeto que exporta una variable o método de módulo.
Módulo: contiene información sobre este módulo.
request.config ({baseUrl: "", config: {'b': {size: 'grande'}}, rutas: {a: 'base/a', b: 'base/b', c: 'base/c'}}); Define (function (requerir, exportar, módulo) {var aj = request ("a"); var hello = function () {aj.hello ('i am b.js');} var hello2 = function () {aj.hello ('i am b.js22');} exports.hello = hello; console.log ("b.js: exports", exports ", exports", exports); : módulo ", módulo); console.log (" b.js: config ", módulo.config ()); // no se pueden usar juntos, el retorno sobrescribirá las exportaciones anteriores/*return {hello: hello2}*/});PD: El objeto de retorno y las exportaciones no se pueden usar juntos, la devolución sobrescribirá las exportaciones anteriores.
La siguiente es la información impresa después de la llamada:
Exportaciones: se puede ver que las exportaciones son un atributo del módulo.
Módulo: incluye el alias, URI, el objeto de exportación y el método de información de configuración del módulo.
Configuración: a menudo necesitamos pasar la información de configuración a un módulo. Estas configuraciones a menudo son información a nivel de aplicación y requieren un medio para pasarlas al módulo.
En Requirjs, se implementa en función del elemento de configuración de configuración de requestjs.config ().
2. Tenga cuidado con las variables singleton
Tenga cuidado con las variables en singletons, porque después de requeríajs requiere una vez, el requerimiento posterior usa el caché anterior. Entonces, cuando se define una variable en el módulo, siempre que se cambie este requisito, otros requisitos seguirán siendo consistentes.
Define (function () {var index = 0; var hello = function (msg) {console.log (msg);} var addIndex = function () {index ++;} var getIndex = function () {return index;} return {hello: hello, addindex: addindex, getIndex: getIndex}});Llamado:
requerir (['a',], function (a) {require (['a'], function (a) {console.log (a.getIndex ()); a.addindex (); a.addindex ();}); require ([a '], function (a) {console.log (a.getIndex ());});Los impresos anteriores son:
0
2
3. Borre el caché
Debido a que requeríajs tiene la función del almacenamiento en caché, pero durante el desarrollo, no queremos que cachee, por lo que podemos configurar Urlargs en requirir.config.
Urlargs: RequestJS agrega parámetros de consulta adicionales después de la URL al obtener el recurso.
Ejemplo:
Urlargs: "Bust =" + (New Date ()). GetTime ()
Esto es útil en el desarrollo, pero recuerde eliminarlo antes de implementarlo en el entorno de compilación.
4. Módulos de carga de otros paquetes
RequestJS admite módulos de carga de la estructura del paquete CommonJS, pero requiere una configuración adicional.
La configuración del paquete puede especificar las siguientes propiedades para un paquete específico:
1. Nombre: Nombre del paquete (para el nombre del módulo/mapeo de prefijo).
2. Ubicación: la ubicación en el disco. Las posiciones son relativas a los valores de BaseURL en la configuración a menos que contengan protocolos o comiencen con "/".
3. Principal: después de que la llamada requerida se inicie con el "nombre del paquete", el módulo en un paquete a aplicar.
El valor predeterminado es "principal", a menos que se establezca aquí.
Este valor es relativo al directorio de paquetes.
ejemplo:
Main.js
require.config ({baseUrl: "", paquetes: [{name: "estudiante", ubicación: "paquete-stu"}, {name: "maestro", ubicación: "paquete-tea"}], urlargs: "busto =" + (nuevo date ()). gettime ()}); require (["stiete/store", "maestro/té"], function (sto, tea) {stO.helloLo); Tea.hello ();tea.js:
Define (función (requerir, exportaciones, módulo) {exports.hello = function () {console.log ('soy un maestro.');}});stu.js:
Definir (función (requerir, exportar, módulo) {exports.name = 'Cape';});store.js:
Define (función (requerir, exportar, módulo) {var stu = require ("estudiante/stu"); exports.hello = function () {console.log ('i am' + stu.name);}});Siento que hay dos cosas extrañas sobre esta forma de cargar módulos de otros paquetes (no entiendo muy bien):
1. Si los módulos en otros paquetes se refieren al método de escritura de otros módulos, ¿afectará el usuario el método de escritura del módulo?
2. El principal.js en otros paquetes parece ser inútil, y no hay problema sin contenido.
El contenido anterior son los detalles de los requisitos utilizados por el editor, ¡y espero que sea útil para todos!