Я пытаюсь оптимизировать проект магистрали с Grunt и grunt-contrib-requirejs
плагин. Проект имеет следующую структуру:Backbone + r.js: Магистраль не определена
- root/
|- public/
| |- components/
| |- js/
| | |- login/
| | | |- [dirs and files]
| | | |- main.js
| |- libs/
|- gruntfile.js
В components
и libs
каталог У меня есть библиотеки, установленные с Бауэром. gruntfile.js
имеет следующие варианты requirejs:
requirejs: {
compile: {
options: {
name: "main",
baseUrl: "public/js/login/",
mainConfigFile: "public/js/login/main.js",
out: "public/js/app.build.js",
findNestedDependencies: true,
}
}
},
В bower.json
У меня есть следующие зависимости:
"dependencies": {
"jquery": "2.0.3",
"jquery.cookie": "1.4.1",
"underscore": "1.6.0",
"backbone": "~1.1.2",
"backbone-validation": "~0.9.1",
"backbone-mediator": "~1.0.0",
"backbone.subviews": "~0.7.3",
"font-awesome": "~4.1.0",
"bootstrap": "~3.2.0",
"requirejs": "~2.1.14",
"require-handlebars-plugin": "~0.8.1",
"pace": "~0.5.5",
"modernizr": "~2.8.3",
"fastclick": "~1.0.2",
"moment": "~2.7.0",
"sweetalert": "~0.2.1"
}
наконец, main.js
имеет конфигурацию requirejs и основное приложение:
require.config({
waitSeconds: 0,
hbs: {
templateExtension: 'html',
disableI18n: true,
disableHelpers: true
},
shim: {
'jquery': {
exports: '$'
},
'jqueryCookie': {
deps: ['jquery']
},
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'backboneREST' : {
deps: ['backbone']
},
'backboneValidation' : {
deps: ['backbone']
},
'handlebars': {
deps: ['handlebars'],
exports: 'Handlebars'
}
},
paths: {
jquery: '../../components/jquery/jquery.min',
jqueryCookie: '../../components/jquery.cookie/jquery.cookie',
underscore: '../../components/underscore/underscore',
backbone: '../../components/backbone/backbone',
backboneValidation: '../../components/backbone-validation/src/backbone-validation',
backboneSubviews: '../../components/backbone.subviews/backbone.subviews',
hbs: '../../components/require-handlebars-plugin/hbs',
moment : '../../components/moment/moment',
modernizr: '../../components/modernizr/modernizr',
sweetAlert: '../../components/sweetalert/lib/sweet-alert',
client: '../../libs/client',
backboneREST: '../../libs/backbone-rest',
viewManager: '../../libs/view-manager',
errorManager: '../../libs/error-manager',
}
});
Запуск задачи черновую дает мне сообщение Done, without errors.
, но когда я попытался загрузить результирующий скрипт t в браузере, это дает мне ошибку Backbone is not defined
. Исходные карты говорят, что он падает в Backbone.Validation
. Есть идеи, как это исправить?
Не могли бы вы уточнить? – Robert
Да, это были две ошибки - я использовал стандартную версию. Другая проблема заключалась в том, что я использовал функцию 'define' вместо' requirejs' в качестве точки входа моего приложения. –