我有三个页面(这是单页界面)的应用程序。 该网页有相似但不完全相同的功能。
所以,我想有JavaScript的模块,提供了常用的功能。 然后,每个页面可以定制/覆盖的常用功能的部件。
我使用Backbone.js的,所以我做的是:
- 加载包含常见型号的文件,意见,类别等
- 该自主的负载应用程序特定的文件/改写步骤1的部件
- 调用instanciates所有必要的模型/视图/集合的init()函数
目前,我存储我的模块在一个类似的模块容器: https://stackoverflow.com/a/9426071每个模块都有由我的主要init()函数中执行一个可选的init()函数。
例:
我有一个名为results.js文件。 它定义了常见的型号/系列/搜索结果的视图。 在它的init()函数一切都实例化,但这个功能尚未叫做:
var resultView = new ResultView()
然后我包括myApp.js,并在视图的部分将被覆盖。
- 主要的init()函数调用results.js的init(),它instanciates新的视图。 一切正常美观,平整,干燥。
现在我想切换到require.js,而不是我自己的模块容器,并想知道如何组织我的代码。
我既可以在实例化的myApp.js而不是每个模块的init()函数的所有模型/视图等。 这意味着有大量的重复的代码。
或者,我可以坚持到每个模块有它的init()函数,调用这些的init()函数中myApp.js。 我不喜欢这一点,因为我会到我的模块明确地记下我的每三页的三倍:
require(['module1', 'module2', 'module3', ...],
function(module1, module2, module3, ...) {
var init = function() {
module1.init();
module2.init();
module3.init();
...
}
return {init: init};
}
);
对于10个模块加上一些库,这不是很干爽。 有没有什么办法来访问(通过循环),其require.js保存所有模块?
还是我失去了一些东西,我应该构建我的代码以不同的方式?
任何提示/想法是值得欢迎的,
迈克尔