我将在 html5 中使用一些繁重的 javascript 构建一个相当复杂的应用程序。在此我需要制作一些可以传递的对象。但是由于没有像@import foobar.js。
然后我假设如果我的html页面加载了脚本,那么所有的脚本都可以互相访问吗?
我读到(在这里) ajax 能够以某种方式从另一个 .js 文件中加载一个 .js 文件。但我不认为这是我需要的?
如有需要可以详细说明,先谢谢了。
我将在 html5 中使用一些繁重的 javascript 构建一个相当复杂的应用程序。在此我需要制作一些可以传递的对象。但是由于没有像@import foobar.js。
然后我假设如果我的html页面加载了脚本,那么所有的脚本都可以互相访问吗?
我读到(在这里) ajax 能够以某种方式从另一个 .js 文件中加载一个 .js 文件。但我不认为这是我需要的?
如有需要可以详细说明,先谢谢了。
在我们的项目中,我们执行以下操作:假设您要调用您的项目 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
Foo.Bar 中的函数可以是对象等的构造函数。
现在在您的 HTML 中,您可以简单地包含两个文件,如下所示:
<script type="text/javascript" src="Foo.js"></script>
<script type="text/javascript" src="Foo.Bar.js"></script>
结果将是您可以Foo.Bar
在主 HTML 文件的 JavaScript 中调用 ' 函数而不会出现任何问题。
您应该查看模块模式: http: //www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth/
这描述了在 javascript 中创建模块化代码的替代方法,如何保护您的代码并在它们之间共享 API 和数据。
您还应该考虑使用和 AMD。Require.js非常流行,但我更喜欢head.js。请记住,这些对如何在文件中构建代码提出了一些要求,与页面底部包含的串联和缩小文件相比,我个人认为这不值得。
然后我假设如果我的html页面加载了脚本,那么所有的脚本都可以互相访问吗?
是的。