OOZOU
تواصلوا معنا
العودة إلى TIL
javascript

كيف تنشئون عنصر HTML مع خصائصه في سطر واحد في JavaScript

13 أكتوبر 2020

عند العمل على مشروع JavaScript، من الشائع إنشاء عناصر HTML ديناميكيًا. وعادةً ما تُستخدم عدة أسطر من الكود لإنشاء العنصر وتعيين خصائصه المتعددة كلٍّ على حدة، كما في المثال التالي:

const a = document.createElement('a')
a.setAttribute('class', 'foo bar')
a.setAttribute('id', 'id')
a.setAttribute('innerHTML', 'Hello World!')
a.setAttribute('href', 'https://www.google.com/')

ورغم أن هذا الأسلوب يؤدي الغرض، فإن تعيين كل خاصية على حدة قد يكون مرهقًا، خاصةً عند العمل على قواعد كود كبيرة. كما يؤدي إلى كود متضخم يصعّب صيانة قاعدة الكود وتصحيح أخطائها.

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

إنشاء عناصر HTML في سطر واحد باستخدام Object.assign()

تتيح لكم الدالة Object.assign() في JavaScript إنشاء عنصر HTML وتعيين خصائص متعددة له دفعة واحدة. وبذلك يمكنكم تبسيط الكود وتقليل التكرار الناتج عن تعيين الخصائص كلٍّ على حدة.

إليكم طريقة تحقيق ذلك:

Object.assign(document.createElement('a'), {
  id: 'id',
  class: 'whatever class',
  href: 'https://www.google.com/',
  innerHTML: 'This is a link'
});

بهذا السطر الواحد، تنشئون وسم رابط (<a>) وتعيّنون خصائصه id وclass وhref وinnerHTML دفعة واحدة. ولا يوفّر ذلك الوقت فحسب، بل يجعل الكود أنظف وأسهل في الصيانة.

شرح الكود:

  • Object.assign() دالة تنسخ جميع الخصائص من كائن مصدر واحد أو أكثر إلى كائن هدف. وفي هذه الحالة، الهدف هو document.createElement('a') الذي ينشئ عنصر رابط جديدًا.
  • في المعامل الثاني لـ Object.assign()، تمرّرون كائنًا يحتوي على الخصائص التي تريدون تعيينها للعنصر.
  • يقابل كل مفتاح في الكائن خاصية HTML (مثل id وclass وhref وغيرها)، بينما تمثل القيمة قيمة تلك الخاصية.

مزايا استخدام Object.assign()

  • كود أنظف: يمكنكم تعيين خصائص متعددة في سطر واحد، مما يقلل تكرار الكود.
  • سهولة الصيانة: يجعل هذا الأسلوب الكود أسهل في الصيانة. فبما أن الخصائص تُعيَّن معًا، تصبح إدارتها في مكان واحد أبسط.
  • وضوح أكبر: بتجميع تعيينات الخصائص، يصبح الكود أوضح ويتطلب أسطرًا أقل.

متى تستخدمون Object.assign()

رغم أن هذه الطريقة مفيدة في معظم الحالات، فإنها مفيدة بشكل خاص عندما:

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

بدائل أخرى لإنشاء العناصر مع خصائصها في سطر واحد

استخدام عامل النشر (Spread) والتفكيك (Destructuring)

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

const attributes = {
  id: 'id',
  class: 'foo bar',
  href: 'https://www.google.com/',
  innerHTML: 'Hello World!'
};

const a = Object.assign(document.createElement('a'), {...attributes});

هنا نخزّن الخصائص في كائن (attributes)، ونستخدم عامل النشر (...attributes) لتعيين الخصائص عند إنشاء العنصر. هذه الطريقة مرنة، وتسهّل إعادة استخدام مجموعة الخصائص نفسها لعناصر أخرى، أو تخصيص الخصائص ديناميكيًا.

استخدام دالة مخصصة
يمكنكم أيضًا إنشاء دالة قابلة لإعادة الاستخدام لإنشاء العناصر مع خصائصها في سطر واحد.

function createElement(tag, attributes) {
  return Object.assign(document.createElement(tag), attributes);
}

const a = createElement('a', {
  id: 'id',
  class: 'foo bar',
  href: 'https://www.google.com/',
  innerHTML: 'Hello World!'
});

في هذا المثال، تستقبل الدالة createElement() وسيطين: اسم الوسم (مثل 'a' و'div' وغيرهما) وكائنًا يحتوي على الخصائص المطلوبة. ويمكن إعادة استخدام هذه الدالة في أي مكان من الكود، فيصبح أكثر نمطية (modular) وأسهل تحديثًا.

