سؤال

لدي رمز مثل ما يلي

define("ModuleA", ["InitialDependency"], function (initDep){
   return {};
});


define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
   return {};
});

يتم تعريف كل وحدة من هذه الوحدات في ملفات منفصلة "ModuleA.js" و"Moduleb.js" و"InitialDependency.js" و"OtherDependency.js".

يتم تحميل هذه الوحدات بالتسلسل في طلبي.يتم تحميل ModuleB دائمًا بعد ModuleA.هذا يعني أنه في مرحلة التحسين لا أريد دمج البرنامج النصي الخاص بـ ModuleA في البرنامج النصي المدمج لـ ModuleB.أريد ما يلي

يتضمن ModuleA.built.js

  • التبعية الأولية
  • الوحدة أ

يتضمن ModuleB.built.js

  • تبعيات أخرى
  • الوحدة ب

لا أريدهم جميعًا في نفس الملف ولكن قد لا يتم تحميل ModuleB أبدًا.

يمكنني إنشاء برنامج نصي لكلا الوحدتين ولكن هذا سيستغرق وقتًا طويلاً نظرًا لأن لدي عددًا لا بأس به من الوحدات في مشروعي وأرغب في إنشاء برنامج نصي من شأنه أن يبني الكثير منها في وقت واحد.

ما الذي أحتاج إلى معرفته لإنشاء برنامج نصي لبناء كل من هاتين الوحدتين (والمزيد التي تتبع نفس نمط التبعية)؟

هل كانت مفيدة؟

المحلول

لتحقيق ذلك، عليك أن تلعب مع modules خيار التكوين.

يمكن أن يبدو مثل هذا:

{
    modules: [
        {
            name: "ModuleA",
            include: [],
            exclude: []
        },
        {
            name: "ModuleB",
            exclude: [
                "moduleA"
            ]
        }
    ]
}

يوجد مثال مماثل للإعداد بواسطة جيمس هنا: https://github.com/requirejs/example-multipage

بالطبع، من خلال بناء هذه الوحدات بشكل منفصل، قد ينتهي بك الأمر إلى الحاجة إلى تحديث المسارات.إذا كان الأمر كذلك، فإن أفضل طريقة هي إنشاء ملف يحتوي على ملف require.config اتصل بإعدادات خاصة لتطبيقك الذي تم إنشاؤه وتضمين هذا التكوين بدلاً من التكوين المعتاد.ولكن إذا قمت بتعيين التبعيات بطريقة منفصلة جيدة، فمن المحتمل أن تكون على ما يرام.وبطريقة "الفصل الجيد"، أعني أنه إذا moduleA هو البرنامج النصي الأساسي، فلا ينبغي أن يحتوي على تبعيات محملة به moduleB - ولكن أعتقد أن هذا هو المنطق السليم!

ملاحظة حول الوحدات المتلألئة:نظرًا لأن تكوين shimmed يعمل فقط عند تحميل الملفات وبواسطة r.js لطلب المكونات الإضافية، تأكد من عدم تضمين وحدة shim من دون تبعيتها إذا لم تكن متأكدًا بنسبة 100% من أنه سيتم تحميلها من قبل.مزيد من المعلومات هنا: https://github.com/requirejs/example-multipage-shim

نأمل أن تكون هذه المساعدة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top