如果我们只是单纯在 head 或 body 中引用脚本,由于是否会更改DOM是未知的, 所以脚本在下载执行的过程中会完全阻塞页面的渲染。
若脚本在 head 或 body 中间,有很大可能会出现空白页面,也无法进行用户交互,用户体验很差。
即便是可以并行下载 javascript 文件,但这个下载过程中会影响图片等资源的下载。
所以我们首先需要做的是:
把 script 标签放在 body 里最底部;
因为进行 HTTP 请求时有额外的性能开销,如三次握手,所以还要尽量减少 HTTP 请求:
把 javascript 文件合并成一个;
在一个请求里加载多个 javascript 文件
但是以上并没有解决我们的问题,一个大的 javascript 文件会下载执行脚长时间,在这段时间里,浏览器无法做其他事情。这就需要无阻塞脚本,也就是在页面加载完成后才加载 javascript 代码,即在 window对象 的 load 事件触发之后再下载脚本。
1 延迟脚本
defer:首先我们要确定该脚本不会改变DOM,因为加上就是告诉浏览器这个脚本不会改变 DOM,可以在页面加载完成后再执行。 给 script 标签加上这个属性后,这个文件就可以跟其他资源并行下载了。IE 从 IE10 开始不支持 defer
async:与 defer 区别在于下载完成后就执行,但 defer 要等到页面加载完成后才执行
2 动态脚本
也就是动态创建一个 script 标签,在合适的时机插入到页面中,我们可以这种方法来根据需要加载文件,也能指定脚本加载顺序。
3 XMLHttpRequest脚本注入
就是通过 XHR 获取脚本 然后在回调函数中创建 script 标签并插入到页面中
推荐方法
先添加动态加载所需的脚本,尽可能精简,其中添加一个加载脚本的函数
在 script 标签中调用函数加载其他脚本
当然,也有一些懒加载库能使用。
以上是如何进行脚本加载优化的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。 1.Python以简洁语法和丰富库生态着称,适用于数据分析和Web开发。 2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。

如何在Quartz中提前发送任务通知在使用Quartz定时器进行任务调度时,任务的执行时间是由cron表达式设定的。现�...

在JavaScript中如何获取原型链上函数的参数在JavaScript编程中,理解和操作原型链上的函数参数是常见且重要的任�...

在微信小程序web-view中使用Vue.js动态style位移失效的原因分析在使用Vue.js...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

Atom编辑器mac版下载
最流行的的开源编辑器