1

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

早些时候在一个文件中,它是一个功能 jQuery 文档,里面已经定义了类。所以全球空间没有被污染。

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

globalobject = {

};

globalobject.class1 = {
    // code
}

globalobject.class2 = {
    // code
}

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

另一种选择是使用 pre_class1、pre_class2 之类的前缀,但它也不是理想的选择。

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

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

或者在我不了解 Marionette 模块或 requirejs 库之前,我什至不应该尝试拆分长文件?

4

3 回答 3

2

这个怎么样:

globalobject = (function(globalobject) {

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

  var class1 = {
      //code
  };

  globalobject.class1 = class1;

  return globalobject;

}) ( globalobject || {} );

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

于 2013-08-30T09:52:04.133 回答
1

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

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

_.extend(object, objectFromFile2);

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

你现在有object.foo并且object.bar

如果您的实际问题是“如何将代码从 file1 获取到 file2”,我建议您查看RequireJS

于 2013-08-30T10:00:43.737 回答
0

您无需继续重复使用该globalobject符号。

你可以做:

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

// then export it
globalobject.MyClass = MyClass;
于 2013-08-30T09:44:53.093 回答