【问题标题】:How bad is it to put javascript outside of the header?将javascript放在标题之外有多糟糕?
【发布时间】:2010-10-09 17:11:47
【问题描述】:
这个问题已经说明了一切。
我开始为我的weekend project 添加一些功能。对于我和几个朋友来说,这是一个小应用程序,因为我们是交换生,对我们来说有点用处。
但事情如下,我在 php 中执行此操作并使用包含构建所有内容,以便我可以将代码分开。其中一些代码片段依赖于 javascripts 片段,那么将 javascript 放在正文中间有多糟糕?或者我应该只做双重包含,以便 javascript 留在标题中?
【问题讨论】:
标签:
javascript
design-patterns
coding-style
【解决方案2】:
将 Javascript 放入正文中是非常好的。甚至还有“内联”Javascript 之类的东西。只是不要过度。如果你可以将你的脚本打包到一个单独的文件中(这并不总是可行的),它将使你的代码更易于维护。
【解决方案3】:
这样做有好有坏。
GOOD) 如果脚本对构建页面 DOM 并不重要,最好按照 Jim Puls 的建议尽可能晚地执行,通常位于页面的最底部根 BODY 节点中。这很好,因为它允许 XHTML 立即呈现,从而产生页面“加载速度更快”的心理效果。实际上,它以相同的速度加载,只是当用户盯着白色的浏览器窗口时,浏览器不会花费 CPU 周期来下载、解释和运行 JS。
BAD) 脚本标签通常按照它们被包含的顺序下载和解释。这意味着您需要仔细管理它们包含的顺序。此外,由于它们是串行加载的(一次一个),因此您为引用的每个附加文件付出高昂的代价,因为浏览器必须建立连接、检查缓存、下载等。诸如 IE 的“DEFFER”之类的技巧不是标准的。出于这个原因,我强烈建议您在从开发到生产时将您的 javascript 打包到一个文件中,这样用户就不必进行多个串行连接。还要确保您已打开 gzip 压缩。
GOOD) 有一种使用 AJAX 延迟加载脚本的方法——你调用你的服务器请求 JS,并在文件加载时引发一个事件。然后,您可以在其上调用 eval (或一些更安全的变体),将其符号带入范围。这允许并行下载脚本。
好与坏)在 IE 中,您必须避免在 DOM 完全加载之前操作 DOM 树。查找 'dom:loaded' 事件。