美文网首页饥人谷技术博客
JS与页面渲染机制相关概念

JS与页面渲染机制相关概念

作者: liushaung | 来源:发表于2017-08-01 10:57 被阅读0次

CSS和JS在网页中的放置顺序是怎样的?

  • JS一般放置在</body>标签之前或添加defer属性

    1. JS是阻塞加载,会阻塞DOM树或阻塞渲染树的构建。
    2. JS 可能会修改 DOM,如果在DOM树加载完成前修改DOM会导致JS代码无效。
    3. JS可能会通过操作DOM对象的class来改变DOM,因此必须保证CSS在JS之前加载和解析完成。
  • CSS一般放置在head标签内

    由于Render Tree是由DOM树和CSSOM树组合成的,html页面需要等到CSS解析完后才能完成渲染,所以CSS应放在head标签内,优先下载解析,以避免页面元素由于样式缺失造成瞬间的白页或者给用户闪烁感。

白屏和FOUC

  • 当把CSS样式放在底部或者使用@import方式引入样式、或将JS放在头部造成其他内容阻塞加载时:
    • 一些浏览器例如chrome,他的加载和渲染机制是等头部的JS和底部的CSS全部加载解析完后再渲染展示页面,而这个等待的时间就为白屏。
    • 另一些浏览器例如Firefox,他会在CSS未加载前先展现页面,等css加载后再重绘一次,这就造成了FOUC (无样式内容闪烁)。

async和defer的作用是什么?有什么区别

  • 当浏览器碰到<script>标签时:
    • 浏览器会立即加载并执行指定的脚本,并且阻塞后续的页面渲染。
    • 有 async时,加载和渲染后续文档元素的过程将和 js脚本 的加载与执行并行进行(异步)。有 async 的情况下,JavaScript 脚本一旦下载好了就会执行,所以很有可能不是按照原本的顺序来执行的。如果 JavaScript 脚本前后有依赖性,使用 async 就很有可能出现错误。
    • 有 defer时,加载后续文档元素的过程将和 js脚本 的加载并行进行(异步),但是 js脚本 的执行要在DOM加载完成之后,DOMContentLoaded 事件触发之前完成。

简述网页的渲染机制

  1. 解析html构建DOM树
  2. 解析CSS构建CSSOM树
  3. 把DOM和CSSOM组合成渲染树(Render Tree)
  4. 在渲染树的基础上进行布局,计算每个节点的几何结构(Layout Tree)
  5. 把每个节点绘制到屏幕上(Painting)

相关文章

  • JS与页面渲染机制相关概念

    CSS和JS在网页中的放置顺序是怎样的? JS一般放置在 标签之前或添加defer属性JS是阻塞加载,会阻塞DOM...

  • 关键渲染路径

    标签: 浏览器渲染 关键渲染路径 提到页面渲染,有几个相关度非常高的概念,最重要的是关键渲染路径,其他几个概念都可...

  • requireJs学习笔记(一)

    概念 优势 防止js加载阻塞页面渲染 使用程序调用方式加载js API define 定义模块 require 加...

  • 【nuxt.js笔记】使用markde 与 highlight.

    安装markde.js 与代码高亮插件 highlight.js 用法 页面渲染效果

  • 略知一二之浏览器渲染原理

    浏览器渲染原理 推荐相关阅读文章 浏览器页面渲染机制,你真的弄懂了吗? 关键渲染路径 深入浅出浏览器渲染原理 [译...

  • H5 浏览器渲染原理浅析

    待续 参考 浏览器的渲染:过程与原理 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 浏览器页面资源加载...

  • 2-1.JS相关概念-2 网页渲染机制

    参考文献1.Render-Tree Construction, Layout, and Paint1.Render...

  • 性能优化

    相关概念 阻塞渲染 JS下载、执行时肯定会阻塞渲染例如下图中代码,对于浏览器,接收到html文档后,解析到a.js...

  • 浏览器核心原理

    canvas核心与原理 canvas 渲染引擎 skia flutter 是 dart + ski 页面是 js ...

  • Django框架解析

    前端相关 展示内容:浏览器接收后端返回的html文本(经过模板渲染)内容并在页面展示.与用户交互信息:js将用户产...

网友评论

    本文标题:JS与页面渲染机制相关概念

    本文链接:https://www.haomeiwen.com/subject/wvzdlxtx.html