」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 破解起源:為什麼 DOM 被稱為 DOM?

破解起源:為什麼 DOM 被稱為 DOM?

發佈於2024-08-05
瀏覽:987

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]刪除
最新教學 更多>
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    程式設計 發佈於2025-05-18
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-05-18
  • Java為何無法創建泛型數組?
    Java為何無法創建泛型數組?
    通用陣列創建錯誤 arrayList [2]; JAVA報告了“通用數組創建”錯誤。為什麼不允許這樣做? 答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<my...
    程式設計 發佈於2025-05-18
  • Python環境變量的訪問與管理方法
    Python環境變量的訪問與管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    程式設計 發佈於2025-05-18
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-05-18
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示 僅通過Python的MlStripper 來簡化剝離過程,Python Standard庫提供了一個專門的功能,MLSTREPERE,MLSTREPERIPLE,MLSTREPERE,MLSTREPERIPE,MLSTREPERCE,MLST...
    程式設計 發佈於2025-05-18
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-05-18
  • 哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    程式設計 發佈於2025-05-18
  • Python不會對超範圍子串切片報錯的原因
    Python不會對超範圍子串切片報錯的原因
    在python中用索引切片範圍:二重性和空序列索引單個元素不同,該元素會引起錯誤,切片在序列的邊界之外沒有。 這種行為源於索引和切片之間的基本差異。索引一個序列,例如“示例” [3],返回一個項目。但是,切片序列(例如“示例” [3:4])返回項目的子序列。 索引不存在的元素時,例如“示例” [9...
    程式設計 發佈於2025-05-18
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-05-18
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-05-18
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-05-18
  • 找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    如何在mySQL中使用mySql 檢索最大計數,您可能會遇到一個問題,您可能會在嘗試使用以下命令:理解錯誤正確找到由名稱列分組的值的最大計數,請使用以下修改後的查詢: 計數(*)為c 來自EMP1 按名稱組 c desc訂購 限制1 查詢說明 select語句提取名稱列和每個名稱...
    程式設計 發佈於2025-05-18
  • Java開發者如何保護數據庫憑證免受反編譯?
    Java開發者如何保護數據庫憑證免受反編譯?
    在java 在單獨的配置文件保護數據庫憑證的最有效方法中存儲憑據是將它們存儲在單獨的配置文件中。該文件可以在運行時加載,從而使登錄數據從編譯的二進製文件中遠離。 使用prevereness class import java.util.prefs.preferences; 公共類示例{ 首選...
    程式設計 發佈於2025-05-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3