页面内的Javascript的任何缺点?

在我的构build(为一个复杂的Web应用程序),我已经汇集了所有的JavaScript到1文件,我正在加载为script.js

我想我可能会走得更远,只是打印所有的JS到HTML。 有什么理由我不应该这样做? 我的想法是…为什么不保存请求?

我知道唯一的缺点是:我知道,因为js非常大,所以初始页面加载速度可能会变慢。

我不是很关心,因为页面是空的反正没有JavaScript。

另外script.js可以被caching。 如果我想cachingHTML中的脚本,我将不得不使用清漆或类似的东西。

我不该这样做的原因是什么? 谢谢。

编辑:我忘了提及这是一个1页的JavaScript应用程序,所以每一个页面都有相同的JavaScript(和HTML)。

我使用一个简单的外部js文件。 作为一个单独的文件,它可以很好地caching,但需要额外的HTTP请求。

如果你把你的Java脚本内联,那么它不会被caching为简单的,如果你正在重复使用内联方法,你将在每个页面上重复代码。

把信誉给安迪 – 如果我可能如此放肆,这就是他们的意思。

将文件放在外部是更好的forms,因为它简化了caching。 允许它轻松地缩小到轻量级的运输,并使维护JavaScript更容易。

将javascript代码与HTML分离的原因有很多 (如果不是仅仅为了“最佳实践”的目的),但是在这种情况下有一个很重要的原因。

caching。 当它在另一个文件(例如“script.js”)中时,该文件将在第一次加载页面后被caching,因此在caching到期之前不会从服务器读取。 如果你把它放到HTML中,那么每次都会重新加载JavaScript。 Varnish只是服务器端的HTTP加速器。 它根本修改客户端的caching,所以所有的数据仍然会被发送。 清漆将不会重新parsing服务器上的数据(服务器脚本(PHP / ASP / etc), 而不是客户端脚本(javascript))。 这是了解这个问题的最大的一点。 所有的代码将不断重新发送给客户端,这将大大阻碍加载时间。

另外,如果出现以下情况,在不同的文件中将它们分开是非常重要的:A)一个文件会比其他文件更频繁地更改(再次caching原因)B)如果您打算在某些页面上使用某些function并不是每个页面上都有)。 没有必要让JavaScript解释它永远不会在页面上使用的函数头(只是由于惰性执行的真正的函数头)。 C)组织目的更容易。

最后,浏览器实际上同时加载多个页面。 如果你有一个“index.html”页面和一个“script.js”页面,它们将同时加载,因此开始执行速度更快。 如果将“script.js”分成三个文件(比如说“script1.js”,“script2.js”和“script3.js”),浏览器将同时加载这些页面,因此开始执行的速度甚至比只有一个script.js文件。 大多数浏览器都有一个默认的并发页面加载值“3”,这意味着它只会同时加载3页,所以把东西分成大量文件而不是仅仅是一对夫妇是没有意义的。

我希望我已经明确了为什么你应该从你的HTML分离你的JavaScript(特别是如果你正在做一个JavaScript的大web应用程序)。

这可能对于单个页面网站来说相当不错,但是如果您需要在多个网页或具有多个url端点的应用程序中共享该代码,那么这种方法就不会奏效。

在body加载之前运行的所有脚本都应放在<head>部分。 而且,需要在体加载后运行的脚本也应该放在<head>部分,但放在document.onload包装器中。 拥有这个包装将确保您有权访问页面上的元素,因为它将在正文呈现运行。

如果您需要运行需要在身体加载时执行的脚本,则可以将内联<script>标记放置在主体内,因为它们将在页面呈现时执行。 这在您需要调整某些元素的widht / heights的情况下非常有用,但是如果将其放置在document.onload包装器中,则不希望发生跳转

不要忘记合并和压缩<head>部分中的所有脚本,因为这将确保更快的页面加载速度,并且也会被浏览器caching。

在你的情况下,你的JavaScript文件的客户端caching? 如果是的话,我会倾向于一个单独的文件。