我有大约600行的JavaScript代码,执行ajax调用、DOM操作、测试处理等功能。
我希望将它制作成一个可以供他人使用的库。
如何做到这一点呢?
我最初的想法是将整个库封装在模块模式中。之前有人建议我这样做来帮助解决 www.jshint.com 的问题。
但我认为这对于一般情况也是个好主意。
- 我应该封装整个库吗?
- 我应该使用模块模式吗?
我有大约600行的JavaScript代码,执行ajax调用、DOM操作、测试处理等功能。
我希望将它制作成一个可以供他人使用的库。
如何做到这一点呢?
我最初的想法是将整个库封装在模块模式中。之前有人建议我这样做来帮助解决 www.jshint.com 的问题。
但我认为这对于一般情况也是个好主意。
信息隐藏是一种古老而广为人知的方法,可以使代码更安全、更模块化。它是许多令人惊叹的东西(如抽象数据类型和面向对象编程)背后的基本原则之一。
"var MyModule = (function(){
//variables in the wrapper function are local and
// can't be seen elsewhere
var my_var;
function my_private_implementation_function(){ ... }
function my_api_function(){
}
//return public functions
return {
my_api_function: my_api_function
};
}()); //immediatelly run the module code
//and set MyModule to the return value
//Now we can use things exported from the module
MyModule.my_api_function();
//but we can't access the prvate stuff
MyModule.my_var; //can't do this
我认为封装代码的方式,如何将其暴露给DOM,与之交互或任何其他事情,完全取决于您想要使用它的方式以及您使用它的上下文。 编码模式都有自己独特的目的,因此选择一个模式是因为它为您提供了什么,例如编码易用性、性能或变量暴露。 所以如果你问我,不要使用模式,因为你应该使用模式,而是因为它最适合你想要做的事情。
除此之外,我建议封装(如果您正在谈论将代码包装在闭包中)以避免混淆全局对象,从而避免变量冲突,使您的代码更可靠,因为存在更少的错误风险。
希望这可以帮助PM5544...
var Module = (function(){ ... 所有的代码 ... 返回包含公共函数的对象; }());
- hugomg