CodeOX Logo
CodeOX Logo
Vol. I — No. 1
المقالة المميزة
Sep 30, 2026

الجديد في إطار عمل جافاسكربت في أودو

تقرير من قبل

Faisal

الجديد في إطار عمل جافاسكربت في أودو
شكل 1. الجديد في إطار عمل جافاسكربت في أودو · تصوير أصلي لـ The Chronicle

إعداد: فيصل · Codeox Technologies

الصورة الكبيرة في سطر واحد

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

شريحة ملخّص من أودو نفسها: إعادة هيكلة كبيرة في جانب الموقع، وسلسلة مستمرة من التحسينات في جانب عميل الويب.
شريحة ملخّص من أودو نفسها: إعادة هيكلة كبيرة في جانب الموقع، وسلسلة مستمرة من التحسينات في جانب عميل الويب.

إطاران يعملان جنبًا إلى جنب

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

عميل الويب (تطبيقات الواجهة الخلفية مثل المحاسبة وإدارة العلاقات وإدارة المخزون) مبني على Owl، بينما يستخدم الموقع (المتجر الإلكتروني وصفحات الهبوط) نظامًا جديدًا وأخف يسمى «Interaction».
عميل الويب (تطبيقات الواجهة الخلفية مثل المحاسبة وإدارة العلاقات وإدارة المخزون) مبني على Owl، بينما يستخدم الموقع (المتجر الإلكتروني وصفحات الهبوط) نظامًا جديدًا وأخف يسمى «Interaction».

Owl هو نظام المكوّنات في أودو، ويشبه في فكرته React. يُستخدم لبناء التطبيقات التي نعمل عليها كل يوم: المبيعات والمحاسبة والمخزون وإدارة علاقات العملاء وغيرها. أما الموقع فيعمل بطريقة مختلفة: تُصيَّر الصفحات على الخادم أولًا، ثم تُضاف فوقها طبقة أخف من جافاسكربت لإضافة سلوكيات مثل النوافذ المنبثقة والشرائح وأزرار «أضف إلى السلة». ولأن الأمرين يعملان بطريقتين مختلفتين، احتاجت أودو دائمًا إلى مقاربتين منفصلتين، لكنها قلّصت الفجوة بينهما بشكل ملحوظ هذا العام.

تطبيقات الواجهة الخلفية (CRM والفوترة والمحاسبة ونقاط البيع) وميزات الموقع (المتجر الإلكتروني والاستبيانات) ترتبط جميعها بنفس الإطار الأساسي، لكن من أبواب مختلفة.
تطبيقات الواجهة الخلفية (CRM والفوترة والمحاسبة ونقاط البيع) وميزات الموقع (المتجر الإلكتروني والاستبيانات) ترتبط جميعها بنفس الإطار الأساسي، لكن من أبواب مختلفة.

إعادة بناء كاملة للموقع

كان هذا هو التغيير الأبرز. لسنوات اعتمد جانب الموقع في أودو على ما يسمى «Public Widgets»، وهي طريقة أقدم وأثقل لربط سلوك جافاسكربت بصفحات الويب. كانت تعمل، لكنها بدت منفصلة عن بقية كود أودو، مما جعل تنقل المطورين بين العمل على الموقع والعمل على الواجهة الخلفية أصعب. وقد استبدلت أودو Public Widgets بالكامل بنظام جديد خفيف يسمى «Interactions».

التغييرات الثلاثة الكبرى في الموقع: اختفاء Public Widgets، ومحرر HTML جديد، وإعادة بناء منشئ المواقع (Website Builder) باستخدام Owl.
التغييرات الثلاثة الكبرى في الموقع: اختفاء Public Widgets، ومحرر HTML جديد، وإعادة بناء منشئ المواقع (Website Builder) باستخدام Owl.

ما هي «Interactions»؟

يمكنك تخيّل Interactions كقريب أبسط وأخف من Owl، مصمَّم خصيصًا للمواقع. ليس الهدف منه استبدال واجهة تطبيق كاملة، بل إضافة سلوكيات صغيرة (مثل معالج نقر أو عدّاد أو إظهار/إخفاء عنصر) إلى صفحات ما زالت تُصيَّر على الخادم. الفائدة: أصبح كود الموقع وكود التطبيقات يتحدثان لغة متقاربة جدًا، ويمكن مستقبلًا أن تقدّم أودو صفحات خفيفة للغاية لا تحتاج إلى تحميل الإطار كاملًا.

