【发布时间】:2016-06-09 20:34:29
【问题描述】:
app.js
var MedicineManager = new Marionette.Application();
MedicineManager.addRegions({
mainRegion: "#main-region"
});
MedicineManager.navigate = function (route, options) {
options || (options = {});
Backbone.history.navigate(route, options);
};
MedicineManager.getCurrentRoute = function () {
return Backbone.history.fragment;
};
MedicineManager.on("start", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
$(function () {
MedicineManager.start();
})
module.exports=MedicineManager;
我正在尝试将我的应用从 Marionette 模块模式转移到 Browserify。
我在多个文件中调用 require('app'),这会导致 app.js 中的代码在每次调用 require('app') 时都会执行。
因此,我收到Backbone.history has already been started 的错误。
这个问题的解决方法是代码在初始化时只被调用一次。
我该如何解决?
【问题讨论】:
-
我真的觉得在使用模块模式时我根本不需要 Application 对象。只需摆脱它,拥有一个启动历史记录并设置路由器的
app.js文件。有了 Regions、Initializers 和 Application channel deprecated 以及即将发布的 v3.x 版本,我个人认为,当您拥有模块系统时,它确实不会提供太多有用的东西。 -
一定会试试的
-
对资源的任何建议可以让我了解您所说的内容,我们将不胜感激
-
我可以尝试用一些脚手架为我设置我的最后一个木偶项目的方式写一个答案,但我不能做出任何承诺,因为我现在有点忙(这是为什么我评论而不是回答)。接受的答案中的建议没有任何问题(如果您想要多态,您甚至可以检查您是否在服务器上并使用
global而不是window)。 -
如果可能的话,你能提供一个项目的链接吗
标签: javascript backbone.js marionette browserify commonjs