我正在使用 javascript 模块模式,并且到目前为止:
var APP;
if(APP == undefined) {
APP = {};
}
APP = (function() {
var userId = -1;
var privateVar = '';
var _init = function($userId) {
userId = $userId;
};
var _publicMethod = function($id){
privateVar = id;
};
return {
init = function($userId) {
_init($userId);
},
publicMethod = function($id) {
_publicMethod($id);
}
};
})();
然后我有一个通用的 utils 模块:
APP.utils = (function(){
})();
然后每个页面我都计划有一个模块,所以我不会在这些 DOM 元素不存在事件的页面上无缘无故地连接事件(按钮点击等):
APP.homePage = (function(){
return {
};
})();
所以每个模块都会有一个 init() 方法,我将在页面上调用它来运行必须运行的东西(例如连接事件,设置变量,比如 userId 等):
$(document).ready(function() {
APP.init(<%= user.id %>);
APP.homePage.init('abc');
});
所以现在如果文件太大,我也可以将它们分成单独的文件。
如果一个模块需要调用另一个模块怎么办,我想唯一可行的方法是通过公共 api 做到这一点,对吧?例如,如果 homePage 需要 userId,我应该在 homePage#init 方法中传递它吗?
我的编码风格如何,任何不被认为是最佳实践的明显风格?
- 对此方法有何评论?总的来说好吗?