JS阻塞的问题
JS 有个很无语的阻塞特性,就是当浏览器在执行JS 代码时,不能同时做其他任何事情,无论其代码是内嵌的还是外部的。
答:下载是异步的没问题,但是每个javascript执行的时候还是同步的,就是先出现的script标签一定是先执行,即使是并行下载它最后一个下载完成。除非标有defer的script标签,否则任何javascript在执行的时候都会中断当前html文档解析,自然会阻止页面 渲染。
3、浏览器并行下载js和异步下载js有什么性能上的区别?
答:其实没什么性能上的区别,只是异步下载javascript可以尽快的让用户看到页面,比较安心罢了。
4、在《高性能javascript》中提到,使用JavaScript动态生成script节点,然后将其插入到文档中动态加载js,js加载是异步的,加载和执行不会影响页面渲染!特别不理解,不是说只要执行js就阻塞页面渲染吗?
答:javascript加载是不会影响已经渲染的页面,但是会中断html文档解析,浏览器会在javascript执行以后决定当前文档是否需要进行重新渲染或者文档重排。所以即使javascript放到最后面也会使浏览器暂停,但不影响之前已经解析出来的dom文档,此时对于用户来说是可操作的,而在之前就加载javascript,浏览器会提早暂停,给用户看到的就是白色的页面,不友好。javascript有可能会修改dom,此时修改dom可能比较危险,因为正处于不稳定的状态,如果使用document.write甚至会迫使浏览器强制解析新出现的动态内容,如果是这种情况,javascript执行完成以后就会进行重排。如果javascript修改了css,影响了layout的话,也会进行重渲染或重排。
5、做一般的项目有没有必要使用LABjs,Require.js等加载库?
答:项目大了重构起来很方便的,没必要在初期就引入复杂性。
最新文章
- c# 读取mck码
- cocos初认识
- js数组操作大全
- <;hr/>; 水平线样式
- 加密算法使用(一):用CRC32来压缩32uuid字符串
- jQuery 关于 end() 方法的详细解释
- Report_客制化Excel报表中的XLS标记(案例)
- 入门级的PHP验证码
- Java菜鸟学习笔记--面向对象篇(十八):对象转型&;多态
- ajax、PHP、session做购物车
- 【Android Developers Training】 34. 添加一个简单的分享行为(Action)
- JavaSE(一)之类与对象
- [codility] Lession1 - Iterations - BinaryGap
- 【BZOJ 3569】 DZY Loves Chinese II
- css给html添加效果
- python 子进程 subpocess 的使用方法简单介绍
- ORA-55617解决方法
- include_once与require_once的区别
- 不管你是否已经准备面试, 这45道Python面试题都对你非常有帮助!(mark!)
- go语言学习--go中闭包