如何打包javascript代码供他人使用

如何打包javascript代码供他人使用,javascript,package,Javascript,Package,封装某些javascript的最佳方式是什么,这样其他人就可以将其添加到他们的项目中,而不必担心会破坏变量等。?我查看了jQuery源代码以了解它是如何完成的;似乎他们只是将所有内容都附加到末尾的窗口对象。因此,做以下事情的首选方式是: (function(w) { // constructor var MyCode = function() { // my code } w.MyCode = MyCode; }(window)); 我如何将代码分

封装某些javascript的最佳方式是什么,这样其他人就可以将其添加到他们的项目中,而不必担心会破坏变量等。?我查看了jQuery源代码以了解它是如何完成的;似乎他们只是将所有内容都附加到末尾的
窗口
对象。因此,做以下事情的首选方式是:

(function(w) {
    // constructor
    var MyCode = function() {
       // my code
    }
    w.MyCode = MyCode;
}(window));

<>我如何将代码分段,并允许它安全地插入到其他人的代码中?

如果您希望库与jQuery一起工作,可以考虑编写jQuery插件。 这是官方指南

  • 如果变量是在函数内部声明的,不要担心:它们已经封装好了
  • 如果您使用一些全局变量,并且确实需要它(不知道为什么需要它们)-创建一个具有不可重复名称的对象,并将所有变量放入其中
  • 编辑

    好的,一些新的要求

    让用户重用变量,请创建一个类/对象:

    function myClass() {
      this.myVariableToShare = 1;
    
      this.myMethod = function() {
        this.myVariableToShare ++;
      }
    }
    
    var myObjectOfMyClass = new myClass();
    
    然后你可以对用户说:“嘿,使用这个对象!”。他可以这样做:

    alert(myObjectOfMyClass.myVariableToShare);
    

    这些库通常就是这样实现的

    您也可以使用另一种方法:只需在代码开头创建一个全局变量列表:

    var myVariable = 1;
    
    然后它在每个函数中都是可见的(当然,如果它里面没有这样的变量)。但我更喜欢这个对象,因为你把所有东西都放在一个包里,用户不怕用他想要的变量名


    我希望这能回答您的问题。

    创建名称空间并使用模块模式这可能值得一看。这个库本身就是为了解决js中的模块加载问题而设计的,但是文档对如何设计模块给出了一些很好的见解。我把所有的东西都封装在一个函数中,这很好,我更想知道如何让用户访问代码,因为它是封装的。
    myObjectOfMyClass.myMethod();
    alert(myObjectOfMyClass.myVariableToShare);
    
    var myVariable = 1;