Ho definito una configurazione RequireJs che definisce i percorsi e gli spessori:RequireJs: Utilizzare caricamento automatico-dipendenze con spessore
require.config({
// define application bootstrap
deps: ["main"],
// define library shortcuts
paths: {
app: "app"
, jquery: "lib/jquery"
, underscore: "lib/underscore"
, backbone: "lib/backbone"
, bootstrap: "lib/bootstrap"
},
// define library dependencies
shim: {
jquery: {
exports: "$"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
bootstrap: {
deps: ['jquery'],
exports: "bootstrap"
},
// main application
app: {
deps: ["backbone"],
exports: "App"
}
}
});
Come vedi l'ultimo "shim" dichiarazione dovrebbe rendere in grado di accedere spina dorsale (e deps) quando carico l'app principale (-namespace).
In realtà questo non funziona:
require(["app"], function($, _, Backbone, App){
app.router = new Backbone.Router.extend({
// routing and route actions
});
});
Quello che mi fa chiedo è che nella "spina dorsale-boilderplate" -project, spina dorsale (e le sue dipendenze) sono disponibili in questo modo: https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
Non c'era nemmeno bisogno di definire questo nella funzione.
Quindi cosa sto sbagliando?
prova a rimuovere '$, _, Backbone' dalla funzione' require' dove estendi il router. Penso che gli shim funzionino in modo tale da esportare solo valori globali che non è necessario aggiungere a qualsiasi chiamata – jakee
Ehi, funziona perfettamente :) Posso persino eliminare la parola chiave "backbone" nell'array deps della funzione define anche se questo non funziona in ogni modulo ... Vuoi creare una risposta in modo da poter chiudere la domanda? –
Fatto, felice di poterti aiutare! – jakee