为什么评论是 interface/class?
Why is Comment an interface/class?
我是网络开发的初学者,所以我正在阅读 MDN 网络文档和 Chromium 源代码以了解 Javascript DOM HTML element 类工作并被实现,我发现 HTML 评论元素实际上是 interfaces/classes(我不知道为什么在 MDN 中它被称为接口,如果它有一个构造函数)(https://developer.mozilla.org/en-US/docs/Web/API/Comment)。为什么会这样?岂不是浪费了space?
与许多语言不同,HTML 注释是标记的一部分。您可以动态生成它们并将它们插入 DOM,就像您可以对任何其他节点所做的那样。
这可能很有用,例如,对于修改 DOM 但希望保留注释以提高可读性的库。一些框架实际上使用注释来帮助他们跟踪不同的节点或节点列表。
这是一个示例,说明如何在网页的 HTML 中动态生成评论。如果你在任何网页中 运行 这两行,你会在 body 元素的底部找到一个新的 <!-- Hello World! -->
评论:
const myComment = new Comment('Hello World!')
document.body.appendChild(myComment)
保留注释的能力实际上并不是 HTML 独有的,其他标记解析库将为您提供这种能力,正是为了在您动态修改标记时保留它们。例如,请参阅此 yaml parser,它将在解析时自动为您保留注释。
所指的(注释节点的)“接口”是在规范中使用 IDL(“接口定义语言”)提供的属性方法 and/or 性质的描述。换句话说,这里使用的“接口”意味着“它公开了什么,如果有的话”,并且暗示它是如何工作的。
在编程语言上下文中的 IDL 定义上下文中解释“接口”时要小心 - IDL 的整个思想是允许规范独立特定编程语言。
您可以阅读DOM3规范中评论界面的规范here。
我是网络开发的初学者,所以我正在阅读 MDN 网络文档和 Chromium 源代码以了解 Javascript DOM HTML element 类工作并被实现,我发现 HTML 评论元素实际上是 interfaces/classes(我不知道为什么在 MDN 中它被称为接口,如果它有一个构造函数)(https://developer.mozilla.org/en-US/docs/Web/API/Comment)。为什么会这样?岂不是浪费了space?
与许多语言不同,HTML 注释是标记的一部分。您可以动态生成它们并将它们插入 DOM,就像您可以对任何其他节点所做的那样。
这可能很有用,例如,对于修改 DOM 但希望保留注释以提高可读性的库。一些框架实际上使用注释来帮助他们跟踪不同的节点或节点列表。
这是一个示例,说明如何在网页的 HTML 中动态生成评论。如果你在任何网页中 运行 这两行,你会在 body 元素的底部找到一个新的 <!-- Hello World! -->
评论:
const myComment = new Comment('Hello World!')
document.body.appendChild(myComment)
保留注释的能力实际上并不是 HTML 独有的,其他标记解析库将为您提供这种能力,正是为了在您动态修改标记时保留它们。例如,请参阅此 yaml parser,它将在解析时自动为您保留注释。
所指的(注释节点的)“接口”是在规范中使用 IDL(“接口定义语言”)提供的属性方法 and/or 性质的描述。换句话说,这里使用的“接口”意味着“它公开了什么,如果有的话”,并且暗示它是如何工作的。
在编程语言上下文中的 IDL 定义上下文中解释“接口”时要小心 - IDL 的整个思想是允许规范独立特定编程语言。
您可以阅读DOM3规范中评论界面的规范here。