ما هو الـ DOM؟ وكيف يتم تمثيل صفحة HTML في ذاكرة المتصفح؟

تم النشر | بواسطة: Moustafa | May 06, 2026 | منذ شهر |
برمجة
| عدد المشاهدات: 1,450
ما هو الـ DOM؟ وكيف يتم تمثيل صفحة HTML في ذاكرة المتصفح؟

ما هو الـ DOM؟ وكيف يتم تمثيل صفحة HTML في ذاكرة المتصفح؟

إذا كنت قد بدأت في تعلم تطوير الويب، فمن المؤكد أنك سمعت مصطلح DOM يتردد كثيراً، خاصة عند الحديث عن لغة JavaScript. يُعتبر الـ DOM هو الجسر الذي يربط بين الأكواد الجامدة التي تكتبها في ملف HTML وبين الصفحة التفاعلية التي يراها المستخدم.

في هذا الدليل الشامل، سنشرح مفهوم Document Object Model بعمق، وكيف يحول المتصفح نصوص الكود إلى شجرة من الكائنات في الذاكرة، مع توضيح أهميته في بناء المواقع الحديثة.


1. تعريف الـ DOM (Document Object Model)

الـ DOM هو اختصار لـ Document Object Model أو "نموذج كائن المستند". ببساطة، هو واجهة برمجة تطبيقات (API) للمستندات من نوع HTML و XML.

عندما يقوم المتصفح بتحميل صفحة ويب، فإنه لا يكتفي بعرض الكود كما هو، بل يقوم بإنشاء تمثيل منطقي لهذه الصفحة في الذاكرة. هذا التمثيل يسمح للغات البرمجة (مثل JavaScript) بالوصول إلى محتوى الصفحة، وتغيير هيكلها، أو تعديل أنماطها (Styles) بشكل ديناميكي.


2. كيف يُمثّل الـ DOM صفحة HTML في الذاكرة؟

يعتمد الـ DOM على هيكل يسمى "شجرة الـ DOM" (DOM Tree). تخيل أن صفحة الويب هي شجرة مقلوبة، حيث يكون الجذع هو المستند بالكامل، وتتفرع منه الأغصان (العناصر) والأوراق (النصوص والصور).

مراحل تحويل الكود إلى DOM:

  1. التحليل (Parsing): يقرأ المتصفح ملف الـ HTML سطراً بسطر.

  2. تحويل الرموز (Tokenization): يتم تحويل الأكواد (مثل <div> أو <img>) إلى رموز برمجية.

  3. إنشاء العقد (Nodes): يتم تحويل كل رمز إلى "كائن" (Object) يسمى عقدة (Node).

  4. بناء الشجرة (Tree Construction): يتم ربط هذه العقد ببعضها البعض بناءً على علاقة (الأب والابن) الموجودة في الكود.


3. أنواع العقد (Nodes) في شجرة الـ DOM

لا يقتصر الـ DOM على الأوسمة (Tags) فقط، بل يتكون من عدة أنواع من العقد:

نوع العقدة (Node Type) الوصف مثال
Document Node العقدة الجذرية التي تمثل المستند بالكامل. window.document
Element Node تمثل وسوم الـ HTML. <div>, <h1>, <body>
Attribute Node تمثل الخصائص داخل الوسوم. class="container", id="btn"
Text Node تمثل النصوص الفعلية الموجودة داخل العناصر. "أهلاً بك في موقعنا"
Comment Node تمثل التعليقات التي تكتبها في الكود. <!-- تعليق -->

4. الفرق بين كود الـ HTML والـ DOM

من الأخطاء الشائعة الاعتقاد بأن الـ DOM هو نفسه كود الـ HTML الذي كتبته. هناك فروق جوهرية:

  • HTML: هو الكود النصي المخزن في ملفك، وهو ثابت لا يتغير إلا إذا قمت بتعديل الملف يدوياً.

  • DOM: هو كائن حي موجود في ذاكرة المتصفح (RAM)، يتغير لحظياً عند تفاعل المستخدم (مثل الضغط على زر لإظهار قائمة).

ملاحظة: إذا كتبت كود HTML خاطئاً (مثلاً نسيت إغلاق وسم </table>)؛ فإن المتصفح يقوم بإصلاحه تلقائياً عند بناء الـ DOM.


5. لماذا يُعد الـ DOM مهماً جداً؟

بدون الـ DOM، ستكون صفحات الويب عبارة عن نصوص جامدة. تكمن أهميته في:

  1. التفاعلية: يسمح لـ JavaScript بتغيير المحتوى دون إعادة تحميل الصفحة.

  2. التحكم في الستايل: يمكنك تغيير الألوان والخطوط بناءً على أفعال المستخدم.

  3. التعامل مع الأحداث (Events): مثل مراقبة متى يضغط المستخدم على "إرسال" أو متى يحرك الفأرة.


6. مقارنة بين الـ DOM والـ Virtual DOM

مع ظهور مكتبات مثل React، ظهر مصطلح Virtual DOM. إليك الفرق:

وجه المقارنة Real DOM Virtual DOM
سرعة التحديث بطيء نسبياً عند التعامل مع تحديثات كثيرة. سريع جداً.
طريقة العمل يقوم بتحديث الشجرة بالكامل عند حدوث تغيير. يحدّث فقط الأجزاء التي تغيرت فعلياً.
الذاكرة يستهلك ذاكرة أكثر مع الصفحات الضخمة. يستهلك ذاكرة أقل لأنه نسخة خفيفة.

7. كيفية الوصول إلى الـ DOM باستخدام JavaScript

