إعادة تحميل سريعة لتطوير الإضافات؟

مرحبًا بالجميع. أعتذر إذا تم تناول هذا الموضوع من قبل (لم أجده):

تطوير إضافة لـ Discourse على جهازك المحلي يميل إلى أن يكون بطيئًا جدًا. يستغرق كل إعادة تحميل لتطبيقك الذي يعمل محليًا (لعرض تغييرات الكود) أكثر من 5 ثوانٍ. لذا، أقوم بإجراء تغيير في ملف HTML/HBS أو JS، ثم أحفظ الملف، وأضطر بعد ذلك لإعادة تحميل التطبيق [تعديل: تحديث المتصفح]، وانتظار أكثر من 5 ثوانٍ لعرض التغيير.

هل توجد طريقة لإجراء إعادة تحميل فورية (أي تحديث تلقائي للعرض المحلي) عند تطوير إضافات Discourse محليًا؟

يبدو أن ملفات CSS يتم تحديثها تلقائيًا، لكن ملفات HTML/HBS أو JS لا يتم ذلك.

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

إعجابَين (2)

مرحبًا يا رفاق،

يجب أن تحتاج فقط إلى إعادة تشغيل الخادم بثقة إذا تغيرت واجهة برمجة التطبيقات (API) الخاصة بك - أي كود Ruby on Rails الخاص بك.

إذا قمت بتعديل ملفات JavaScript أو HBS فقط، فيمكنك ببساطة تحديث المتصفح لاستلام التغييرات.

لاحظت أن تغييرات ملفات CSS لا تتطلب ذلك حتى! :slight_smile:

3 إعجابات

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

إذا كان عليّ إيقاف وإعادة تحميل الخادم (في حالة تغيير مثلاً ملف plugin.rb)، فإن ذلك يستغرق على الأرجح 60 ثانية.

إعادة التحميل الفوري هي بالطبع المعيار السائد عند التطوير مع العديد من التقنيات اليوم (أنا أكثر دراية بـ Angular، الذي يتبنى هذا المعيار)، وهي رائعة للتطوير. أعتقد أنه في Rails قد يكون ذلك ممكنًا عبر webpack (لكنني لست متأكدًا من ذلك). انطباعي هو أن إعادة التحميل الفوري غير متاحة لتطوير Discourse، لكن أردت التأكد لأن ذلك سيكون رائعًا لو كان متاحًا.

يجب عليك تحديث المتصفح لتحميل ملفات JavaScript المحدثة

إعجابَين (2)

سيتم إصدار هذا مع EmberCLI: Coming to a Discourse near you!

8 إعجابات

في الواقع، يمكنك استخدام Ember CLI مع النسخة الرئيسية من Discourse الآن للحصول على هذا السلوك!

6 إعجابات

يبدو ذلك رائعًا، شكرًا لك. لاستخدام هذا في التطوير المحلي، هل هناك أي شيء أحتاج إلى فعله بخلاف تنزيل أحدث إصدار من discourse من GitHub إلى جهاز الكمبيوتر الخاص بي؟

إعجاب واحد (1)

ستحتاج إلى مراجعة أحدث إصدار من Discourse، ثم القيام بشيء مثل هذا:

  1. بدء خادم API: rails s

  2. بدء خادم Ember:

    1. الدخول إلى المجلد الصحيح cd app/assets/javascript/discourse
    2. تثبيت الحزم yarn
    3. تشغيل Ember CLI: ember serve --proxy "http://localhost:3000"

بعد ذلك، يمكنك فتح http://localhost:4200 وسيتم تشغيلك عبر Ember CLI مع إعادة التحميل الفوري.

8 إعجابات

كنت متحمسًا لترقية مثيل 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، فإن هذه التغييرات تُعرض فقط على التطبيق الذي يعمل محليًا إذا قمت بتحديث المتصفح.

هل يجب علي فعل شيء آخر لجعل إعادة التحميل الفورية تعمل؟

