• html的解析


    Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验
      简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的:
      1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;DOCTYPE文档说明:<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。每一个HTML文档里都添加一个<!DOCTYPE> 声明,这样浏览器才能获知文档类型, 并且在HTML5中一定书写为<!doctype html>,并且向下兼容。
      2. 浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件;
      3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
      4. 浏览器继续载入html中<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
      5. 浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
      6. 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
      7. 浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它;
      8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<div> (style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;
      9. 终于等到了</html>的到来,浏览器泪流满面……
      10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
      11. 浏览器召集了在座的各位<div><span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请
      求了新的CSS文件,重新渲染页面。


    浏览器解析html的过程是:接受网络数据-》将二进制码变成字符-》将字符变为unicode code points.-》tokenizer -》tree constructor -》DOM ready -》Window ready.
    前端编程,主要理解的是tree constructor -> dom ready -> window ready的流程。因为在tree constructor的过程中,可能会有动态输出,比如 document.createElement('script').
    动态输出的部分是怎么被解析的呢?动态的script ready和DOM ready和window ready有什么关系,通过以下代码,可以清楚看出浏览器对HTML的加载过程与事件的触发时间。
    01 <!--
    02 此文件用来测试browser解析HTML的时间顺序
    03 1, script to load jQuery.js. -- <script> in <head>
    04 2, script to load dojo.js. -- loadDojo function.
    05 3, DOMContentLoaded event.
    06 4, window load event.
    07 5, dojo.js script load event.
    08 在代码中嵌入了大量的log来探索dojo和jquery是否被定义。
    09  
    10 使用方法: 有6中组合方式
    11 <script> for jQuery.js 可以使用async属性或者不使用async.
    12     乘以
    13 loadDojo方法可以放在Place 1, Place 2或者Place 3处。默认情况放在了Place 3处。
    14 一个地方使用时,另外两个地方必须屏蔽。
    15 -->
     
  • 相关阅读:
    【转】为什么要报考系统架构设计师考试
    前端三大主流框架中文文档
    零散知识点-类的区别;函数式编程的简单总结;
    window.location相关方法
    Hybrid相关
    php中file_get_contents与curl的区别
    三级下拉菜单
    微信生成带参数二维码及响应操作
    开发中因长时间不用而遗忘的,持续补充中。。
    项目中用到的几个工具函数
  • 原文地址:https://www.cnblogs.com/greatluoluo/p/5664667.html
Copyright © 2020-2023  润新知