مرحبًا بالجميع. أعتذر إذا تم تناول هذا الموضوع من قبل (لم أجده):
تطوير إضافة لـ Discourse على جهازك المحلي يميل إلى أن يكون بطيئًا جدًا. يستغرق كل إعادة تحميل لتطبيقك الذي يعمل محليًا (لعرض تغييرات الكود) أكثر من 5 ثوانٍ. لذا، أقوم بإجراء تغيير في ملف HTML/HBS أو JS، ثم أحفظ الملف، وأضطر بعد ذلك لإعادة تحميل التطبيق [تعديل: تحديث المتصفح]، وانتظار أكثر من 5 ثوانٍ لعرض التغيير.
هل توجد طريقة لإجراء إعادة تحميل فورية (أي تحديث تلقائي للعرض المحلي) عند تطوير إضافات Discourse محليًا؟
يبدو أن ملفات CSS يتم تحديثها تلقائيًا، لكن ملفات HTML/HBS أو JS لا يتم ذلك.
أتحدث هنا عن تحديث المتصفح، وما إذا كان إعادة التحميل الفوري متاحًا لتجنب الاضطرار إلى ذلك. فعملية تحديث المتصفح هي التي تستغرق أكثر من 5 ثوانٍ لعرض أي تغيير.
إذا كان عليّ إيقاف وإعادة تحميل الخادم (في حالة تغيير مثلاً ملف plugin.rb)، فإن ذلك يستغرق على الأرجح 60 ثانية.
إعادة التحميل الفوري هي بالطبع المعيار السائد عند التطوير مع العديد من التقنيات اليوم (أنا أكثر دراية بـ Angular، الذي يتبنى هذا المعيار)، وهي رائعة للتطوير. أعتقد أنه في Rails قد يكون ذلك ممكنًا عبر webpack (لكنني لست متأكدًا من ذلك). انطباعي هو أن إعادة التحميل الفوري غير متاحة لتطوير Discourse، لكن أردت التأكد لأن ذلك سيكون رائعًا لو كان متاحًا.
يبدو ذلك رائعًا، شكرًا لك. لاستخدام هذا في التطوير المحلي، هل هناك أي شيء أحتاج إلى فعله بخلاف تنزيل أحدث إصدار من discourse من GitHub إلى جهاز الكمبيوتر الخاص بي؟
كنت متحمسًا لترقية مثيل Discourse المحلي الخاص بي، وأعمل الآن بإصدار 2.8 محليًا. لكنني لا أستطيع بعد جعل إعادة التحميل الفورية (hot reload) تعمل للتغييرات في ملفات HTML وJavaScript.
إليك كيف أقوم بتشغيل الأشياء:
أدخل مجلد discourse محليًا
$ redis-server //يبدأ الخادم
$ rails s//يبدأ تطبيق Rails
$ yarn//قم بتشغيل هذا مرة واحدة فقط، كما أتوقع
$ bin/ember-cli//يبدأ Ember CLI. لقد أعطاني الأمر ember serve --proxy "http://localhost:3000" أخطاءً لسبب ما
نجح هذا في تشغيل التطبيق على localhost:4200.
لقد أضفت إضافة (plugin) إلى مثيل Discourse المحلي، والتي تُعرض بنجاح على localhost:4200. ومع ذلك، إذا قمت بإجراء تغييرات على ملفات HTML أو JavaScript، فإن هذه التغييرات تُعرض فقط على التطبيق الذي يعمل محليًا إذا قمت بتحديث المتصفح.
هل يجب علي فعل شيء آخر لجعل إعادة التحميل الفورية تعمل؟
مرحباً. هل تتوفر خاصية إعادة التحميل الفوري (hot-reload) مع ember-cli في Discourse؟ لا تزال لدي نفس المشكلة التي أشرت إليها في منشوري السابق. بعد اتباع تلك الخطوات، لا تزال خاصية إعادة التحميل الفوري غير فعالة (أي أنني ما زلت بحاجة إلى تحديث المتصفح لرؤية التغييرات في ملفات HTML وJavaScript، ولا يبدو أن مخرجات ember-cli في الطرفية تسجل أي شيء عندما أحفظ الملف بعد إجراء تغيير عليه).
سأكون ممتنًا جدًا إذا تمكّنت من الحصول على إعادة التحميل الفورية (خاصة لملفات JavaScript). فعندما أكتب الكود في سياقات أخرى حيث تُعد إعادة التحميل الفورية معيارًا، فإنها تجعل عملية البرمجة أسرع وأكثر متعة.
" livereload.js يُنشئ اتصالًا عبر WebSocket عائدًا إلى Ember CLI. وهذا يسمح لـ Ember CLI بإشعار المتصفح بتحديث الصفحة بعد تغييرات جافا سكريبت أو التنسيقات."
أنا فضولي بشأن سبب تجاهل المتصفح لهذا - أتساءل عما إذا كان هناك خيار في المتصفح يتعلق بأمان الموقع؟
لست متأكدًا، لكنني تمكنت بالتأكيد من تفعيل إعادة التحميل المباشر في المتصفح في سياقات أخرى أو باستخدام أطر عمل أخرى. (لست متأكدًا بشأن Ember — لقد استخدمته فقط مع أشياء تتعلق بكتابة محتوى Discourse.)
أود معرفة ما إذا كان من المتوقع أن تعمل إعادة التحميل المباشر. يبدو أن الإجابة بنعم، بناءً على النقاش السابق. في هذه الحالة، أتساءل ما إذا كان فريق Discourse يستخدم إعادة التحميل المباشر، وما إذا كانوا يقومون بشيء لا أقوم به أنا.
يتم التعامل مع تحديث الصفحة تلقائيًا بواسطة ember CLI. في الوقت الحالي، يتم تجميع أصول السمات والإضافات وتقديمها بواسطة تطبيق Rails، وليس بواسطة ember CLI. لذلك، لا يتم تحديث الصفحة تلقائيًا عند إجراء تغييرات على السمات أو الإضافات.
قد يكون هذا شيئًا يمكننا تحسينه في المستقبل. ولكن حتى الآن، يُعتبر هذا السلوك متوقعًا.