نود أن ننتقل بممر الأصول في Discourse إلى استخدام EmberCLI. يُعد EmberCLI الطريقة المعيارية لتطوير تطبيقات Ember، وقد كان نهج Discourse مصدر إرباك طويل الأمد للأشخاص الذين يقتربون من مشروعنا بخلفية في Ember.js.
الخلفية
توجد Discourse منذ فترة طويلة بما يكفي لتسبق ظهور EmberCLI، وفي الواقع، كان استخدام شيء مثل ممر الأصول في Rails يُعتبر أفضل ممارسة في ذلك الوقت. على مر السنين، قمنا بإضافة المزيد والمزيد إلى تطبيق Ember الخاص بنا، بما في ذلك وحدات JavaScript وBabel.js وخرائط المصادر، لكننا نشعر أننا دفعنا ممر الأصول في Rails إلى أقصى حد ممكن. بعض الميزات الجديدة مثل async/await يصعب دمجها جدًا في نظامنا الحالي.
في الإصدار الرئيسي التالي من Discourse (2.5)، نخطط للانتقال إلى EmberCLI. سيستغرق هذا الأمر وقتًا طويلاً، لذا سنبذل قصارى جهدنا للحفاظ على عمل نسختين من تطبيق الواجهة الأمامية. يمكن للأشخاص المغامرين الاختيار للانضمام إلى EmberCLI، بينما يمكن للآخرين الاستمرار في استخدام التطبيق “كما هو” حتى نصل إلى نقطة نشعر فيها بأن الأمور مستقرة.
خارطة الطريق
نقل الأنماط الحالية إلى أنماط EmberCLI: لقد قمنا بالفعل ببعض من هذا في الإصدار 2.4. الهدف الأساسي هو نقل كود JavaScript لدينا ببطء إلى تنسيق يتطابق بشكل وثيق مع ما يتوقعه Ember-CLI. يتضمن ذلك:
استيراد كل شيء من المسارات نفسها
استخدام امتدادات مختلفة لـ Handlebars الخام / Handlebars الخاص بـ Ember
التخلص من التحذيرات المتعلقة بخصائص الحساب
التحول إلى وحدة Location الخاصة بـ Ember بدلاً من وحدتنا المخصصة
تشغيل Discourse عبر EmberCLI: قد يتضمن ذلك اكتشاف مشكلات جديدة مع إصلاح الأشياء في (1) وتكرار نفس النهج.
دمج مكونات السمات والإضافات: سنحتاج إلى إجراء بعض التحقيقات هنا لدمج الامتدادات الحالية لـ Discourse بسلاسة قدر الإمكان.
تحديد أي اختناقات في الأداء (أو غيرها): يجب أن يكون النظام سريعًا مثل نظامنا الحالي أو أسرع.
وضع جدول زمني للانتقال: يجب أن يكون سخيًا حتى يتاح للناس وقتًا طويلًا لتجربة الميزة وتقديم ملاحظات.
المزايا
عند اكتمال الانتقال بالكامل، ستعمل العديد من الأشياء التي تتعطل حاليًا أو يصعب القيام بها، مثل خرائط المصادر وasync/await، بشكل طبيعي.
بالإضافة إلى ذلك، بالنسبة لبعض المطورين الذين يرغبون فقط في العمل على أجزاء الواجهة الأمامية من Discourse، قد نتمكن من إعداد الأشياء بحيث يمكنهم تشغيل EmberCLI فقط موجهًا إلى خادم مثل try.discourse.org لاختبار تطبيق الواجهة الأمامية دون الحاجة إلى تشغيل خادم Ruby/Rails كامل مع Redis/Postgres.
سيكون هذا مشروعًا كبيرًا، لكن في النهاية سيكون تطبيقنا أفضل بكثير بسببه!
هل تخطط أيضًا في النهاية لجعل إضافات Discourse تصبح إضافات Rails؟ سيكون ذلك رائعًا! هناك العديد من المولدات التي يوفرها Rails جاهزة للإضافات. كما أن Discourse هو أكبر تطبيق مفتوح المصدر مبني على Rails، لذا ربما يكون من الجيد دمج الجهود.
سنبدأ في دمج بعض التغييرات الكبيرة في فحص القوالب. يجب أن تعمل معظمها بشكل طبيعي، لكن يُتوقع حدوث بعض الانحرافات. سنبذل قصارى جهدنا لإصلاحها بسرعة، لذا يرجى الإبلاغ عن أي شيء غير عادي، مثل عدم تحديث عناصر واجهة المستخدم عندما يجب أن يحدث ذلك.
اليوم دمجت التزامن كبير يعيد تسمية جميع ملفات .js.es6 في مجلد app/assets/javascripts/discourse لتصبح .js. هذه خطوة نحو مطابقة الطريقة القياسية لـ Ember CLI في تسمية الملفات.
الخطوة التالية هي دعم الإضافات لترجمة .js، وإيقاف دعم .es6.