Estoy teniendo una aplicación Backbone utilizando Require.js para AMD. Estoy cargando jQuery desde Google CDN, pero después de compilar, la ruta a jQuery parece estar rota.Require.js compilación (r.js) con CDN jQuery no está enlazando con la ruta buena jQuery
La compilación está ocurriendo sin ningún problema o error. Pero una vez que utilizo la versión de compilación, jQuery se añade a la página usando esta URL:
http://example.com/assets/js/jquery.js
lugar de la URL de CDN. Siento que esto se debe al hecho de que mi configuración de ruta se ha perdido y que requiere una dependencia en "jquery" no se toma como una referencia a la ruta sino como una llamada normal a una secuencia de comandos.
Aquí está mi archivo principal:
main.js
require.config({
baseUrl: '/assets/js/',
paths: {
use: 'libs/use-0.2.0.min',
jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min',
underscore: 'libs/underscore-1.3.1.min',
backbone: 'libs/backbone-0.9.2.min'
},
use: {
'underscore': {
attach: '_'
},
'backbone': {
deps: ['use!underscore', 'jquery'],
attach: function(_, $) {
return Backbone;
}
}
}
});
require(['views/app'], function(AppView){
var app_view = new AppView();
});
app.build.js
({
appDir: "../../www",
baseUrl: "assets/js",
dir: "../../build",
optimizeCss: "none",
optimize: "uglify",
findNestedDependencies: true,
preserveLicenseComments: false,
paths: {
use: 'libs/use-0.2.0.min',
jquery: 'empty:',
underscore: 'libs/underscore-1.3.1.min',
backbone: 'libs/backbone-0.9.2.min'
},
modules: [
{
name: "main",
include: ["views/app"],
exclude: ["jquery"]
}
],
use: {
'underscore': {
attach: '_'
},
'backbone': {
deps: ['use!underscore', 'jquery'],
attach: function(_, $) {
return Backbone;
}
}
}
})
(y estoy usando use.js para la carga plugins no AMD)
Después de un poco más de investigación, parece que este comportamiento se debe a use.js –
RequireJS 2.0 incluye ahora 'shim' cual hace más o menos lo mismo que use.js –