2009-12-30 100 views
1

在html文档中声明Javascript时。我们有3种方式来做到这一点javascript基本问题

  1. 脚本部分去头标记
  2. 脚本部分进入体内标签
  3. JavaScript是从外部文件

其中哪一个参考在性能方面考虑更快更高效?

感谢

回答

2

1和2是关于标签位置。 3可同时适用于1和2

此外,你可以在事件处理程序的JavaScript属性,就像这样:

<button onclick="alert(1)">pressme</button> 

最糟糕的是,你还可以有JavaScript作为URL,在例如链接:

<a href="javascript: alert(1)">click me</a> 

只是坚持你的例子:首先,它通常是使用你在标签一个src组件加载外部脚本文件是个好主意。这允许浏览器缓存脚本,这使得页面在初始页面加载后加载速度更快。这是尤其如此,如果你使用像jQuery的东西,并从公共Conent交付网络(如谷歌AJAX API看到:http://code.google.com/apis/ajaxlibs/documentation/

加载它们的位置(头或身体):在过去的日子里,人们用说,把你的脚本放在脑海中,以确保一旦身体被加载并且用户可以使用所有的交互元素,它们就被加载。但问题在于,加载这些脚本将阻止加载页面的视觉部分 - body。基本上,用户正在看一个空白页面,想知道他们的页面需要很长时间才能呈现。 因此,现在流行的观点是尽可能将所有脚本放在身体中,并确保以可处理部分加载脚本的方式编写JavaScript。 YSlow指南是了解这些事情的好资源。见: http://developer.yahoo.com/yslow/help/

0

如果你是超级关心性能,我想说加载HTML中的JS是最快的。因此,从用户的角度来看,负载中的项目,因此,他们可能会认为下载需要更长的时间,因为页面在加载之后才会开始渲染,但数据量应该相同。外部js文件可能是最慢的,因为它需要单独的http请求。

+0

“外部js文件可能是最慢的,因为它需要一个单独的HTTP请求” - 这只是单页的情况是真实的。如果是涉及加载某些页面的情况,则可能会非常快速地将JS放入HTML文件中。 – 2009-12-30 18:53:24

1

我想说这取决于具体情况。

  • 如果跨站点使用大型脚本并希望利用客户端缓存机制,则外部文件是个不错的主意。

  • 如果一个脚本只在一个页面上使用,那么将它保留在头部/主体中可能是有意义的。很显然,脚本越早进入页面,越早执行JavaScript,但是您可能会受到等待DOM可用于脚本的限制,在这种情况下,如果它处于头部,它将不会产生任何影响或身体。

  • 您可以将脚本立即放在任何定义它需要访问的DOM的HTML之后。这可能是获取脚本在页面中执行的最快方式,但如果它大或在许多地方使用,则不要通过外部加载(并缓存)的文件进行。

0

简短的答案是......呃......这取决于。

如果

速度更快,效率相对于性能被认为

你的意思是“加载速度更快”,在头上,然后内嵌脚本会得到你的代码到浏览器更快第一它的时间被加载。外部文件可以被缓存,所以如果你在多个页面中包含相同的脚本,一旦你克服了第一次加载它的开销,那么你将它驻留在内存中。

2

这实际上取决于您正在编写的JavaScript类型。如果你编写需要在主体中执行的代码(例如:document.write()),你将不得不在body标签中写入代码。如果情况并非如此,并且您正在编写javascript函数,则应该放在head标签或其他文件中。如果要在多个页面上使用相同的功能,您可以使用不同的文件。

w.r.t性能,它再次取决于你在做什么。如果您只有一个使用JavaScript的页面,将其保留在标题中会更快。这样你会减少往返以获得JavaScript文件。

如果您有使用同一功能的多个页面,那么它将如果功能是在不同的文件,因为它们会被下载一次,并多次使用会更快。