zoukankan      html  css  js  c++  java
  • DOM的构建与优化

    一、构建模块

       HTML描述了一个页面的结构。浏览器会将它转换成一种他们能够理解的格式——文档对象模型(DOM),浏览器引擎有一段特殊的代码叫做解析器,将数据从一种格式转换成另外一种格式。

       一个HTML解析器能将数据从HTML转换成DOM。

       DOM扮演着两种角色,HTML文档的对象表示,也充当着外界和页面交互的接口,比如通过Javascript。

       页面上css样式会被映射到CSSDOM(css对象模型)上,跟DOM不一样的是,不能增量的构建。

    二、标签的历史

       浏览器构建DOM的时候,如果遇到<srcipt>标签,会立即执行,如果脚本来自外部,会首先下载脚本。为了执行脚本,HTML的解析必须暂停,只有在JavaScript引擎执行完成后他才会重新开始解析。

    document.write()也会让DOM 的解析暂停。

    三、css会阻塞页面吗?

    javascript阻塞页面解析是因为它可以修改文档。css不能修改文档,所以看起来它应该不会阻塞页面。

     background-color 属性,会阻塞页面。

    即使css不阻塞DOM构建,它会阻塞DOM的渲染。知道DOM与CSSDOM准备好之前,浏览器什么都不会显示。

    四、预解析

    2008年前

     2008年后

    先并行下载,然后开始一一解析。

    五、预加载

         如果你想浏览器更轻易的访问到重要的资源,你可以把他们放在HTML标签当中或者将要加载的脚本内联到文档的前面。将不重要的资源晚一点加载,可以放在文档之后。

    六、derfer 与async

            defer 和async 属性 提供给开发者一个方式来告诉浏览器哪些脚本是需要异步加载的。

         

    • defer 和async 的执行脚本时机不同
      他们告诉浏览器在后台加载脚本的时候,继续解析HTML

             defer:解析完DOM成后才执行
             async:脚本下载后立即执行,可能打断DOM的构建

    七、preload

           

           告诉浏览器你需要尽快地加载他们。

           预加载字体需要注意:

          

  • 相关阅读:
    scipy.spatial.distance.cdist
    关于hstack和Svstack
    numpy.hstack(tup)
    numpy.random.uniform(记住文档网址)
    Python集合(set)类型的操作
    python+Eclipse+pydev环境搭建
    python数据挖掘领域工具包
    LVS 命令使用
    CMD mysql 备份脚本
    Windos Server Tomcat 双开配置
  • 原文地址:https://www.cnblogs.com/leyan/p/9487328.html
Copyright © 2011-2022 走看看