我第一次使用require.js,並且所有工作都很漂亮。但是,我開始希望進行構建。這個想法是用我所有的js和模板創建一個文件。但是,每次使用r.js時,它都只包含我主模塊的依賴關係。Require.js和r.js甚至包含子模塊的所有依賴關係
這裏是我的app.build.js:
({
appDir: "public/javascripts",
baseUrl: ".",
dir: "build",
paths: {
"hbs": "lib/hbs",
"jquery": "lib/jquery",
"Handlebars": "lib/Handlebars",
"Backbone": "lib/backbone",
"underscore": "lib/underscore",
"bootstrap": "lib/bootstrap.min.js"
},
modules: [{name: "main"}],
shim: {
"bootstrap": {
deps: ["jquery"],
exports: "$.fn.popover"
},
underscore: {
exports: '_'
},
'Handlebars': {
exports: 'Handlebars'
},
Backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
}
}})
main.js的開頭:
require.config({
paths: {
"hbs": "lib/hbs",
"Handlebars": "lib/Handlebars",
"Backbone": "lib/backbone",
"underscore": "lib/underscore",
"jquery": "lib/jquery",
"bootstrap": "lib/bootstrap.min.js"
},
hbs: {
disableI18n: true
},
shim: {
"bootstrap": {
deps: ["jquery"],
exports: "$.fn.popover"
},
underscore: {
exports: '_'
},
'Handlebars': {
exports: 'Handlebars'
},
Backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
}
}
});
require(['jquery', 'Backbone', 'videos'], function($, Backbone, Videos) { // Whatever });
在這種情況下,最終的文件在我的構建創造 'main.js' 只包含:jquery,下劃線,主幹和視頻。我怎樣才能確保它還包含模塊videos
的依賴關係,即模板'hbs!template/videos/show'。我怎樣才能確保bootstrap.min.js也被添加,即使它不是必需的? 最後,我應該刪除require.config,因爲它會定義不應該再有的路徑,因爲所有模塊都在最終文件中?
很遺憾r.js無法猜測子模塊的依賴關係。我已經通過將每個依賴項放在我的主模塊中解決了這個問題。 – charly 2013-05-18 20:15:20