具有DOM元素的模块化模式
Modular pattern with DOM elements
我正在尝试使用模块模式构建我的Javascript。
var appTest = {
settings: {
date : $(".date")
},
init: function() {
s = this.settings;
this.setDate();
},
setDate: function() {
var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
var dt = new Date();
s.date.html(dt.getDate()+" "+monthNames[dt.getMonth()]+" "+dt.getFullYear());
//$(".date").html(dt.getDate()+" "+monthNames[dt.getMonth()]+" "+dt.getFullYear());
}
};
$(function(){
appTest.init();
});
现在,带有class.date的dom元素没有用新日期更新。但是,如果我取消注释被注释的行,它就可以正常工作。
我仍在努力寻找绕过Javascript的方法。
模块中的一些问题:
- 它使用了一个全局变量
s
,但没有声明它,并且存在名称冲突的风险。你应该嵌入它 - 您公开了设置
- 在DOM准备好之前使用它
- 对不具有此函数的对象调用
setDate
你可以这样解决这些问题:
var appTest = (function(){
var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
var settings = {}; // this is private (not visible from outside the module)
var module = {};
module.init = function() {
settings.date = $(".date");
module.setDate();
};
module.setDate = function() {
var dt = new Date();
settings.date.html(dt.getDate()+" "+monthNames[dt.getMonth()]+" "+dt.getFullYear());
};
return module;
})();
$(function(){
appTest.init();
});
我建议使用原型。你可以制作一个类似于的单例
var App = (function AppModule() {
function App() {
// All your options here
this.$date = $('.date');
this.init(); // initialize singleton
}
App.prototype = {
init: function() {
this.setDate();
},
setDate: function() {
var months = [...]
, monthsdate = new Date;
this.$date.html(...);
}
};
return new App; // a singleton
}());
相关文章:
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 使用Ampersand.js路由模块化应用程序
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 用于多个选项卡和模块化的knockoutjs设计模式
- 将变量传递给 Javascript 模块化模式方法
- 模块化模式中的私有实例变量
- 模块模式或模块化
- 这是一个模块化的js设计模式吗?以及如何在此模型中的不同模块中重用值
- 模块化 JS 组件中的委派模式
- 具有DOM元素的模块化模式
- 模块化模式下的Javascript松散预测
- 使用模块化模式时,Javascript函数不会被调用
- 模块化模式方法的问题
- 创建一个具有模块化模式的构造函数
- 对象文字或模块化Javascript设计模式
- 向现有模块化模式对象添加新方法
- 如何在模块化设计模式中嵌套函数
- Javascript模块化设计模式——哪个更好:自调用函数,还是对象文字方法
- 模块化模式与原型-Nodejs