يمكن للمبرمجين "اصطياد" العناصر في الذاكرة باستخدام دوام محددة، مثل:

  • document.getElementById(): للوصول لعنصر عبر معرفه.

  • document.querySelector(): للوصول لعنصر باستخدام محددات CSS.

  • document.createElement(): لإنشاء عنصر جديد تماماً وإضافته للشجرة.


الأسئلة الشائعة حول الـ DOM (FAQ)

1. هل الـ DOM خاص بلغة JavaScript فقط؟

لا، الـ DOM تم تصميمه ليكون مستقلاً عن لغات البرمجة. يمكن للغات أخرى مثل Python أو PHP التعامل معه، ولكن JavaScript هي الأكثر استخداماً لأنها تعمل داخل المتصفح مباشرة.

2. هل يؤثر حجم الـ DOM على سرعة الموقع؟

نعم، كلما زاد عدد العقد (Nodes) في الشجرة، زاد استهلاك الذاكرة وبطء معالجة المتصفح للتغييرات. يُنصح دائماً بتقليل عمق الشجرة (DOM Depth).

3. ماذا يحدث للـ DOM عند إغلاق المتصفح؟

يتم مسح الـ DOM تماماً من الذاكرة العشوائية (RAM)، فهو موجود فقط طالما أن الصفحة مفتوحة.

4. هل الـ CSS جزء من الـ DOM؟

هناك ما يسمى بـ CSSOM (CSS Object Model)، وهو مشابه للـ DOM ولكنه خاص بتنسيقات الصفحة. يندمج الـ DOM مع الـ CSSOM لتكوين ما يسمى بـ Render Tree التي تظهر للمستخدم.


خاتمة

باختصار، الـ DOM هو اللغة التي يفهم بها المتصفح كود الـ HTML الخاص بك ليحوله إلى واجهة تفاعلية. فهمك لكيفية تمثيله في الذاكرة يجعلك مبرمجاً أفضل، قادراً على كتابة أكواد أكثر كفاءة وسرعة. تذكر دائماً أن الـ DOM ليس مجرد كود، بل هو كائن حي يتنفس داخل الذاكرة مع كل نقرة يقوم بها المستخدم.

🚀 ابدأ رحلتك مع كرياتيفو
وخد أول خطوة حقيقية نحو مستقبلك في البرمجة
📱 ابعتلنا علي واتساب
💬 ابعتلنا علي فيسبوك

الكلمات المفتاحية

ما هو DOM شرح Document Object Model شجرة الـ DOM تعلم JavaScript كورس تطوير الويب تمثيل HTML في الذاكرة أنواع الـ Nodes في HTML الفرق بين DOM و HTML كيف يعمل المتصفح برمجة واجهات المستخدم DOM Tree شرح التلاعب بالـ DOM الفرق بين Real DOM و Virtual DOM تحسين أداء الموقع دروس HTML و CSS هيكلة صفحات الويب JavaScript DOM API مسار تعلم البرمجة واجهة برمجة تطبيقات المستند العقد في HTML

مقالات مشابهة

برمجة

كيف يقرأ المتصفح ملف HTML ويحوله إلى صفحة مرئية؟

تعرف على كيف يقرأ المتصفح ملف HTML ويحوله إلى صفحة مرئية خطوة بخطوة، بداية من تحليل الأكواد وإنشاء DOM وحتى عرض الصفحة النهائية، مع شرح دور CSS وJavaScript وتأثير ذلك على سرعة الموقع والسيو.

14 May, 2026
تفاصيل المقال
تصميم

كيف يعمل CSS داخل المتصفح؟

كيف يعمل CSS داخل المتصفح خطوة بخطوة من لحظة كتابة الكود وحتى ظهور الصفحة النهائية. يوضح المراحل التي يمر بها المتصفح مثل بناء DOM وCSSOM ودمجهم في شكل الصفحة النهائي. كما يساعدك على فهم أعمق لكيفية عرض وتصميم المواقع وتحسين أدائها بشكل أفضل.

18 Apr, 2026
تفاصيل المقال
تصميم

ما هو Virtual DOM ولماذا يجعل React أسرع؟

تعرف على Virtual DOM في React وكيف يساعد في تحسين الأداء وتسريع تحديث الواجهة مع شرح مبسط وأمثلة عملية.

26 Apr, 2026
تفاصيل المقال
برمجة

إزاي تكتب كود HTML يخلي الـ CSS أسهل بكتير وأنت بتنسق؟

تعلم كيف تكتب كود HTML احترافي يجعل عملية التنسيق بـ CSS أسرع وأسهل بكتير. اكتشف أسرار الهيكلة الصحيحة، استخدام الـ Semantic Tags، وكيفية تنظيم الكود لتقليل الأخطاء وتحسين أداء موقعك وسرعة تطويره للمبتدئين.

03 May, 2026
تفاصيل المقال
برمجة

ما هي نماذج HTML وكيف تجمع البيانات من المستخدم؟

تعرف على ما هي نماذج HTML وكيف تُستخدم لجمع البيانات من المستخدمين، مع شرح أهم عناصر النماذج وطرق إرسال البيانات وأفضل الممارسات لتصميم نماذج احترافية سهلة الاستخدام.

15 May, 2026
تفاصيل المقال
برمجة

كيف يتعامل HTML مع الروابط الداخلية والخارجية؟

تعرف على كيفية تعامل HTML مع الروابط الداخلية والخارجية، والفرق بينهما، وأهم استخداماتهما في تحسين تجربة المستخدم والسيو SEO، مع شرح مبسط لأفضل الممارسات والأخطاء الشائعة عند استخدام الروابط في صفحات الويب.

11 May, 2026
تفاصيل المقال