dom 中的 nodeType 节点类型

dom 中的 nodeType 节点类型

游戏|数码彩彩2024-04-28 7:37:41341A+A-

dom 中的 nodeType 节点类型    

前言

看到 vue AST 抽象语法树中有这样的定义:

dom 中的 nodeType 节点类型   中间根据的 child.type 难道是随意定义的吗?我不敢瞎揣测,不过既然是对 document 树的解析,那必然会和 document 扯上关系。

这时我尝试在 F12 中输出 document 看到了 nodeType 属性和这个 child.type 相似。

个人认为可能有所关系,不过不重要,因为这篇主要讲 document 中的 nodeType 节点类型。

nodeType 的分类

我在 MDN 上搜索 nodeType ,看到如下表格:

dom 中的 nodeType 节点类型   当然还有一些类型已经废弃,这里不再列举。

通过 nodeType 来定义我们 document 上节点的节点类型,通过代码,你讲看到具体的输出:

这是一段很简单的 html 文件:

dom 中的 nodeType 节点类型   然后我简单定义了个工具方法,示意 nodeType :
 dom 中的 nodeType 节点类型   为了使得全部的节点类型输出顺利,我单独针对部分类型处理:
 dom 中的 nodeType 节点类型   然后是常规的 html 元素:
 dom 中的 nodeType 节点类型    

回过头看 vue

为什么 vue 中的 type 属性只出现了 2、3 (默认 1)?

如果你熟悉其中的 parseHTML 方法,如下应该就是其答案:
 

dom 中的 nodeType 节点类型  
首先在对 html 解析时,会优先对 注释(COMMENT_NODE,CDATA_SECTION_NODE) 、文档类型(DOCUMENT_NODE, DOCUMENT_TYPE_NODE) 进行判断;另外 vue 本身就是虚拟 Dom 机制,所以也就不需要 DOCUMENT_FRAGMENT_NODE 。

最后只要匹配 ELEMENT_NODE 和 TEXT_NODE 类型即可(值为 1,3)。

我们知道 innerHtml 会有 双大括号 表达式,vue 就空出 2 专门用来对表达式解析。

总结

我只是看 vue 渲染代码时,好奇为什么 type 是这样的取值方式。也许是错的,不过希望各位对 nodeType 这个 document 上的属性有所认识。

点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