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

إعداد: فيصل · Codeox Technologies
الصورة الكبيرة في سطر واحد
أعادت أودو بناء الواجهة الأمامية للموقع بالكامل تقريبًا من الصفر (الجزء الذي يشغّل المتجر الإلكتروني والنماذج وبناء الصفحات)، بينما بقي إطار العمل الأساسي للواجهة الخلفية مستقرًا في معظمه مع الكثير من التحسينات الصغيرة المفيدة، خاصة في السرعة ودعم العمل دون اتصال.
إطاران يعملان جنبًا إلى جنب
يظن كثيرون أن أودو تملك إطار جافاسكربت واحدًا اسمه Owl، وهذا ليس دقيقًا تمامًا. في الواقع هناك نظامان مختلفان يعملان معًا، وفهم هذا الفرق يفسّر لماذا تغيّرت أشياء كثيرة هذا العام بينما لم يتغيّر غيرها تقريبًا.
Owl هو نظام المكوّنات في أودو، ويشبه في فكرته React. يُستخدم لبناء التطبيقات التي نعمل عليها كل يوم: المبيعات والمحاسبة والمخزون وإدارة علاقات العملاء وغيرها. أما الموقع فيعمل بطريقة مختلفة: تُصيَّر الصفحات على الخادم أولًا، ثم تُضاف فوقها طبقة أخف من جافاسكربت لإضافة سلوكيات مثل النوافذ المنبثقة والشرائح وأزرار «أضف إلى السلة». ولأن الأمرين يعملان بطريقتين مختلفتين، احتاجت أودو دائمًا إلى مقاربتين منفصلتين، لكنها قلّصت الفجوة بينهما بشكل ملحوظ هذا العام.
إعادة بناء كاملة للموقع
كان هذا هو التغيير الأبرز. لسنوات اعتمد جانب الموقع في أودو على ما يسمى «Public Widgets»، وهي طريقة أقدم وأثقل لربط سلوك جافاسكربت بصفحات الويب. كانت تعمل، لكنها بدت منفصلة عن بقية كود أودو، مما جعل تنقل المطورين بين العمل على الموقع والعمل على الواجهة الخلفية أصعب. وقد استبدلت أودو Public Widgets بالكامل بنظام جديد خفيف يسمى «Interactions».
ما هي «Interactions»؟
يمكنك تخيّل Interactions كقريب أبسط وأخف من Owl، مصمَّم خصيصًا للمواقع. ليس الهدف منه استبدال واجهة تطبيق كاملة، بل إضافة سلوكيات صغيرة (مثل معالج نقر أو عدّاد أو إظهار/إخفاء عنصر) إلى صفحات ما زالت تُصيَّر على الخادم. الفائدة: أصبح كود الموقع وكود التطبيقات يتحدثان لغة متقاربة جدًا، ويمكن مستقبلًا أن تقدّم أودو صفحات خفيفة للغاية لا تحتاج إلى تحميل الإطار كاملًا.
منشئ مواقع أُعيد بناؤه
فوق نظام Interactions الجديد، أعادت أودو بناء منشئ المواقع (Website Builder) بالكامل بالسحب والإفلات، وهو الأداة التي يصمم بها العملاء صفحاتهم، وذلك باستخدام Owl. شارك في هذا العمل نحو 30 مطورًا. والخبر الجيد لنا أن التقنية الأساسية تغيّرت، ولوحة الخيارات لها صياغة جديدة للمطورين، لكن الـ snippets المخصصة الحالية (اللبنات التي يستخدمها العملاء) يفترض أن تستمر بالعمل دون الحاجة لإعادة بنائها.
الواجهة الخلفية (عميل الويب): تغييرات كبيرة أقل، ومكاسب هادئة أكثر
على عكس الموقع، لم يتغير عميل الويب الأساسي، وهو الجزء الذي تعمل عليه المبيعات والمحاسبة والمخزون وكل تطبيقات الواجهة الخلفية، كثيرًا في الظاهر. وأكدت أودو أن Owl نفسه شهد أقل من 20 commit طوال العام. وهذا خبر جيد لنا: فهو يعني أن تخصيصاتنا ووحداتنا من غير المرجح أن تتعطل بسبب هذه الطبقة. بدلًا من ذلك، ذهب الجهد الحقيقي إلى جعل أودو أسرع وأكثر مرونة، خاصة في الاستخدام دون اتصال.
التخزين المؤقت و«وضع عدم الاتصال»
تبني أودو بهدوء نظام تخزين مؤقت (caching) يتيح للتطبيق تذكّر البيانات التي جلبها سابقًا بدل الانتظار دائمًا للخادم. يمكن للمطورين الآن تحديد استدعاءات بيانات معينة ليتم تخزينها مؤقتًا، إما في الذاكرة (RAM) أو على القرص، واختيار وتيرة تحديث هذا التخزين.
شاشات تبدو أسرع (العرض التفاؤلي)
بفضل عمل التخزين المؤقت هذا، تستطيع أودو الآن عرض الشاشة فورًا باستخدام آخر بيانات معروفة، وجلب البيانات الحقيقية في الخلفية، ثم تحديث الشاشة بهدوء فقط إذا تغيّر شيء فعلًا. عمليًا، يجعل هذا التطبيق يبدو أسرع بشكل ملحوظ رغم أن الطلب الفعلي ما زال يحدث. ومن المهم الإشارة إلى أن أودو أوضحت أن هذا ليس تحريرًا كاملًا دون اتصال بعد، فغالبًا لا يمكنك إنشاء السجلات أو تعديلها دون اتصال بالإنترنت اليوم. الهدف هو جعل الأمور تبدو سريعة وقابلة للاستخدام عندما يكون الاتصال بطيئًا أو ينقطع لوقت قصير.
تغييرات صغيرة يسهل أن تحبها
إلى جانب إعادة البناء الكبيرة، هناك عدة تحسينات أصغر تستحق الإشارة لأن العملاء والمستخدمين سيلاحظونها مباشرة.
- النقر بالزر الأوسط / Ctrl+نقر يعمل الآن بشكل صحيح في كل الواجهة، مثل فتح مهمة من عرض المشاريع في تبويب جديد، وهو أمر لم يكن ممكنًا قبل أودو 19.
- نوافذ منبثقة بنمط bottom sheet على الجوال: تُفتح النوافذ المنبثقة على الجوال افتراضيًا كـ«bottom sheet» تنزلق من أسفل الشاشة، وهو نمط أنسب بكثير للهواتف.
- إزالة jQuery من كود الموقع المعاد بناؤه. ما زالت مضمّنة تقنيًا للتوافق مع الإصدارات السابقة، لكن أي كود مخصص كتبناه ويعتمد عليها سيحتاج إلى مراجعة في مرحلة ما مستقبلًا.
- «لغة تواريخ» مصغّرة للمرشحات: يمكن كتابة المرشحات كتعبيرات بسيطة مثل "today" أو "-monday" أو "now -5M" بدلًا من كود معقد، مما يجعلها أسهل في القراءة والإعداد.
- نقطة نهاية /doc جديدة توفر مرجعًا يمكن تصفحه ومحدَّثًا دائمًا لكل نموذج وحقل في نسخة أودو معينة، وهو مفيد عند تحديد نطاق التكاملات أو كتابة التوثيق التقني للعملاء.
لماذا يهمنا هذا
في عملنا اليومي على المشاريع، الخلاصات العملية هي:
- ينبغي أن تستمر الـ snippets والتخصيصات الحالية للموقع بالعمل، لكن أي وحدة مخصصة ترتبط بنظام Public Widget القديم أو تعتمد على jQuery في طبقة الموقع ستحتاج إلى مراجعة عندما نعود إلى تلك المشاريع.
- تخصيصات الواجهة الخلفية (معظم عملنا: CRM والمحاسبة والمخزون وMRP) تقف على أساس أكثر استقرارًا هذا العام، لأن Owl نفسه تغيّر قليلًا جدًا.
- العملاء الذين يستخدمون إصدارات أودو الأحدث سيلاحظون واجهة أسرع وأكثر ملاءمة للجوال دون أي جهد إضافي منا.
- قد توفر نقطة النهاية /doc الجديدة وقتًا حقيقيًا أثناء جمع المتطلبات وتحديد النطاق التقني في المشاريع الجديدة.
معادلة التوازن الصعبة
كان مطورو أودو صريحين في أن هذا النوع من التغيير لا يخلو من المخاطر. كل إعادة كتابة قد تكسر تخصيصًا لدى شخص ما، لكن التوقف عن التطوير ليس خيارًا أيضًا، فالكود يجب أن يتطور ليبقى قابلًا للصيانة ويواصل إضافة الميزات التي يطلبها العملاء.
الخلاصة
إصدار هذا العام هو في الحقيقة قصة نصفين: إعادة بناء كبيرة من الصفر لتقنية الموقع ومنشئ الصفحات (Interactions ومنشئ المواقع الجديد)، يقابلها عام أهدأ وأكثر تحفظًا لإطار الواجهة الخلفية الأساسي ركّز على السرعة والتخزين المؤقت وتحسينات صغيرة في سهولة الاستخدام. وبالنسبة لعملائنا، يعني ذلك تجربة أسرع وأحدث مع أقل قدر من الإرباك للتخصيصات الحالية، مع الانتباه أساسًا إلى أي كود قديم في طبقة الموقع اعتمد على Public Widgets أو jQuery.