为什么javascript没有更好的方法来包含文件?

时间:2011-01-24 18:24:36

标签: javascript html5

我已经看到了一些方法可以使javascript文件包含其他javascript文件,但它们看起来都非常hacky - 主要是它们涉及将javascript文件添加到当前文档的末尾然后以某种方式加载它

为什么javascript只是包含一个简单的“加载此文件并在其中执行脚本”include指令?这不是一个新概念。我知道每个人都对使用javascript等在HTML5中做所有事情感到很兴奋,但是如果你不得不破解这样的基本功能,那会不会很难?

我无法看到它会如何成为安全问题,因为网页可以包含尽可能多的javascript文件,并且无论如何它们都会被执行。

3 个答案:

答案 0 :(得分:3)

当前包含系统的主要问题(即添加其他脚本标记)涉及延迟。由于脚本标记可以在包含时插入代码,因此只要遇到脚本标记,进一步解析就必须或多或少地停止,直到JS下载并执行(尽管浏览器可以继续并行获取资源) )。如果JS决定运行包含,那么你刚刚添加了更多延迟 - 现在你甚至无法并行获取脚本。

基本上,它正试图解决一个不存在的问题(因为JS已经可以在其他脚本标签上进行包含),同时使延迟问题变得更糟。有javascript minifiers可以合并JS文件;你应该考虑使用它们,因为它们也有助于改善延迟问题。

答案 1 :(得分:2)

实际上,YUI 3很好地解决了这个问题。请随意查看文档:{​​{3}}(这是具有这种魔力的特定使用功能)。基本上它的工作原理如下:

  • 您定义模块
  • 使用YUI()创建核心YUI对象时,可以指定代码所需的模块
  • 在幕后,YUI会检查这些模块是否已加载。如果没有,它会在页面上异步加载它们。

我还读到jQuery团队正在研究类似的东西(有人支持我)。

至于哲学论点,如果内置它会很好,我认为这可能是一个很好的特征。另一方面,javascript的简单性也很好。它允许初级程序员完成他们的工作的低得多的入口点。对于我们这些需要它的人来说,像YUI这样的大型图书馆每天都在变得越来越好。

答案 2 :(得分:0)

requirejs项目尝试解决此问题,请参阅示例

http://requirejs.org/docs/why.html

(但我还没有用它)