如何用原生JavaScript实现并详细解析innerHTML功能示例?

更新于
2026-10-01 16:30:36
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3163个文字,预计阅读时间需要13分钟。

如何用原生JavaScript实现并详细解析innerHTML功能示例?

都知晓浏览器和服务端是通过HTTP协议进行数据传输的,而HTTP协议是纯文本协议。那么,浏览器在接收到服务端传输过来的HTML字符串后,是如何将其解析成真实的DOM元素的呢?这便是我们接下来要探讨的。

都知道浏览器和服务端是通过 HTTP 协议进行数据传输的,而 HTTP 协议又是纯文本协议,那么浏览器在得到服务端传输过来的 HTML 字符串,是如何解析成真实的 DOM 元素的呢,也就是我们常说的生成 DOM Tree,最近了解到状态机这样一个概念,于是就萌生一个想法,实现一个 innerHTML 功能的函数,也算是小小的实践一下。

函数原型

我们实现一个如下的函数,参数是 DOM 元素和 HTML 字符串,将 HTML 字符串转换成真实的 DOM 元素且 append 在参数一传入的 DOM 元素中。

function html(element, htmlString) { // 1. 词法分析 // 2. 语法分析 // 3. 解释执行 }

在上面的注释我已经注明,这个步骤我们分成三个部分,分别是词法分析、语法分析和解释执行。

词法分析

词法分析是特别重要且核心的一部分,具体任务就是:把字符流变成 token 流。

词法分析通常有两种方案,一种是状态机,一种是正则表达式,它们是等效的,选择你喜欢的就好。我们这里选择状态机。

首先我们需要确定 token 种类,我们这里不考虑太复杂的情况,因为我们只对原理进行学习,不可能像浏览器那样有强大的容错能力。除了不考虑容错之外,对于自闭合节点、注释、CDATA 节点暂时均不做考虑。

阅读全文

本文共计3163个文字,预计阅读时间需要13分钟。

如何用原生JavaScript实现并详细解析innerHTML功能示例?

都知晓浏览器和服务端是通过HTTP协议进行数据传输的,而HTTP协议是纯文本协议。那么,浏览器在接收到服务端传输过来的HTML字符串后,是如何将其解析成真实的DOM元素的呢?这便是我们接下来要探讨的。

都知道浏览器和服务端是通过 HTTP 协议进行数据传输的,而 HTTP 协议又是纯文本协议,那么浏览器在得到服务端传输过来的 HTML 字符串,是如何解析成真实的 DOM 元素的呢,也就是我们常说的生成 DOM Tree,最近了解到状态机这样一个概念,于是就萌生一个想法,实现一个 innerHTML 功能的函数,也算是小小的实践一下。

函数原型

我们实现一个如下的函数,参数是 DOM 元素和 HTML 字符串,将 HTML 字符串转换成真实的 DOM 元素且 append 在参数一传入的 DOM 元素中。

function html(element, htmlString) { // 1. 词法分析 // 2. 语法分析 // 3. 解释执行 }

在上面的注释我已经注明,这个步骤我们分成三个部分,分别是词法分析、语法分析和解释执行。

词法分析

词法分析是特别重要且核心的一部分,具体任务就是:把字符流变成 token 流。

词法分析通常有两种方案,一种是状态机,一种是正则表达式,它们是等效的,选择你喜欢的就好。我们这里选择状态机。

首先我们需要确定 token 种类,我们这里不考虑太复杂的情况,因为我们只对原理进行学习,不可能像浏览器那样有强大的容错能力。除了不考虑容错之外,对于自闭合节点、注释、CDATA 节点暂时均不做考虑。

阅读全文