الخلاصة

قد يستغرق تعيين الخصائص على عنصر HTML كلٍّ على حدة وقتًا طويلًا ويؤدي إلى كود متكرر. أما استخدام Object.assign() فيتيح لكم إنشاء عنصر HTML وتعيين خصائص متعددة له في سطر واحد، مما يحسّن وضوح الكود وسهولة صيانته. كما يمكن لطرق أخرى، مثل استخدام عامل النشر أو دالة مخصصة، أن تساعد في تبسيط الكود وزيادة كفاءته.

بدمج هذه التقنيات في مشاريع JavaScript الخاصة بكم، ستتمكنون من كتابة كود أنظف وأسهل في الصيانة، وهو أمر مفيد بشكل خاص في تطبيقات الويب المعقدة حيث تكون الكفاءة عاملًا حاسمًا.


الأسئلة الشائعة

1. ما هي Object.assign() في JavaScript؟
Object.assign() دالة تنسخ جميع الخصائص القابلة للتعداد من كائن مصدر واحد أو أكثر إلى كائن هدف. وتُستخدم عادةً لدمج الكائنات أو تعيين خصائص على كائن بطريقة موجزة.

2. هل يمكن إنشاء عنصر HTML بخصائص متعددة في سطر واحد؟
نعم، باستخدام Object.assign() أو طرق مشابهة، يمكنكم إنشاء عنصر HTML وتعيين خصائص متعددة له في سطر واحد.

3. ما مزايا استخدام Object.assign() لتعيين خصائص HTML؟

يجعل استخدام Object.assign() الكود أنظف وأوضح وأسهل في الصيانة. فهو يقلل الحاجة إلى تعيين الخصائص كلٍّ على حدة، ويجمعها في سطر واحد.

4. هل يمكن استخدام Object.assign() مع ميزات JavaScript أخرى مثل عامل النشر؟
بالتأكيد! يمكنكم الجمع بين Object.assign() وعامل النشر أو حتى التفكيك لتعزيز وضوح الكود وقابليته لإعادة الاستخدام.

5. ما بدائل Object.assign() لتعيين الخصائص في سطر واحد؟
تشمل البدائل استخدام عامل النشر، أو التفكيك، أو إنشاء دالة مخصصة تغلّف منطق تعيين الخصائص على العنصر.


بتحسين كود JavaScript باستخدام طرق مثل Object.assign()، سترتقون بعملية التطوير لديكم، فتصبح أكثر كفاءة ويقل الكود النمطي المتكرر (boilerplate). ويتوافق هذا الأسلوب مع أفضل الممارسات الحديثة، ويضمن قابلية التوسّع وسهولة الصيانة لتطبيقات JavaScript الخاصة بكم.

المزيد حول javascript

javascript13 أكتوبر 2020

التعيين بالتفكيك (Destructuring) في JS

أمثلة بسيطة javascript const [a, b, ...c] = [10, 20, 100,200] // a= 10, b=20, c=[100,200] const { first, second } = { first: 1, second: 2 } // first = 1, second = 2

javascript13 أكتوبر 2020

بنية Flux بسيطة باستخدام Vue.js

في التطبيقات الصغيرة التي لا تحتاج إلا إلى نمط بسيط لإدارة الحالة، أستخدم دائمًا مكوّنًا واحدًا يحتفظ بحالة التطبيق، وهو الـ container. ويعمل هذا المكوّن كمصدر وحيد للحقيقة يرجع إليه التطبيق…

هل لديكم فكرة مشروع؟

يسعدنا أن نتعرّف على ما تبنونه.

ابدأوا المحادثةhello@oozou.com
OOZOU Logo

بانكوك · سنغافورة · هونغ كونغ

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

الخدمات

  • تطوير الويب
  • وكلاء الذكاء الاصطناعي والذكاء الاصطناعي التوليدي
  • تطوير تطبيقات الجوال
  • تحليلات البيانات وهندستها
  • تصميم تجربة المستخدم وواجهته (UX/UI) وتصميم المنتجات
  • التحوّل الرقمي

الشركة

  • من نحن
  • الوظائف
  • المدونة
  • دراسات الحالة
  • عروض حية
  • تعلّمت اليوم
  • تواصل معنا

المزيد

  • القطاعات
  • شبكة الشركاء
© 2026 OOZOU. جميع الحقوق محفوظة.
سياسة الخصوصيةمدونة قواعد السلوكسياسة مكافحة الرشوة والفساد