我正在编写一个加载两个js文件的HTML页面。两个js文件都使用函数a(),所以我想如果我可以创建第三个js文件并将相同的函数a()放入该文件中,浏览器可能加载速度更快,因为它不需要加载相同的功能两次。那么有人可以告诉我,我是否正确的方法,以及如何从不同的js文件加载函数?
谢谢!
答案 0 :(得分:2)
答案很长 - 您的所有代码都拥有相同的全局范围。
因此,如果您在文件的顶级范围内定义函数a
,则无需在每个文件中包含a
。当然有例外。
相反 - 包括仅一次和仅在需要时实际上会使您受益,通常情况下 - 因为每个连续文件都会更小,并且这样需要更短的下载时间,从而使您的网站更快"。
您可能会从中获益:
<强>范围:强>
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions_and_function_scope
http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/
相关的模块模式:
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
AMD规范:
的常见实施答案 1 :(得分:2)
有人可以告诉我,如果我在正确的轨道上谈论这个
你可能会。如果该函数绝对是巨大的,它可能提高性能(无需下载函数两次;对执行时间的影响可以忽略不计),但有更好的理由将其分解为单独的文件:
至于在浏览器JavaScript中加载它,只需为其添加另一个<script>
元素:
<script src="a.js"></script> <!-- Contains a() -->
<script src="b.js"></script> <!-- Uses a() -->
<script src="c.js"></script> <!-- Also uses a() -->
答案 2 :(得分:1)
要完成您要找的内容,请将函数a()移动到自己的文件(3)中,然后将其从文件1和文件中删除。 2.然后在HTML中引用您的javascript文件时,首先包含第3个文件。
有一点需要注意,你要确保函数a()完全相同。
为获得最佳性能,您希望将所有JS组合到一个文件中然后缩小。一个好的起点是使用Chrome的Page Speed(F12&gt; Page Speed标签)