我开始在Javascript中使用OO概念。
所以,我有几个“class”js文件,每个节点定义一个“class”:
// FILE myproject.classlib.myClass1
// "Class"
function myClass1(param1, param2){
// Properties
this.prop1 = param1;
this.prop2 = param2;
}
/// "Methods"
myClass1.prototype.doSomething = function(){
alert('myClass1 Hello world. prop1=' = this.prop1);
alert('myClass1 Hello world. prop2=' = this.prop2);
}
在我的HTML页面末尾使用类时,我必须添加几个js文件,例如:
<script type="text/javascript" charset="UTF-8" src="/Content/script/mzui.myproject.classlib.myClass1.js")" />
<script type="text/javascript" charset="UTF-8" src="/Content/script/mzui.myproject.classlib.myClass2.js")" />
<script type="text/javascript" charset="UTF-8" src="/Content/script/mzui.myproject.classlib.myClass3.js")" />
.
.
.
<script type="text/javascript" charset="UTF-8" src="/Content/script/mzui.myproject.classlib.myClassN.js")" />
最后,所有文件将使用Google的Closure Compiler成为单个myproject.jar,但我需要保持我的开发环境结构化,避免在运行时使用双重定义。
那么,应该做些什么:
将类组织到“名称空间”中。我已经搜索过,我可以构建一个项目对象,但是如何在所有文件中引用相同的对象(添加类)?
在我的所有屏幕中可以做些什么来避免过多的标签?有没有办法在一个可以加载所有其他javascript的javascript中“捆绑”它们?
答案 0 :(得分:0)
如何在所有文件中引用同一个对象?
如果您将其设为全局,或者在全局范围内使用var
声明它,或者将其设置为window
的属性,那么您可以从任何地方访问它。
有没有办法在一个可以加载所有其他javascript的javascript中“捆绑”它们?
是的,您可以创建script
元素并将它们附加到DOM:
var script = document.createElement('script');
script.type = "text/javascript";
for(var i=1; i<=n; ++i) {
var current = script.cloneNode(false);
current.src = "/Content/script/mzui.myproject.classlib.myClass"+i+".js";
document.body.appendChild(current);
}
答案 1 :(得分:0)
由于您已经计划使用Closure Compiler,我对如何进行文件/依赖关系管理有一些非常具体的建议。
如果您查看了一些以Google Closure风格编写的代码,您将会看到他们如何定义命名空间并使用goog.provide()
和goog.require()
来声明将在定义它的文件以及代码库其他部分需要的文件。
我强烈建议您通过plovr使用Closure Compiler和Closure Library。 使用plovr,您可以定义包含一个文件或多个文件的配置。可以通过更改单个设置来调整所有在多个文件中加载代码的合理方法(自动生成多个脚本标记/将所有文件连接成1个脚本/连接和缩小/编译优化)。
一旦您启动并运行plovr,正确使用goog.require()
和goog.provide()
应该可以帮助您在可管理大小的文件中编写代码并使用和连接结果。