إعجابَين (2)

مرحباً. هل تتوفر خاصية إعادة التحميل الفوري (hot-reload) مع ember-cli في Discourse؟ لا تزال لدي نفس المشكلة التي أشرت إليها في منشوري السابق. بعد اتباع تلك الخطوات، لا تزال خاصية إعادة التحميل الفوري غير فعالة (أي أنني ما زلت بحاجة إلى تحديث المتصفح لرؤية التغييرات في ملفات HTML وJavaScript، ولا يبدو أن مخرجات ember-cli في الطرفية تسجل أي شيء عندما أحفظ الملف بعد إجراء تغيير عليه).

لا تزال إعادة التحميل الفورية لا تعمل بالنسبة لي. هل هناك شيء آخر يجب القيام به بخلاف هذه الخطوات؟

ما أفعله هو:

./bin/rails s

في نافذة طرفية واحدة، و

./bin/ember_cli

في نافذة أخرى.

نعم، شكرًا لك. أنا أفعل ذلك أيضًا. هل تحصل على إعادة تحميل تلقائية (hot reloading) لملفات HTML وJS؟

هل تقصد ملفات hbs؟

نعم، لا أفهم ما يُعتقد أنه يُسمى “LiveReload” في المتصفح، رغم:

image

ووجود:

<script type="text/javascript" src="http://localhost:4200/_lr/livereload.js?port=4200&amp;host=localhost&amp;path=_lr/livereload"></script>

و

<script src="/ember-cli-live-reload.js" type="text/javascript"></script>

نعم، كنت أقصد ملفات HBS.

سأكون ممتنًا جدًا إذا تمكّنت من الحصول على إعادة التحميل الفورية (خاصة لملفات JavaScript). فعندما أكتب الكود في سياقات أخرى حيث تُعد إعادة التحميل الفورية معيارًا، فإنها تجعل عملية البرمجة أسرع وأكثر متعة.

إعجاب واحد (1)

بعض المعلومات الإضافية:

ember-cli/ember-cli-inject-live-reload: إضافة Ember CLI التي تحقن سكريبت إعادة التحميل المباشر في محتوى HTML (github.com)

" livereload.js يُنشئ اتصالًا عبر WebSocket عائدًا إلى Ember CLI. وهذا يسمح لـ Ember CLI بإشعار المتصفح بتحديث الصفحة بعد تغييرات جافا سكريبت أو التنسيقات."

أنا فضولي بشأن سبب تجاهل المتصفح لهذا - أتساءل عما إذا كان هناك خيار في المتصفح يتعلق بأمان الموقع؟

لست متأكدًا، لكنني تمكنت بالتأكيد من تفعيل إعادة التحميل المباشر في المتصفح في سياقات أخرى أو باستخدام أطر عمل أخرى. (لست متأكدًا بشأن Ember — لقد استخدمته فقط مع أشياء تتعلق بكتابة محتوى Discourse.)

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

إعجاب واحد (1)

إن وجود السكريبتات هو بلا شك دليل على النية، ولا شيء هنا يحدث بالصدفة؟

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

لمزيد من المعلومات حول livereload.js: livereload/livereload-js: كود جافا سكريبت لـ LiveReload يتواصل مع الخادم ويحقق إعادة التحميل (github.com)

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

إعجاب واحد (1)

يتم التعامل مع تحديث الصفحة تلقائيًا بواسطة ember CLI. في الوقت الحالي، يتم تجميع أصول السمات والإضافات وتقديمها بواسطة تطبيق Rails، وليس بواسطة ember CLI. لذلك، لا يتم تحديث الصفحة تلقائيًا عند إجراء تغييرات على السمات أو الإضافات.

قد يكون هذا شيئًا يمكننا تحسينه في المستقبل. ولكن حتى الآن، يُعتبر هذا السلوك متوقعًا.

5 إعجابات