我正在考虑如何使用许多Javascript类简化操作。我想使用单独的文件,否则我会获得超过1000行的文件。我现在正在拆分它。
在一个文件的早期,它是一个函数jQuery文档就绪,内部是定义的类。因此全球空间不会受到污染。
当我分割成文件时,我只考虑使用一个包含这些类的对象,如下所示:
globalobject = {
};
globalobject.class1 = {
// code
}
globalobject.class2 = {
// code
}
但我不想写globalobject.classname
。一个文件中的一切看起来都更好。
另一个选择是使用像pre_class1,pre_class2这样的前缀,但它也不是理想的。
也许在某种程度上可以帮助requirejs,但是我快速看了一下,但是没有找到我怎么能快速使用它,我之前从未使用它,并且在以前没有使用它时看起来不那么快。
有什么建议吗?顺便说一下,我也在使用牵线木偶,但我对牵线木偶很新。我已经看到它也有一些模块,但对我来说仍然不是一个快速的方法。
或者,在我不了解木偶模块或requirejs库之前,我是否应该尝试拆分长文件?
答案 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.foo
和object.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;