使用什么JavaScript设计模式/常用做法来组织具有页面特定调用的多个函数
我有一个js文件,如下所示:使用什么JavaScript设计模式/常用做法来组织具有页面特定调用的多个函数,javascript,jquery,object,design-patterns,optimization,Javascript,Jquery,Object,Design Patterns,Optimization,我有一个js文件,如下所示: $(document).ready() { // Mostly DOM manipulation operations functionOne(); functionTwo(); functionThree(); ... } (function( window, document, $, undefined) { var MyNamespace = {}; // Cache these to local s
$(document).ready() {
// Mostly DOM manipulation operations
functionOne();
functionTwo();
functionThree();
...
}
(function( window, document, $, undefined) {
var MyNamespace = {};
// Cache these to local scope
MyNamespace.$window = $(window);
MyNamespace.$document = $(document);
// Functions
MyNamespace.functionOne = function() {
...
};
MyNamespace.functionTwo = function() {
...
};
})( window, window.document, window.jQuery );
我想要实现的是将所有函数封装和组织在一个对象中,并创建逻辑,以便它们只在特定页面上被调用。我开始写这样的东西:
$(document).ready() {
// Mostly DOM manipulation operations
functionOne();
functionTwo();
functionThree();
...
}
(function( window, document, $, undefined) {
var MyNamespace = {};
// Cache these to local scope
MyNamespace.$window = $(window);
MyNamespace.$document = $(document);
// Functions
MyNamespace.functionOne = function() {
...
};
MyNamespace.functionTwo = function() {
...
};
})( window, window.document, window.jQuery );
我想知道我是否朝着正确的方向前进,是否有更好的方法来实现我还没有开始实现的页面特定逻辑(我已经有了一个页面标识符)。我已经看过了,唯一与我想要实现的类似的是命令模式,但我仍然不确定它是否是正确的选择。您正在寻找的是一种普通OOP意义上的类。我个人使用以下模式:
var OPTIONS = {
selectorA: '.js-xxx'
};
var MyClass = function(el) {
this.el = el;
this._init() // private function called
};
MyClass.prototype._init = function () {
// Do some stuff
};
MyClass.prototype.publicFunction = function() {
// Do exposable stuff here
}
window.instance = new MyClass(document.querySelect('#myElement'));
为了加载这些模块,您应该需要requireJS或其他AMD加载程序。我认为AMD是共享脚本的最佳选择。