异步加载和将脚本放在正文末尾之间的区别/优势
Differences/Advantages between async loading and putting script at the end of body
有人能告诉我把下一个脚本标记放在<body>元素,并将其放在<身体>元素?
<script>
(function (){
var script = document.createElement("script");
script.async = true;
script.type = "text/javascript";
script.src = "foo.js";
document.getElementsByTagName("head")[0].appendChild(script);}
());
</script>
2017编辑
这个答案完全过时了。随着http2在现代浏览器中的出现和模块捆绑器在我们的堆栈中的出现,拥有小捆绑包的方向越来越大。仅在需要时加载的块。在移动时代更为重要。
老答案
最佳解决方案是一个单独的javascript文件,其中包含当前页面所需的所有内容。只有一个请求意味着更好的性能。对于生产,可以压缩单个文件,这比压缩多个文件要好。
此外,我会坚持把脚本放在html主体的末尾,因为即使javascript还没有加载,html也会被渲染和显示。
带有async
的脚本标记在每个浏览器中的行为很可能会有所不同(因为这是一个全新的功能),而将脚本放在主体的末尾在每个主要浏览器中都会产生相同的结果。
以下是JavaScript异步加载的一篇文章:Thinking async
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- webpack开发模式和生产构建模式之间有什么区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 布局引擎和javascript引擎之间的区别
- 什么's extjs中的mon()和on()之间的区别
- type=text/javascript和language=javascript之间的区别
- 函数()和新函数()之间的区别
- JavaScript中let和var之间的区别
- 蓝鸟的done()和spread()之间的区别
- Node.js HTTP/NET——连接和请求之间的区别