我应该封装我的javascript库吗?

Should I encapsulate my javascript library?

本文关键字:库吗 javascript 我的 封装 我应该      更新时间:2023-09-26

我有大约600行javascript来执行ajax调用、dom操作、测试处理和其他事情。

我想让它成为一个其他人可以使用的库。

做这件事的步骤是什么?

我的第一个想法是将整个库封装在模块模式中。有人建议这样做,以帮助解决www.jshint.com问题。

但我认为总的来说这可能是个好主意。

我应该封装整个库吗?

  • 应该使用模块模式吗?

信息隐藏是一种使代码更安全、更模块化的老方法。它是许多很棒的东西背后的基本原则之一,比如抽象数据类型和面向对象编程


(是的,局部变量和模块模式是在Javascript中隐藏代码的唯一方法)

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,如何与之交互或任何这些事情完全取决于您想要使用它的方式以及您将使用它的上下文。编码模式都有自己独特的用途,所以选择一种模式要看它能为你提供什么,比如在编码的便利性、性能或可变暴露方面。所以,如果你问我,不要因为你应该使用模式而使用模式,而是因为它能做你想让它做得最好的事情。

除此之外,我建议封装(如果你正在谈论在闭包中包装你的代码)不要使全局对象混乱,从而避免变量冲突,使你的代码更可靠,因为有更少的bug风险。