前端语言串讲笔记 | 青训营

73 阅读2分钟

html、css、JavaScript在浏览器中的运转:
 首先浏览器一般包含两种引擎:渲染引擎和JavaScript引擎,渲染引擎主要负责加载页面、html来生成DOM树的结构,结合DOM的结构特性和css的样式特性,渲染引擎会计算最终页面的排版,浏览器中哪些部分可以作为一个整体,变为一个图层,这样渲染的效率会更高,最后把页面绘制出来。JavaScript本质也是一段文本,它需要通过解释器才能运行,一个优质的解释器除了能处理语法外还应该有高度优化的性能。首先引擎会将JavaScript源码经过词法语法经过解析转化为AST树,接着通过Ignition转化为字节码,字节码可以在虚拟机中运行。这里值得一提的是Turbofan,如果虚拟机发现有热点代码可以反过来让Turbofan生成优化后的机器码,性能会更高。这里可能还有Deoptimize的流程,Turbofan运行时发现数据类型不对就会反过来让Ignition重新优化兼容类型的代码。
Javascript in HTML
 Javascript in HTML有一个很重要的概念——DOM。它把页面上对应HTML部分转化为对应Javascript对象。比如Node可以派生出Document、CharacterDate、Element和Attr、Head标签对应实现HTMLHeadElement,body标签对应HTMLBodyElement等。
DOM的事件机制:
 分为事件捕捉和事件捕获。捕捉是第一个阶段。比如说在页面上触发一次点击按钮,那么它会先从Document一步步往下,一直到HTML、Body、DIV以及对应的Button上,会执行一个事件捕获的一个阶段,然后反过来进行一个时间冒泡的阶段。捕获的阶段对计算机来说方便他们找到触发元素,冒泡阶段一般是对于开发者方便做一些事件代理。