我有一个 r.js build 的问题在我的应用程序加载器中。
Unbuild 模式运行完美,但在使用 r.js 构建后,app_loader.js#L7 中的变量bb 和 hb 未定义
。到目前为止,我通过使用全局变量 Handlebars 和 Backbone 来解决这个问题,但是这有什么问题 shim ?
最佳答案
我已经删除了您的全局引用并在本地进行了测试。它有效。
build.js - 更新为使用 app_main 作为配置文件
({
optimizeCss: "standard",
removeCombined: true,
preserveLicenseComments: false,
appDir: "../www-root-dev",
dir: "../www-root",
keepBuildDir: false,
optimize: "uglify2",
mainConfigFile: "../www-root-dev/assets/js/app_main.js",
modules: [{
name: "app_main"
}]
})
app.js
define(["app_loader"], function(loader){
var $ = loader.$, Backbone = loader.Backbone;
...
});
app_loader.js
define(["jquery","underscore","backbone","handlebars","app_routes"],
function($, _, Backbone, Handlebars, router){
return {
$: $.noConflict(),
_: _,
Backbone: Backbone,
router: router,
Handlebars: Handlebars
};
});
app_main.js - 已更新以简化路径
require.config({
baseUrl: './assets/js',
paths: {
mvc: '../../mvc'
},
shim: {
underscore: {
exports: '_' //the exported symbol
},
backbone : {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
handlebars: {
deps: ['jquery'],
exports: 'Handlebars'
}
}
});
require(['app'], function(App){
App.initialize();
});
app_routes.js
define(["jquery", "underscore", "backbone", "mvc/demo.view.js", "mvc/demo.model.js"], function($, _, Backbone, DemoView, DemoModel) { ... });
demo.model.js
define(["backbone"], function(Backbone) { ... });
demo.view.js
define(["jquery","backbone","text!mvc/demo.html"], function($, Backbone,demoTemplate) { ... });
关于backbone.js - 在 r.js 构建 Backbone 和 Handlebars 之后,App Loader 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132440/