Leí el documento requirejs desde aquí API
requirejs.config({
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'foo': {
deps: ['bar'],
exports: 'Foo',
init: function (bar) {
//Using a function allows you to call noConflict for
//libraries that support it, and do other cleanup.
//However, plugins for those libraries may still want
//a global. "this" for the function will be the global
//object. The dependencies will be passed in as
//function arguments. If this function returns a value,
//then that value is used as the module export value
//instead of the object found via the 'exports' string.
return this.Foo.noConflict();
}
}
}
});
pero no voy a recibir calzas . ¿Por qué debería usar shim y cómo debo configurar? ¿Puedo obtener más aclaraciones?
por favor, ¿alguien puede explicar con un ejemplo por qué y cuándo deberíamos usar calzas? Gracias.
Underscore
yBackbone
aquí se usa como el normal, ¿quéshim
hago en este caso? ¿Puedo usarrequire( function() { _.extend({}); })
? ¿Entiende_
?Según la documentación de la API RequireJS, shim te permite
- Configurar dependencias
Digamos que tiene 2 módulos javascript (moduleA y moduleB) y uno de ellos (moduleA) depende del otro (moduleB). Ambos son necesarios para su propio módulo, por lo que especifica las dependencias en require () o define ()
Pero dado que el propio requerimiento sigue a AMD, no tiene idea de cuál se buscaría antes. Aquí es donde Shim viene al rescate.
Esto aseguraría que el módulo B siempre se recupere antes de que se cargue el módulo A.
- Configurar exportaciones
Shim export le dice a RequireJS qué miembro del objeto global (la ventana, asumiendo que estás en un navegador, por supuesto) es el valor real del módulo. Digamos que moduleA se agrega a sí mismo
window
como 'modA' (al igual que jQuery y el subrayado lo hacen como $ y _ respectivamente), luego hacemos que nuestro valor de exportación sea 'modA'.Le dará a RequireJS una referencia local a este módulo. El modA global también existirá en la página.
-Inicialización personalizada para scripts "globales del navegador" más antiguos
Esta es probablemente la característica más importante de la configuración de shim que nos permite agregar scripts 'global del navegador', 'que no son de AMD' (que tampoco siguen un patrón modular) como dependencias en nuestro propio módulo.
Digamos que moduleB es un javascript antiguo y simple con solo dos funciones funcA () y funcB ().
Aunque ambas funciones están disponibles en el ámbito de la ventana, RequireJS nos recomienda usarlas a través de su identificador / identificador global para evitar confusiones. Así que configurando la cuña como
El valor de retorno de la función init se utiliza como valor de exportación del módulo en lugar del objeto encontrado a través de la cadena 'exportaciones'. Esto nos permitirá usar funcB en nuestro propio módulo como
Espero que esto haya ayudado.
fuente
Debe agregar rutas en requirejs.config para declarar, ejemplo:
fuente