美文网首页
js基础概念

js基础概念

作者: 李博洋li | 来源:发表于2017-05-24 13:45 被阅读0次

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

    css需要放在页面的head中,用link标签引入,而放在页面底部会发生页面dom元素加载而样式后加载的情况发生。
    JavaScript在页面中放在body底部比较好,因为JavaScript每一个引入标签或页面内联JavaScript是不会并行加载的,如果放在头部,文件比较大或网速不好的情况下,页面会一直空白,因为这一个JavaScript文件没有加载完成,体验非常不好,而且JavaScript逻辑放在头部,在dom元素没有全部加载出来的时候,某些语句会导致控制台报错。

    2、解释白屏和FOUC

    关于白屏

    如果把样式放在底部,对于IE浏览器,在某些场景下(新窗口打开,刷新等)页面会出现白屏,而不是内容逐步展现;如果使用 @import 标签,即使 CSS 放入 link,并且放在头部,也可能出现白屏。

    • 解决方式:使用 link 标签将样式表放在顶部

    关于FOUC

    FOUC (Flash of Unstyled Content) 无样式内容闪烁

    如果把样式放在底部,对于IE浏览器,在某些场景下(点击链接,输入URL,使用书签进入等),会出现 FOUC 现象(逐步加载无样式的内容,等CSS加载后页面突然展现样式).对于 Firefox 会一直表现出 FOUC .

    • 出现FOUC的原因?
      • 脚本会阻塞后面内容的呈现
      • 脚本会阻塞其后组件的下载
    • 解决方式:将JS放在底部。

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

    async和defer是script标签的一个属性:

    • async的作用是使加载和渲染后续文档元素的过程和 script.js 的加载与执行并行进行(异步)。
    • defer的作用是:加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
    其区别是:
    • defer:脚本延迟到文档解析和显示后执行,有顺序
    • async:不保证顺序

    4、简述网页的渲染机制

    1. 解析 HTML 标签, 构建 DOM 树
    2. 解析 CSS 标签, 构建 CSSOM 树
    3. 把 DOM 和 CSSOM 组合成 渲染树 (render tree)
    4. 在渲染树的基础上进行布局, 计算每个节点的几何结构。
    5. 把每个节点绘制到屏幕上 (painting)
    浏览器渲染.png

    相关文章

      网友评论

          本文标题:js基础概念

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