تخطَّ إلى المحتوى

‏Next.js مقابل Laravel: سؤالان مختلفان

ليسا جوابين متنافسين على سؤال واحد. أحدهما واجهة أمامية تستطيع الوصول إلى قاعدة بيانات، والآخر خادم تطبيقات يستطيع عرض HTML.

2 دقيقة قراءة

تُطرح هذه المقارنة كخلاف بين لغتين، وهي ليست كذلك. الاثنان مبنيّان حول مركزَي ثقل مختلفين، والسؤال المفيد هو: أين تقع صعوبة تطبيقكم فعلًا؟

فيمَ يبرع كلٌّ منهما، بلا تسويق

‏Laravel خادم تطبيقات مكتمل العدّة. طوابير، ومهام مجدولة، و ORM ناضج، وترحيلات، ونظام مصادقة، وطبقة صلاحيات، وبريد، وأحداث، ومشغّل طوابير تستطيعون تشغيله فعلًا، ومنظومة إدارة. إن كان الجزء الصعب في تطبيقكم منطق عمل يجب أن يعمل بموثوقية، فأنتم في معظم الطريق من اليوم الأول.

‏Next.js إطار عرض يستطيع الوصول إلى قاعدة بيانات. قوّته في مسار العرض: ما يُولَّد وقت البناء، وما يُبَثّ، وما ينزّله المتصفّح، وكم تكون الصفحة سريعة لمن يزورها أول مرة. إن كان الجزء الصعب سطحًا عامًّا يجب أن يكون سريعًا وقابلًا للفهرسة، فهو مبنيّ لذلك.

الاختبار الذي يحسمها

اسألوا: ما الذي يُفسد مشروعكم إن نُفِّذ تنفيذًا سيئًا؟

إن كان الجواب مهمّة خلفية، أو معاملة، أو تعارض تزامن، أو سير عمل له حالات، أو تكاملًا يجب ألّا يضيع منه أي رسالة - فهذا ملعب Laravel. في Next.js معالِجات مسارات و Server Actions، وهي جيدة حقًا فيما وُجدت له: خدمة واجهة أمامية. وليست مشغّل مهام. لا يوجد في إطار العمل ما يعادل مشغّل طوابير مُراقَبًا، وبناء واحد حوله عملٌ لم تكونوا تنوونه.

وإن كان الجواب رسمًا أوّل بطيئًا، أو صفحة لا تظهر في البحث، أو حزمة تكلّف مستخدمي الهاتف أربع ثوانٍ، أو كتالوجًا يجب أن يكون ثابتًا وسلّةً يجب ألّا تكون - فهذا ملعب Next.js، وسيحتاج Blade المعروض على خادم Laravel إلى قصّة واجهة أمامية مُركَّبة عليه كي ينافس.

‏Laravel مع Inertia، وهي المقارنة الحقيقية

معظم الفرق التي توازن بين هذين توازن في الحقيقة بين Laravel + Inertia + React وNext.js + واجهة برمجية. هذه منافسة أعدل، وتتلخّص في شيء واحد: هل تحتاج صفحاتكم إلى عرض مسبق؟

يعرض Inertia عند كل طلب، في كل مرة. وهذا مقبول خلف تسجيل الدخول، حيث لا شيء قابل للتخزين ولا شيء يحتاج إلى الظهور في البحث. لكنه قيدٌ حقيقي لكتالوج عامّ أو موقع توثيق أو سطح تسويقي، حيث يكون التوليد وقت البناء والتقديم من عقدة حافة قصّة الأداء كلها.

إذن:

  • كل شيء تقريبًا خلف تسجيل الدخول ← سيوصلكم Laravel و Inertia أسرع، وتشغيلهما أسهل.
  • سطح عامّ قابل للفهرسة ذو شأن ← Next.js، ومعه Laravel خلفه إن كان منطق العمل يستدعي ذلك.

الترتيب الذي ينجح

‏Laravel للواجهة البرمجية والإدارة ومشغّل المهام. و Next.js للواجهة العامّة، يتحدّث إليه عبر HTTP.

الكلفة هدف نشر ثانٍ وعقدٌ بين الطرفين على أحدهم صيانته. والفائدة أن كل جانب يفعل ما يبرع فيه، ولا يُمطّ أيٌّ منهما إلى دور لم يُصمَّم له. عمليًا، هذا ما كان ينبغي أن تكونه كثيرٌ من مشاريع "أعدنا بناءه بـ Next.js".

وحيث يوجد تطبيق Laravel قائم ويعمل، والمشكلة في الواجهة الأمامية وحدها، فذلك مشروع أضيق من إعادة الكتابة - وأرخص منها كثيرًا في الغالب.

وإن كان الجواب الصادق أن مشروعكم ليس فيه سطح عامّ يستحقّ التحسين، فقد لا يكون لـ Next.js مكان فيه أصلًا.

العودة إلى كل المقالات