在多个文件中拥有多个类的Javascript快速方法

Javascript quick way to have many classes in multiple files

本文关键字:Javascript 方法 拥有 文件      更新时间:2023-09-26

我正在考虑如何使用许多Javascript类使事情变得简单。我想使用单独的文件,否则我会得到超过1000行的文件。我现在正在拆分它。

在一个文件的早期,它是一个函数jQuery文档,内部是定义的类。因此,全球空间没有受到污染。

当我拆分成文件时,我只想使用一个包含这些类的对象,比如:

globalobject = {
};
globalobject.class1 = {
    // code
}
globalobject.class2 = {
    // code
}

但我讨厌不得不写globalobject.classname。所有东西放在一个文件里看起来都更好。

另一种选择是使用前缀,如pre_class1、pre_class2,但这也不理想。

也许有某种方法可以帮助requirejs,但我快速查看了一下,但没有发现如何快速使用它,我以前从未使用过,以前不使用时看起来也不那么快。

有什么建议吗?顺便说一句,我也在使用提线木偶的主干,但我对提线木偶很陌生。我看到它也有一些模块,但对我来说仍然不是一个快速的方法

或者,在我还不了解提线木偶模块或requirejs库之前,我甚至不应该尝试拆分长文件吗?

这个怎么样:

globalobject = (function(globalobject) {
  // common code only accessible from class1 and inside this closure
  var class1 = {
      //code
  };
  globalobject.class1 = class1;
  return globalobject;
}) ( globalobject || {} );

这种方式将使每个文件中有一个"类"成为可能,并且在向全局对象添加几个"类"时,无论导入顺序如何都可以工作。

使用下划线的extend方法将函数添加到基类:

// file1
var object = {
  foo : function () {...}
}
_.extend(object, objectFromFile2);
// file2
var objectFromFile2 = {
  bar : function () {...}
}

您现在拥有object.fooobject.bar

如果您的实际问题是"如何将代码从文件1导入文件2",我建议您查看RequireJS

您不需要一直重复使用globalobject表示法。

你可以做:

// define the class in local scope
function MyClass() {};
MyClass.prototype.myFunction = function () {};
MyClass.prototype.myOtherFunction = function () {};
// then export it
globalobject.MyClass = MyClass;