توصف Interactions بأنها بديل خفيف و«تفاعلي» لـ Public Widgets، ويمكنه الوصول مباشرة إلى خدمات أودو الأساسية مثل الإشعارات.
توصف Interactions بأنها بديل خفيف و«تفاعلي» لـ Public Widgets، ويمكنه الوصول مباشرة إلى خدمات أودو الأساسية مثل الإشعارات.
هكذا يبدو الكود الجديد فعليًا: كلاس جافاسكربت حديث بقواعد واضحة لما يجب مراقبته في الصفحة (dynamicContent) وما يحدث عند الأحداث مثل النقر.
هكذا يبدو الكود الجديد فعليًا: كلاس جافاسكربت حديث بقواعد واضحة لما يجب مراقبته في الصفحة (dynamicContent) وما يحدث عند الأحداث مثل النقر.

منشئ مواقع أُعيد بناؤه

فوق نظام Interactions الجديد، أعادت أودو بناء منشئ المواقع (Website Builder) بالكامل بالسحب والإفلات، وهو الأداة التي يصمم بها العملاء صفحاتهم، وذلك باستخدام Owl. شارك في هذا العمل نحو 30 مطورًا. والخبر الجيد لنا أن التقنية الأساسية تغيّرت، ولوحة الخيارات لها صياغة جديدة للمطورين، لكن الـ snippets المخصصة الحالية (اللبنات التي يستخدمها العملاء) يفترض أن تستمر بالعمل دون الحاجة لإعادة بنائها.

واجهة منشئ المواقع الجديدة بعد إعادة بنائها بـ Owl: التجربة نفسها للمستخدم النهائي بالسحب والإفلات، مع كود حديث تحتها.
واجهة منشئ المواقع الجديدة بعد إعادة بنائها بـ Owl: التجربة نفسها للمستخدم النهائي بالسحب والإفلات، مع كود حديث تحتها.

الواجهة الخلفية (عميل الويب): تغييرات كبيرة أقل، ومكاسب هادئة أكثر

على عكس الموقع، لم يتغير عميل الويب الأساسي، وهو الجزء الذي تعمل عليه المبيعات والمحاسبة والمخزون وكل تطبيقات الواجهة الخلفية، كثيرًا في الظاهر. وأكدت أودو أن Owl نفسه شهد أقل من 20 commit طوال العام. وهذا خبر جيد لنا: فهو يعني أن تخصيصاتنا ووحداتنا من غير المرجح أن تتعطل بسبب هذه الطبقة. بدلًا من ذلك، ذهب الجهد الحقيقي إلى جعل أودو أسرع وأكثر مرونة، خاصة في الاستخدام دون اتصال.

التخزين المؤقت و«وضع عدم الاتصال»

تبني أودو بهدوء نظام تخزين مؤقت (caching) يتيح للتطبيق تذكّر البيانات التي جلبها سابقًا بدل الانتظار دائمًا للخادم. يمكن للمطورين الآن تحديد استدعاءات بيانات معينة ليتم تخزينها مؤقتًا، إما في الذاكرة (RAM) أو على القرص، واختيار وتيرة تحديث هذا التخزين.

نظرة على الكود: يمكن للمطورين الآن تحديد أي طلب بيانات ليُخزَّن مؤقتًا، واختيار مكان التخزين (الذاكرة أو القرص)، وتحديد وتيرة تحديثه.
نظرة على الكود: يمكن للمطورين الآن تحديد أي طلب بيانات ليُخزَّن مؤقتًا، واختيار مكان التخزين (الذاكرة أو القرص)، وتحديد وتيرة تحديثه.

شاشات تبدو أسرع (العرض التفاؤلي)

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

«العرض التفاؤلي» (Optimistic rendering): اعرض ما لديك أولًا، واجلب أحدث البيانات في الخلفية، ولا تحدّث الشاشة إلا إذا تغيّرت البيانات فعلًا.
«العرض التفاؤلي» (Optimistic rendering): اعرض ما لديك أولًا، واجلب أحدث البيانات في الخلفية، ولا تحدّث الشاشة إلا إذا تغيّرت البيانات فعلًا.

تغييرات صغيرة يسهل أن تحبها

إلى جانب إعادة البناء الكبيرة، هناك عدة تحسينات أصغر تستحق الإشارة لأن العملاء والمستخدمين سيلاحظونها مباشرة.

