一个应用程序中的多个JavaScript文件

时间:2013-03-13 14:21:20

标签: javascript

不确定如何问这个问题,但我只是在寻找一些见解/信息。

如果我在我的应用中包含多个JavaScript文件,页面/应用程序如何查看所有JS代码。所有文件中的所有JS都成为一个大的JS文件

如果一个JS文件有变量foo=true;而另一个JS文件有foo=false,那么foo的范围是多少?它所在的脚本是本地的还是在“全部”js代码中看到它?

感谢您的任何见解。

3 个答案:

答案 0 :(得分:2)

是的,在大多数情况下,就像只有一个文件一样,通过按照导入顺序连接所有文件而构建。

差异:

  • "use strict";(假设它存在)仅对每个文件有效
  • 浏览器获取10个小文件比使用大文件要慢得多,这就是为什么构建大型应用程序的js开发人员通常会连接(并经常缩小)所有生产文件的原因

答案 1 :(得分:0)

脚本共享的唯一内容是全局范围;单独的部分不会成为一个大文件。

例如,你不能这样做:

<script type="text/javascript">
function hello() {
</script>
<script type="text/javascript">
}
</script>

一个'use strict'中的<script>不会对所有这些应用严格模式。

答案 2 :(得分:0)

如果您在一个文件中定义,而不使用var

foo = true;

它将是一个全局变量,当它foo = false

时,您的第二个JS文件将可以访问它

如果在页面上明确定义了所有脚本,它们将共享相同的全局命名空间。要为变量创建本地范围,您必须将其包装在function中。

请参阅此问题中提供的说明:What is the scope of variables in JavaScript?

为了轻松处理多个JavaScript文件并保持全局范围最小化,同时允许不同的脚本共享信息,我建议您尝试RequireJS(http://requirejs.org/),它是一个JavaScript文件和模块加载器。它将处理您可能具有的任何文件依赖性,并且它将异步加载它们。它还使您可以轻松地在不同模块/文件之间传递变量,而无需将它们暴露给全局范围。

还有其他文件/模块加载器。请参阅:http://www.netmagazine.com/features/essential-javascript-top-five-script-loaders