We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
完成了网络请求和响应,如果响应头中Content-Type的值是text/html,那么接下来就是浏览器的解析和渲染工作了。
浏览器在构建完布局树之后,还会对特定的节点进行分层,构建一棵图层树(Layer Tree)。去实现3D动画如何呈现出变换效果,当元素含有层叠上下文时如何控制显示和隐藏等等。
接下来渲染引擎会将图层的绘制拆分成一个个绘制指令,比如先画背景、再描绘边框......然后将这些指令按顺序组合成一个待绘制列表,相当于给后面的绘制操作做了一波计划。
The text was updated successfully, but these errors were encountered:
接着HTML完成渲染说,假设此文件之后还存在一些JS文件: 因为JS的执行是单线程的,所以说在同一个时间内只能做一件事情,所有的任务都要排队,前一个任务结束了,后一个任务才能开始。JS的执行机制可以看做是一个主线程+任务队列,同步任务是放在主线程上的人物,异步任务就是放在任务队列中的任务。所有同步任务在主线程上执行,形成可一个执行栈。异步任务有了运行结果就会在任务队列中放置一个事件;运行时线运行执行栈里的任务,如果执行栈里的运行完了,就会从任务队列中提取事件,运行任务队列中的任务,任务队列中的任务可能还存在异步任务继续放在任务队列中,所以这个过程是不断重复的,称之为事件循环。
浏览器在解析过程中,如果遇到请求外部资源(img,iconfont)等,会重新从构建请求开始执行,这个请求过程是异步的,所以不会阻塞HTML的加载,但是如果加载过程中遇到了JS文件,HTML会挂起渲染过程(被阻塞),等到JS文件全部加载完并且解析执行完才会继续进行HTML的渲染。(因为JS内部可能会修改DOM结构,所以JS执行完毕前后续的渲染都没有必要。)这也是JS阻塞浏览器渲染的根本原因。CSS文件的加载不影响JS文件的记载,但影响JS文件的执行,在JS执行前浏览器必须保证CSS文件加载执行完毕。
Sorry, something went wrong.
No branches or pull requests
网络部分
网络请求
网络响应
解析算法部分
完成了网络请求和响应,如果响应头中Content-Type的值是text/html,那么接下来就是浏览器的解析和渲染工作了。
构建DOM树
样式计算
生成布局树
渲染过程部分
建图层树
浏览器在构建完布局树之后,还会对特定的节点进行分层,构建一棵图层树(Layer Tree)。去实现3D动画如何呈现出变换效果,当元素含有层叠上下文时如何控制显示和隐藏等等。
生成绘制列表
接下来渲染引擎会将图层的绘制拆分成一个个绘制指令,比如先画背景、再描绘边框......然后将这些指令按顺序组合成一个待绘制列表,相当于给后面的绘制操作做了一波计划。
生成图块和生成位图
显示器显示内容
The text was updated successfully, but these errors were encountered: