تختار جميع أنظمة الإنشاء تقريبًا استخدام آلية المراقبة لحل مشكلة إنشاء ملفات ما بعد البناء بشكل متكرر أثناء التطوير. ومع ذلك ، في ظل آلية الساعة ، يتعين علينا تحمل مشكلة تعديل الكود لفترة طويلة ، واضطرار إلى شرب رشفة من الشاي بعد حفظ الكود قبل الانتعاش ورؤية التأثير. نحاول هنا استكشاف سبب عدم وجود رصاصة فضية ونحاول إيجاد حل أفضل لهذه المشكلة.
الحقائق القائمة على المراقبة
عند تعديل ملف ، يمكننا معرفة تعديلات الملفات التي قد تكون ناتجة عن تعديله ، لذلك فقط إعادة بناء هذه الملفات.
عادةً ، بالنسبة للملف A ، تكون العلاقة المقابلة دقيقة للغاية في بناء سيناريو مثل ملف B. ولكن في السيناريوهات الحقيقية ، غالبًا ما تكون عملية البناء بهذه البساطة. على سبيل المثال:
ملف A + File B (المشار إليه بواسطة الملف A) -> ملف C
في هذا السيناريو ، عند تعديل الملف B ، قد يكون من الصعب تحديد موقع الملفات التي تحتاج إلى إعادة تشغيل مهمة البناء ، لأن العديد من الملفات قد تشير إلى ملف B.
ما لم نقم بإنشاء شجرة التبعية ونقوم بتحديث شجرة التبعية في كل مرة يتم تحديث الملف ، وتشغيل إنشاء الملفات بناءً على شجرة التبعية الجديدة. ولكن هذا يتطلب كل مكون إضافي لتنفيذ هذه الآلية بمفرده وهو معرض للغاية للخطأ. لذلك ، في الواقع ، فإن آلية الساعة تعيد المهمة بأكملها. لذا ، مع زيادة المشروع ، ستصبح آلية الساعة أبطأ وأبطأ (لأن المزيد والمزيد من الملفات تحتاج إلى إعادة تشغيل العملية بأكملها ، حتى لو تم تقليل ذاكرة التخزين المؤقت عن طريق تقليل الوقت المطلوب للعملية بأكملها).
حل
SRC متاح مباشرة
Alloyteam & @ldjking ، ببساطة ضع SRC مباشرة ووضع مهام الإنشاء على جانب المتصفح ، أو حتى عدم البناء على الإطلاق. لا يمكن تعديل وتحديث في الوقت المناسب فحسب ، بل يمكن أيضًا تقليل استهلاك الوقت أثناء عملية التطوير. يعد البناء غير المتصل بالإنترنت مسؤولاً فقط عن مشكلات تحسين الأداء وليس لكفاءة التنمية.
يشمل الممثلون النموذجيون أقل ، رد فعل ، وما إلى ذلك ، ولكن هناك بعض المشاكل:
من الصعب تنفيذ طرق البناء الأنيقة على جانب المتصفح ، ومن الصعب توفير وظائف قوية لزيادة تكاليف التطوير. يمكن لمعظمهم تقديم البرامج النصية فقط بطريقة مماثلة لطريقة <type type = "text/less"> </style>.
أمر التنفيذ في وضع التطوير ليس بالضرورة هو نفس السيناريو الفعلي ، والذي قد يؤدي إلى أخطاء غير مرئية. على سبيل المثال ، يكون تنفيذ HTML مضمّنًا غير متزامن ، ولكن في وضع الإصدار متزامن ، مما يؤدي إلى أخطاء لا يمكن تفسيرها.
إن أداء تجميع المتصفح يقلق ، مثل إصدار JS من SASS ، وسرعة التجميع لا تطاق تقريبًا.
من الضروري الحفاظ على مجموعتين من أنظمة البناء عبر الإنترنت وغير المتصلة بالإنترنت ، مما يزيد من تكلفة تطوير الأدوات.
البناء الديناميكي للخادم المحلي
حقيقة واحدة هي: بدعم معقول للمواصفات ، يمكننا العودة إلى ملف الإدخال الذي طلبه المتصفح إلى الملف الذي تم إنشاؤه أثناء الملف. بهذه الطريقة يمكننا تشغيل عملية بناء ديناميكية.
من خلال إنشاء خادم محليًا ، دع الخادم يلتقط الطلب وإنشاءه بشكل ديناميكي في الخادم. طالما نعود إلى ملف الإدخال ، يمكننا رمي ملف الإدخال في خط الأنابيب المكون من المكونات الإضافية ، والإخراج هو الملف المطلوب من قبل المتصفح.
بهذه الطريقة يمكننا حل جميع المشكلات المذكورة أعلاه.