script标签到底该放在哪里
2017-09-22 18:16
260 查看
一般script标签会被放在头部或尾部。头部就是<head>里面,尾部一般指<body>里[4-5]。 将script放在<head>里,浏览器解析HTML,发现script标签时,会先下载完所有这些script,再往下解析其他的HTML。讨厌的是浏览器在下载JS时,是不能多个JS并发一起下载的。不管JS是不来来自同一个host,浏览器最多只能同时下载两个JS,且浏览器下载JS时,就block掉解析其他HTML的工作[1]。将script放在头部,会让网页内容呈现滞后,导致用户感觉到卡。所以yahoo建议将script放在尾部,这样能加速网页加载。 将script放在尾部的缺点,是浏览器只能先解析完整个HTML页面,再下载JS。而对于一些高度依赖于JS的网页,就会显得慢了。所以将script放在尾部也不是最优解,最优解是一边解析页面,一边下载JS。 所以[2]提出了一种更modern的方式:使用async和defer。80%的现代浏览器都认识async和defer属性[3],这两个属性能让浏览器做到一边下载JS(还是只能同时下载两个JS),一边解析HTML。他的优点不是增加JS的并发下载数量,而是做到下载时不block解析HTML。
[html]
view plain
copy
<script type="text/javascript" src="path/to/script1.js" async></script>
<script type="text/javascript" src="path/to/script2.js" async></script>
带async属性的script会异步执行,只要下载完就执行,这会导致script2.js可能先于script1.js执行(如果script2.js比较大,下载慢)。defer就能保证script有序执行,script1.js先执行,script2.js后执行。
结论
1. [2]认为,如果可以不考虑支持<IE9的IE,最好的做法是将script标签放在head中,并使用async/defer属性。这样浏览器就能一边下载JS,一边解析其他的HTML。
2. Google自己的代码script放的也有点乱,有的放在</body>后面[6],有的放在<body>里面[7],还有的放在<head>里面[8]。总体来说,放在<body>里其实是最常见的做法。
3. 本文只讨论script的位置,至于link和style,还是放在head里的做法比较常见。link也是要下载CSS的啊,为毛不考虑下载CSS阻塞HTML解析的问题呢?其实,一般情况下,JS和CSS,放在head和放在body区别不大。CSS的link放在body也是可以的,只是可能导致页面暂时没有样式[9-10]。
转载自:http://blog.csdn.net/ybdesire/article/details/49284699
相关文章推荐
- script标签到底该放在哪里
- script标签到底该放在哪里
- 应该把script标签放在哪里
- script到底应该放在哪里
- 应该把script标签放在哪里
- 为什么script标签要放在body前,而不是head中?
- script标签写在哪里好?
- XtraFinder到底好在哪里(标签、隐藏文件、路径拷贝与显示、从这里启动)
- 到底应该把网站放在哪里?
- 模块化编程时,#include到底要放在哪里?
- 把 Script 标签 放在页面的最底部的 body 封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
- 摄像头:你们这些手机到底要把我放在哪里?
- C++中的inline函数的实现部分到底该放在哪里
- script放在HTML哪里比较好?
- <script> 标签位置应该放在哪里?
- 用script标签实现跨域
- Java过滤掉字符串中的html标签、style标签、script标签
- HTML <script> 标签的 src 属性
- 程序员:差距在哪里,你与开发高手的距离到底有多远?
- ecache控制标签放在service还是dao层