Обновление : Начиная с версии 1.3.0 Подчеркнута удаленная поддержка AMD (RequireJS) .
Вы можете использовать amdjs / Backbone 0.9.1 и вилка amdjs / Underscore 1.3.1 с поддержкой AMD от Джеймса Бёрка (сопровождающего RequireJS).
Дополнительная информация о поддержке AMD для Underscore и Backbone .
// main.js using RequireJS 1.0.7
require.config({
paths: {
'jquery': 'libs/jquery/1.7.1/jquery',
'underscore': 'libs/underscore/1.3.1-amdjs/underscore', // AMD support
'backbone': 'libs/backbone/0.9.1-amdjs/backbone', // AMD support
'templates': '../templates'
}
});
require([
'domReady', // optional, using RequireJS domReady plugin
'app'
], function(domReady, app){
domReady(function () {
app.initialize();
});
});
Модули правильно зарегистрированы и нет необходимости в плагине заказа:
// app.js
define([
'jquery',
'underscore',
'backbone'
], function($, _, Backbone){
return {
initialize: function(){
// you can use $, _ or Backbone here
}
};
});
Подчеркивание фактически необязательно, потому что Backbone теперь получает свои зависимости самостоятельно:
// app.js
define(['jquery', 'backbone'], function($, Backbone){
return {
initialize: function(){
// you can use $ and Backbone here with
// dependencies loaded i.e. Underscore
}
};
});
С некоторыми AMD сахар вы также можете написать это так:
define(function(require) {
var Backbone = require('backbone'),
$ = require('jquery');
return {
initialize: function(){
// you can use $ and Backbone here with
// dependencies loaded i.e. Underscore
}
};
});
Относительно ошибки оптимизатора: перепроверьте конфигурацию сборки.Я предполагаю, что ваша конфигурация пути отключена.Если у вас есть каталог , похожий на RequireJS Docs , вы можете использовать:
// app.build.js
({
appDir: "../",
baseUrl: "js",
dir: "../../ui-build",
paths: {
'jquery': 'libs/jquery/1.7.1/jquery',
'underscore': 'libs/underscore/1.3.1-amdjs/underscore',
'backbone': 'libs/backbone/0.9.1-amdjs/backbone',
'templates': '../templates'
},
modules: [
{
name: "main"
}
]
})