js的加载顺序

1.

js 放在 <head>标签中会立即执行,阻塞后续资源的下载与执行。因为js有可能会操作DOM,如果不阻塞后续的资源下载,DOM的操作顺序不可控。

如果外部脚本加载时间很长,就会造成网页长时间失去响应,浏览器就会呈现“假死”状态。这被称为“阻塞效应”。html 需要等<head>中所有的js和css加载完后才开始绘制。因此要把 js 文件放在 <body>之后,这样可以避免阻塞其他文件的加载,同时,使html页面迅速显示。

把js放在网页尾部加载还有一个好处,可以保证当js操作dom时,dom已经生成。

2.

外链js如果含有 defer='true',浏览器就会等到DOM加载完成后再执行脚本。对于内置script,以及动态生成的scriptdefer = 'true' 不生效

3.

外链js如果含有 asnyc = 'true',不会依赖于任何 js 和 css 的执行。此时js加载完成后立刻执行。不会保证按书写的顺序执行。因为 asnyc = 'true'会告诉浏览器,js不会操作dom 和修改 css 。
asnyc属性的作用:使用另一个进程下载脚本;下载时不会阻塞渲染。asnyc可以保证脚本下载的同时,浏览器会继续渲染,一旦采用这个属性,就无法保证js的执行顺序。即,不能保证哪个js先下载,哪个后下载。
一般来说,如果js之间没有依赖关系,就使用 asnyc ,如果有依赖关系,就使用defer,同时设置 asnyc 和 defer, defer不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值