”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 破译起源:为什么 DOM 被称为 DOM?

破译起源:为什么 DOM 被称为 DOM?

发布于2024-08-05
浏览:933

Deciphering the Origins: Why the DOM is called the DOM?

文档对象模型 (DOM),基本上是“网页如何在幕后工作”的 Web 开发术语,是每个 Web 开发人员都应该拥有的东西他们的工具包。它就像推动现代网络开发的秘密武器。

但是为什么是 DOM?我最近偶然发现了一个关于浏览器如何工作的视频,然后深入研究了一些文章,这是我对“为什么?”

的理解

每个浏览器都使用**浏览器引擎**,它是网络浏览器的核心组件,负责将网页内容(包括 HTML、CSS 和 JavaScript)渲染为用户可以交互的视觉表示。


“文档”:该术语指加载到网络浏览器中的网页。它表示网页内容的结构化层次结构,包括标题、段落、图像、链接、表单等元素。 DOM 文档本质上是网页结构的内存表示,由浏览器的渲染引擎在页面加载时创建。

现在有趣的部分是浏览器引擎如何将文档转换为节点树,我们称之为用于绘画的 DOM。

下载完文档后,它被转换为原始数据,是的,0和1。并且这些原始数据字节被转换为字符。这种转换是根据HTML文件的字符编码完成的。

这些字符被进一步解析为称为标记的东西。与任何其他编程语言一样,标记可以定义为该编程语言中有意义的最小单个元素。这里标记指的是 HTML 中的标签,即 body、h1、h2、 p、跨度等

标记化完成后,下一步就是构建这些标记。 这就是对象发挥作用的地方。一个对象是由这些标记创建的,这些对象包含有关每个实体的大量信息,包括标签开始、标签结束、属性、数据/值等。

现在,我们有一个“文档”和“对象”,但它仍然是非结构化的,因为这些对象之间没有关系。标记化后,这些标记将转换为节点。每个节点都与另一个节点有关系,包括父节点、子节点和兄弟节点。这些节点到节点的关系形成了熟悉的树状结构。这个过程称为对象树建模。现在,HTML 文档中的节点树模型已准备就绪,可以进行绘制了。

回顾一下,名称“文档对象模型”反映了其目的和功能。它充当网页内容的结构化模型,表示为对象的集合。 “DOM”这个名字是由“文档”(网页)、“对象”(表示元素)和“模型”(结构化表示)融合而来。


我希望这对您有所帮助,如果您有任何具体问题或疑虑,请随时提供任何反馈或询问。

版本声明 本文转载于:https://dev.to/voltz/deciphering-the-origins-why-the-dom-is-called-the-dom-2gbn?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何从Maven存储库中下载源罐子和Javadocs?
    如何从Maven存储库中下载源罐子和Javadocs?
    [2 ]步骤1:下载源代码执行以下命令,以下载所有项目依赖项的源代码: mvn dependenty:sources 步骤2 : Download JavadocsTo download Javadocs, use the following command:mvn dependency:resol...
    编程 发布于2025-02-06
  • 在映射到MySQL枚举列时,如何确保冬眠保留值?
    在映射到MySQL枚举列时,如何确保冬眠保留值?
    在hibernate中保存枚举值:故障排除错误的列type ,他们各自的映射至关重要。在Java中使用枚举类型时,至关重要的是,建立冬眠的方式如何映射到基础数据库。在您的情况下,您已将MySQL列定义为枚举,并在Java中创建了相应的枚举代码。但是,您遇到以下错误:“ MyApp中的错误列类型。...
    编程 发布于2025-02-06
  • 如何将HTML字符串转换为DOM元素以将其附加到DOM树上?
    如何将HTML字符串转换为DOM元素以将其附加到DOM树上?
    将html字符串转换为dom elements 可以使用Domparser类,如下所示: var xmlString =“< div> [&& && && &&&华[&华[&&华使用标准DOM方法。
    编程 发布于2025-02-06
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python 射线tracing方法Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a路径对象表示多边形。它检查给定点是否位于定义路径内。 T...
    编程 发布于2025-02-06
  • 如何在Java列表中有效计算元素的发生?
    如何在Java列表中有效计算元素的发生?
    计数列表中的元素出现在列表 中,在java编程中,列举列表中列举元素出现的任务来自列表。为此,收集框架提供了全面的工具套件。在这种情况下,Batocurrences变量将保持值3,代表动物列表中的“ BAT”出现的数量。 &&& [此方法是简单的,可以得出准确的结果,使其成为计算列表中元素出现的理...
    编程 发布于2025-02-06
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    [2明确担心Microsoft Visual C(MSVC)在正确实现两相模板实例化方面努力努力。该机制的哪些具体方面无法按预期运行?背景:说明:的初始Syntax检查在范围中受到限制。它未能检查是否存在声明名称的存在,导致名称缺乏正确的声明时会导致编译问题。为了说明这一点,请考虑以下示例:一个符合...
    编程 发布于2025-02-06
  • 'exec()
    'exec()
    Exec对本地变量的影响: exec function,python staple,用于动态代码执行的python staple,提出一个有趣的Query:它可以在函数中更新局部变量吗? python 3 Dialemma 在Python 3中,以下代码shippet无法更新本地变量,因为人们...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-02-06
  • 如何使用Python的记录模块实现自定义处理?
    如何使用Python的记录模块实现自定义处理?
    使用Python的Loggging Module 确保正确处理和登录对于疑虑和维护的稳定性至关重要Python应用程序。尽管手动捕获和记录异常是一种可行的方法,但它可能乏味且容易出错。解决此问题,Python允许您覆盖默认的异常处理机制,并将其重定向为登录模块。这提供了一种方便而系统的方法来捕获和...
    编程 发布于2025-02-06
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本号的替代方法,它是使用以下语法: https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js(google hosted...
    编程 发布于2025-02-06
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。 To resolve this issue and ensure scripts execute on subsequent page visits, Firefox...
    编程 发布于2025-02-06
  • 如何检索SQL中每个用户的最新登录日期?
    如何检索SQL中每个用户的最新登录日期?
    SQL查询每个用户的最后登录记录日期 问题: 假设数据库表包含用户登录信息,我们如何检索每个用户的最后登录日期?考虑到可能存在重复的登录日期。 解决方案: 解决此问题有两种常见方法: 方法一:使用INNER JOIN的子查询 此方法利用子查询来识别每个用户的最后登录日期,然后用于过滤主表: sel...
    编程 发布于2025-02-06
  • 如何有效处理Java中的时区转换?
    如何有效处理Java中的时区转换?
    跨时区的时区转换 java.util.date类缺乏明确的时区分配。它的Tostring方法误导了JVM的默认时区,导致混乱。为了避免这些陷阱,现代Java利用Java.Time软件包进行更健壮的时间处理。 在Java.Time中转换时区,指定一个时区并调用ZonedDateTime.now方法...
    编程 发布于2025-02-06
  • 为什么我的烧瓶应用程序会抛出“ templatenotfound”错误,即使我的模板文件存在?
    为什么我的烧瓶应用程序会抛出“ templatenotfound”错误,即使我的模板文件存在?
    故障排除flask的templatenotfound错误 在尝试在flask中渲染模板,例如'home.html',您可能会遇到''''',您可能会遇到''' jinja2.exceptions.templatenot...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3