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

时间:2013-08-30 09:40:53

标签: javascript backbone.js

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

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

当我分割成文件时,我只考虑使用一个包含这些类的对象,如下所示:

globalobject = {

};

globalobject.class1 = {
    // code
}

globalobject.class2 = {
    // code
}

但我不想写globalobject.classname。一个文件中的一切看起来都更好。

另一个选择是使用像pre_class1,pre_class2这样的前缀,但它也不是理想的。

也许在某种程度上可以帮助requirejs,但是我快速看了一下,但是没有找到我怎么能快速使用它,我之前从未使用它,并且在以前没有使用它时看起来不那么快。

有什么建议吗?顺便说一下,我也在使用牵线木偶,但我对牵线木偶很新。我已经看到它也有一些模块,但对我来说仍然不是一个快速的方法。

或者,在我不了解木偶模块或requirejs库之前,我是否应该尝试拆分长文件?

3 个答案:

答案 0 :(得分:2)

这个怎么样:

globalobject = (function(globalobject) {

  // common code only accessible from class1 and inside this closure

  var class1 = {
      //code
  };

  globalobject.class1 = class1;

  return globalobject;

}) ( globalobject || {} );

通过这种方式,每个文件中都可以有一个“类”,并且在向全局对象添加多个“类”时,无论导入顺序如何都可以正常工作。

答案 1 :(得分:1)

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

// file1
var object = {
  foo : function () {...}
}

_.extend(object, objectFromFile2);

// file2
var objectFromFile2 = {
  bar : function () {...}
}

您现在拥有object.fooobject.bar

如果您的实际问题是“如何将文件1中的代码转换为文件2”,我建议您查看RequireJS

答案 2 :(得分:0)

您无需继续重复使用globalobject表示法。

你可以这样做:

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

// then export it
globalobject.MyClass = MyClass;