إضافات أخرى في الإطار هذا العام: دعم الترجمات الخاصة بكل وحدة، وتوجيهات قوالب مخصصة للمطورين المتقدمين، وأدوات مطوّر أفضل.
إضافات أخرى في الإطار هذا العام: دعم الترجمات الخاصة بكل وحدة، وتوجيهات قوالب مخصصة للمطورين المتقدمين، وأدوات مطوّر أفضل.
  • النقر بالزر الأوسط / Ctrl+نقر يعمل الآن بشكل صحيح في كل الواجهة، مثل فتح مهمة من عرض المشاريع في تبويب جديد، وهو أمر لم يكن ممكنًا قبل أودو 19.
  • نوافذ منبثقة بنمط bottom sheet على الجوال: تُفتح النوافذ المنبثقة على الجوال افتراضيًا كـ«bottom sheet» تنزلق من أسفل الشاشة، وهو نمط أنسب بكثير للهواتف.
  • إزالة jQuery من كود الموقع المعاد بناؤه. ما زالت مضمّنة تقنيًا للتوافق مع الإصدارات السابقة، لكن أي كود مخصص كتبناه ويعتمد عليها سيحتاج إلى مراجعة في مرحلة ما مستقبلًا.
  • «لغة تواريخ» مصغّرة للمرشحات: يمكن كتابة المرشحات كتعبيرات بسيطة مثل "today" أو "-monday" أو "now -5M" بدلًا من كود معقد، مما يجعلها أسهل في القراءة والإعداد.
  • نقطة نهاية /doc جديدة توفر مرجعًا يمكن تصفحه ومحدَّثًا دائمًا لكل نموذج وحقل في نسخة أودو معينة، وهو مفيد عند تحديد نطاق التكاملات أو كتابة التوثيق التقني للعملاء.
النقر بالزر الأوسط أو Ctrl+نقر يفتح السجلات الآن في تبويب جديد بشكل موثوق في كل الواجهة، وهو تغيير صغير لكنه مرحَّب به جدًا في الاستخدام اليومي.
النقر بالزر الأوسط أو Ctrl+نقر يفتح السجلات الآن في تبويب جديد بشكل موثوق في كل الواجهة، وهو تغيير صغير لكنه مرحَّب به جدًا في الاستخدام اليومي.
على الجوال، تنزلق القوائم والمرشحات الآن من أسفل الشاشة كـ«bottom sheet» بدلًا من النافذة العائمة، وهو إحساس أقرب لتطبيقات الجوال.
على الجوال، تنزلق القوائم والمرشحات الآن من أسفل الشاشة كـ«bottom sheet» بدلًا من النافذة العائمة، وهو إحساس أقرب لتطبيقات الجوال.
jQuery لم تختفِ تمامًا، لكنها لم تعد اعتمادًا أساسيًا في كود الموقع المعاد بناؤه.
jQuery لم تختفِ تمامًا، لكنها لم تعد اعتمادًا أساسيًا في كود الموقع المعاد بناؤه.
يمكن الآن كتابة المرشحات والتواريخ بلغة بسيطة بدلًا من التعبيرات المعقدة، وهو تحسين صغير يسهّل على من يضبط العروض والمرشحات المخصصة.
يمكن الآن كتابة المرشحات والتواريخ بلغة بسيطة بدلًا من التعبيرات المعقدة، وهو تحسين صغير يسهّل على من يضبط العروض والمرشحات المخصصة.
نقطة النهاية /doc الجديدة توفر مرجعًا حيًا يمكن تصفحه لكل نموذج وحقل، وهي مفيدة في تحديد النطاق التقني وكتابة التوثيق.
نقطة النهاية /doc الجديدة توفر مرجعًا حيًا يمكن تصفحه لكل نموذج وحقل، وهي مفيدة في تحديد النطاق التقني وكتابة التوثيق.

لماذا يهمنا هذا

في عملنا اليومي على المشاريع، الخلاصات العملية هي:

  • ينبغي أن تستمر الـ snippets والتخصيصات الحالية للموقع بالعمل، لكن أي وحدة مخصصة ترتبط بنظام Public Widget القديم أو تعتمد على jQuery في طبقة الموقع ستحتاج إلى مراجعة عندما نعود إلى تلك المشاريع.
  • تخصيصات الواجهة الخلفية (معظم عملنا: CRM والمحاسبة والمخزون وMRP) تقف على أساس أكثر استقرارًا هذا العام، لأن Owl نفسه تغيّر قليلًا جدًا.
  • العملاء الذين يستخدمون إصدارات أودو الأحدث سيلاحظون واجهة أسرع وأكثر ملاءمة للجوال دون أي جهد إضافي منا.
  • قد توفر نقطة النهاية /doc الجديدة وقتًا حقيقيًا أثناء جمع المتطلبات وتحديد النطاق التقني في المشاريع الجديدة.

معادلة التوازن الصعبة

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

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

الخلاصة

إصدار هذا العام هو في الحقيقة قصة نصفين: إعادة بناء كبيرة من الصفر لتقنية الموقع ومنشئ الصفحات (Interactions ومنشئ المواقع الجديد)، يقابلها عام أهدأ وأكثر تحفظًا لإطار الواجهة الخلفية الأساسي ركّز على السرعة والتخزين المؤقت وتحسينات صغيرة في سهولة الاستخدام. وبالنسبة لعملائنا، يعني ذلك تجربة أسرع وأحدث مع أقل قدر من الإرباك للتخصيصات الحالية، مع الانتباه أساسًا إلى أي كود قديم في طبقة الموقع اعتمد على Public Widgets أو jQuery.

الجديد في إطار عمل جافاسكربت في أودو