是否有可能通过保留其结构的几个较小的文件来分割巨大的javascript文件?

时间:2012-09-18 19:03:14

标签: javascript

我有一个很大的javascript类,有一堆存储在单个js文件中的方法。这种方法可以在逻辑上分类,如常用方法,过滤数据的方法,导航方法等。现在我希望这个类被单独的文件拆分,每个文件都包含自己的特定类别方法,并将所有属性和常用方法保留在当前文件中。简而言之,我需要使用c#partial关键字。

我想避免使用prototype,因为这意味着我必须为class.prototype.functionname = function () { ... }这样看起来不太好的每个函数键入类名。

更新:这是我班级的样子

function MyClass() {
    var self = this;
    self.common = function() {...}
    self.filterData = function() {...}
    self.navigate = function() {...}
}

我不知道如何使用原型或扩展程序正确处理self

1 个答案:

答案 0 :(得分:2)

如果你的班级没有使用原型,你几乎没有机会 - 这是一个很大的功能。但是,无论如何都不应该存在这样的大功能,你确定你需要它成为一个类(有多个实例)吗?然后你应该尽可能地将函数移动到原型。如果没有,单身对你来说会更有意义,这实际上只不过是一个对象文字。您还可以查看[revealing] module pattern,这是您需要的(或其中一种) - (子)模块通常可以轻松地跨不同文件传播,可能使用依赖关系跟踪加载器。

如果是,您可以轻松将其拆分为单个部分。这并不意味着您需要重复class.prototype.… = …,您可以使用辅助函数,例如extend

MyFavLibrary.extend(class.prototype, {
    functionname: function functionname() {…},
    …
});

或简单的IEFE封闭:

(function(proto) {
    // even some place for static, private helper functions
    proto.functionname = functionname() {…};
    …
})(class.prototype);