-1

我将在 html5 中使用一些繁重的 javascript 构建一个相当复杂的应用程序。在此我需要制作一些可以传递的对象。但是由于没有像@import foobar.js。

然后我假设如果我的html页面加载了脚本,那么所有的脚本都可以互相访问吗?

我读到(在这里) ajax 能够以某种方式从另一个 .js 文件中加载一个 .js 文件。但我不认为这是我需要的?

如有需要可以详细说明,先谢谢了。

4

3 回答 3

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. 任何局部变量,例如pq都可用于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 中调用 ' 函数而不会出现任何问题。

于 2012-07-05T06:21:19.110 回答
1

您应该查看模块模式: http: //www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth/

这描述了在 javascript 中创建模块化代码的替代方法,如何保护您的代码并在它们之间共享 API 和数据。

您还应该考虑使用和 AMD。Require.js非常流行,但我更喜欢head.js。请记住,这些对如何在文件中构建代码提出了一些要求,与页面底部包含的串联和缩小文件相比,我个人认为这不值得。

于 2012-07-05T06:11:37.293 回答
1

然后我假设如果我的html页面加载了脚本,那么所有的脚本都可以互相访问吗?

是的。

于 2012-07-05T06:12:11.973 回答