2012-03-23 11 views
8

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)

+0

Después de un poco más de investigación, parece que este comportamiento se debe a use.js –

+0

RequireJS 2.0 incluye ahora 'shim' cual hace más o menos lo mismo que use.js –

Respuesta

3

Me gustaría actualizar primero a los RequireJS últimas y echa un vistazo a este enlace:

http://requirejs.org/docs/optimization.html#empty

Y las notas en CDN en esta sección:

http://requirejs.org/docs/api.html#config

Un ejemplo de un repliegue local para require.config({ paths : {} }) :

El patrón anterior para detectar una falla de carga, undef() ing un módulo, modificación de rutas y recarga es una petición bastante común que también hay una forma abreviada de hacerlo. La configuración permite caminos valores de la matriz:

requirejs.config({ 
    // To get timely, correct error triggers in IE, 
    // force a define/shim exports check. 
    enforceDefine : true, 
    paths : { 
     jquery : [ 
      '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min', 
      //If the CDN location fails, load from this location 
      'lib/jquery' 
     ] 
     // etc. 
    } 
}); 
+0

Esa no es exactamente una respuesta a la pregunta. Pero no tuve problemas con los nuevos proyectos que utilizan series require.js 2.x, por lo que para cualquier otra actualización es probablemente una respuesta correcta. –

+0

El primer enlace ahora tiene una respuesta no existente. Una de las razones por las que las preguntas deberían explicar la solución aquí y no solo enlazar a referencias externas ... _sigh_ – kaiser

Cuestiones relacionadas