我将在html5中使用一些繁重的javascripting构建一个相当复杂的应用程序。 在这里我需要制作一些可以传递的物体。但是因为没有@import foobar.js。
然后我假设如果我的html页面加载脚本,那么所有脚本都可以互相访问?
我读到(here) ajax能够以某种方式从另一个.js文件中加载.js文件。但我不认为这是我需要的?
如果需要,可以进一步了解细节,提前谢谢。
答案 0 :(得分:2)
在我们的项目中,我们执行以下操作:假设您要调用项目Foo,并在其中安装一个名为Bar的模块,
然后我们要做的是声明一个名为Foo.js的文件,该文件只定义了与Foo命名空间的等价物:
Foo = (function(){
return {
};
})();
然后我们创建一个名为Foo.Bar.js的文件,其中包含Bar模块的代码:
Foo.Bar = (function(){
// var declarations here that should be invisible outside Foo.Bar
var p, q;
return {
fun1 : function(a, b){
// Code for fun1 here
},
fun2 : function(c) {
// Code for fun2 here
}
} // return
})();
请注意它是一个立即执行的函数,并返回一个被赋值给Foo.Bar
的对象。 p
和q
可以使用fun1
和fun2
这样的局部变量,因为它们位于闭包中,但它们在Foo.Bar
之外是不可见的/ p>
Foo.Bar中的函数可以是对象的构造函数等等。
现在,在您的HTML中,您可以简单地包含两个文件:
<script type="text/javascript" src="Foo.js"></script>
<script type="text/javascript" src="Foo.Bar.js"></script>
结果是您可以在主HTML文件的JavaScript中调用Foo.Bar
的函数而不会出现任何问题。
答案 1 :(得分:1)
您应该查看模块模式: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth/
这描述了在javascript中创建模块化代码的替代方法,如何保护代码并在它们之间共享API和数据。
您还应该考虑使用和AMD。 Require.js非常受欢迎,但我倾向于head.js。请记住,这些对于如何在文件中构建代码提出了一些要求,而且个人认为,与页面底部包含的连接和缩小文件相比,我认为这不值得。
答案 2 :(得分:1)
然后我假设如果我的html页面加载脚本,那么所有脚本都可以互相访问?
是