بنية تطبيقات JavaScript الكبيرة: الوحدات والواجهة والوسيط
إجابة أدي عثماني الكلاسيكية لتطبيقات JavaScript الكبيرة: وحدات مستقلة لا تتواصل إلا عبر وسيط.
من الأرشيف: شاركتُ عام 2014 مقال «Patterns For Large-Scale JavaScript Application Architecture» لـأدي عثماني (2011) على مدونتي القديمة. هذه الصفحة ملخص قصير بكلماتي، والمقال الأصلي ملك لكاتبه.
في 2011 وصف أدي عثماني كيف تمنع تطبيق JavaScript كبيرًا من أن يتحول إلى عقدة متشابكة. وملخصه في سطر: افصل أجزاء التطبيق بثلاثة أنماط.
- الوحدات (Modules): كل ميزة قطعة مستقلة لا تعرف شيئًا عن غيرها.
- الوسيط (Mediator): الوحدات لا تستدعي بعضها مباشرة، بل تنشر رسائل («وصلت رسالة جديدة»)، ويمررها وسيط مركزي إلى من يهتم بها.
- الواجهة (Facade): طبقة رقيقة بين الوحدات والنواة تحدد ما يُسمح لكل وحدة بفعله، فتعمل كحدّ أمني أيضًا.
والفائدة: تستطيع حذف وحدة أو استبدالها أو اختبارها دون أن ينكسر الباقي، ولست مقيدًا بمكتبة واحدة.
تغيّرت الأدوات منذ ذلك الوقت مع أطر العمل والمكونات ووحدات ES، لكن الفكرة ما زالت صالحة: الربط الضعيف عبر الأحداث، والحدود الصغيرة الواضحة، هي ما يبقي تطبيقات الواجهة الكبيرة قابلة للصيانة.
اقرأ المقال الأصلي: Patterns For Large-Scale JavaScript Application Architecture، بقلم أدي عثماني (2011).