Backbone.js 和 Browserify - 多次需要相同的模块
Backbone.js and Browserify - requiring same module multiple times
我目前正在开发一个 Backbone JS 应用程序,我第一次开始使用 Browserify。但当然我 运行 遇到了一些问题。这是其中之一。
我有以下模块,/js/views/Home.js
。
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone');
Backbone.$ = $;
module.exports = Backbone.View.extend({
el: '#view',
template: _.template($('#home-template').html()),
initialize: function () {
this.render();
},
render: function () {
this.$el.html(this.template());
},
events: {
'click button': 'searchSubmit'
},
searchSubmit: function () {
// this should be where the magic happens
}
});
当调用searchSubmit
方法时,我想做类似router.navigate('search')
的事情。
我的问题:如果我有一个路由器模块,Router.js
,那么每次我需要一些路由器功能时,我是否需要在我的所有模块中创建它的一个新实例?
var Router = require('./Router.js'),
router = new Router();
当 Browserify 将它们捆绑在一起时,在每个视图中创建一个新路由器似乎不合逻辑。
是我对Browserify的理解不正确,有没有更巧妙的解决办法?谢谢!
当你打电话时
var Router = require('./Router.js');
Browserify 实际上是在跟踪 Router
的单个实例,因此它并不是每次都是新实例。将其视为参考或使用声明。有关详细信息,请参阅 this SO post。
但是 router = new Router();
你 运行 遇到了你的 router
被实例化的问题。我建议在 Router.js
中导出 router
.
的一个实例
我目前正在开发一个 Backbone JS 应用程序,我第一次开始使用 Browserify。但当然我 运行 遇到了一些问题。这是其中之一。
我有以下模块,/js/views/Home.js
。
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone');
Backbone.$ = $;
module.exports = Backbone.View.extend({
el: '#view',
template: _.template($('#home-template').html()),
initialize: function () {
this.render();
},
render: function () {
this.$el.html(this.template());
},
events: {
'click button': 'searchSubmit'
},
searchSubmit: function () {
// this should be where the magic happens
}
});
当调用searchSubmit
方法时,我想做类似router.navigate('search')
的事情。
我的问题:如果我有一个路由器模块,Router.js
,那么每次我需要一些路由器功能时,我是否需要在我的所有模块中创建它的一个新实例?
var Router = require('./Router.js'),
router = new Router();
当 Browserify 将它们捆绑在一起时,在每个视图中创建一个新路由器似乎不合逻辑。
是我对Browserify的理解不正确,有没有更巧妙的解决办法?谢谢!
当你打电话时
var Router = require('./Router.js');
Browserify 实际上是在跟踪 Router
的单个实例,因此它并不是每次都是新实例。将其视为参考或使用声明。有关详细信息,请参阅 this SO post。
但是 router = new Router();
你 运行 遇到了你的 router
被实例化的问题。我建议在 Router.js
中导出 router
.