نكست جي إس

**نيكست جي أس** (بالإنجليزية: **Next.js**) هو إطار عمل لتطوير الويب مفتوح المصدر مبني فوق Node.js لتمكين تطبيقات الويب التي تستخدم مكتبة رياكت بإجراء بعض المميزات مثل العرض من جانب الخادم (SSR) وإنشاء مواقع الويب الثابتة (SSG). نيكست جي أس مذكور ضمن وثائق رياكت في قسم «الأدوات التطوير الموصى بها» وتنصح وثائق رياكت المطورين بذلك كحل عند «إنشاء موقع ويب مقدم من الخادم باستخدام Node.js». حيث تقوم تطبيقات رياكت التقليدية بعرض محتواها في متصفح على جانب العميل، بينما يقوم Next.js بتوسيع هذه الوظيفة لتشمل تطبيقات الويب المعروضة على جانب الخادم.

حقوق الطبع والنشر والعلامات التجارية الخاصة بـ Next.js مملوكة لشركة Vercel ، المعروفة سابقًا باسم ZEIT،  والتي تقود عملية تطوير المصادر المفتوحة وتدعمها.

## نظرة عامة
Next.js هو إطار عمل React يمكّن العديد من الميزات الإضافية، بما في ذلك العرض من جانب الخادم (SSR) وإنشاء مواقع ويب ثابتة (SSG). React هي مكتبة JavaScript تُستخدم تقليديًا لإنشاء تطبيقات الويب المعروضة في متصفح العميل باستخدام JavaScript. يواجه المطورون العديد من المشكلات المتعلقة بهذه الإستراتيجية، مثل عدم تلبية احتياجات المستخدمين الذين ليس لديهم إمكانية الوصول إلى JavaScript أو قاموا بتعطيلها، ومشكلات الأمان المحتملة، وقت تحميل الصفحة، ويمكن أن يضر ذلك بالتحسين محركات البحث الخاصة بالموقع.  يُمكن لأطر العمل مثل Next.js تتجنب هذه المشكلات عن طريق السماح بعرض بعض أو كل موقع الويب على جانب الخادم قبل إرسالها إلى العميل.   يُعد Next.js أحد أكثر الأطر شيوعًا في React. إنها واحدة من العديد من «أدوات التطوير» الموصى بها والمتاحة عند بدء تطبيق جديد، وكلها توفر طبقة من التجريد للمساعدة في المهام المشتركة. يتطلب نكست جي اس وجود Node.js ويمكن تهيئة نكست جي اس باستخدام مدير حزم نود جي اس (NPM).

ساهمت Google في مشروع Next.js ، بـ 43 Pull Request في عام 2019، التي ساعدت في تقليم JavaScript غير المستخدم، وتقليل وقت التحميل، وإضافة مقاييس محسّنة. اعتبارًا من مارس 2020، يتم استخدام الإطار بواسطة العديد من مواقع الويب الكبيرة، بما في ذلك Netflix وGitHub وUber وTicketmaster وStarbucks .  في أوائل عام 2020، أُعلن أن Vercel قد حصل على واحد وعشرين مليون دولار في تمويل السلسلة A لدعم التحسينات على البرنامج. المؤلف الأصلي للإطار، Guillermo Rauch، هو حاليًا الرئيس التنفيذي لشركة Vercel ، والمطور الرئيسي للمشروع هو Tim Neutkens.

## تاريخ التطوير
تم إصدار Next.js لأول مرة كمشروع مفتوح المصدر على GitHub في  . تم تطويره في الأصل استنادًا إلى ستة مبادئ: وظيفة خارج الصندوق لا تتطلب أي إعداد، وجافا سكريبت في كل مكان، وجميع الوظائف مكتوبة بلغة جافا سكريبت، وتقسيم الكود التلقائي والعرض من جانب الخادم الخادم، وجلب البيانات القابل للتكوين، وتوقع الطلبات، وتبسيط عملية التطوير. تم الإعلان عن Next.js 2.0 في مارس 2017 بما في ذلك العديد من التحسينات التي سهلت العمل مع مواقع الويب الصغيرة. كما أنها زادت من كفاءة البناء وحسنت قابلية التوسع في ميزة تحديث الوحدات السريع. تم إصدار الإصدار 7.0 في سبتمبر 2018 مع تحسين معالجة الأخطاء ودعم React context API لتحسين معالجة المسار الديناميكي. كان هذا أيضًا الإصدار الأول للترقية إلى الإصدار الرابع من ويب باك. تم إصدار الإصدار 8.0 في فبراير 2019 وكان أول إصدار يقدم نشرًا بدون خادم للتطبيقات، حيث يتم تقسيم الكود إلى وظائف lambda يتم تشغيلها عند الطلب. قلل الإصدار أيضًا من الوقت والموارد المطلوبة لعمليات التصدير الثابتة وتحسين أداء الجلب المسبق. تضمن الإصدار 9.3، الذي تم الإعلان عنه في مارس 2020، تحسينات متنوعة ودعمًا عالميًا لوحدة Sass و CSS. في 27 يوليو 2020، تم الإعلان عن الإصدار 9.5 من Next.js ، مضيفًا إمكانات جديدة بما في ذلك التجديد الثابت المتزايد وإعادة الكتابة وإعادة التوجيه. في 15 يونيو 2021، تم إطلاق الإصدار 11 من Next.js ، والذي قدم من بين أمور أخرى: دعم ويب باك 5، إمكانية المعاينة للبرمجة تعاونية في الوقت الفعلي "Next.js Live"، والوظيفة التجريبية للتحويل التلقائي من إنشاء تطبيق React إلى Next.js نموذج متوافق "Create React App Migration". في 26 أكتوبر 2021، تم إصدار Next.js 12، بإضافة مجمع ومُترجم مكتوب بلغة Rust ، مما يجعل التجميع أسرع، ودعم AVIF ، ووظائف الحافة والبرمجيات الوسيطة، واستيراد وحدات ESM ودعم إسترداد الوحدات من خلال الورابط URL.

## التصميم والمميزات
يدعم Next.js التصميم باستخدام CSS بالإضافة إلى Scss وSass المترجمة مسبقًا و CSS-in-JS و JSX المُنسق. بالإضافة إلى ذلك، تم تصميمه بدعم TypeScript والتجميع الذكي. يتم استخدام مترجم Babel مفتوح المصدر لتحويل وترجمة التعليمات البرمجية إلى JavaScript يمكن للمتصفح فهمها من خلال مجمع الحزم ويب باك، وهي أداة أخرى مفتوحة المصدر، يتم استخدام كل هذه الأدوات مع إن بي إم في الطرفية.

الميزة الرئيسية لـ Next.js هي استخدامه للتقديم الصفحات من جانب الخادم لتقليل العبء على متصفحات الويب وتوفير أمان محسن. يمكن القيام بذلك لأي جزء من التطبيق أو المشروع بأكمله، مما يسمح بتخصيص الصفحات الغنية بالمحتوى لعرضها من جانب الخادم.  يمكن أيضًا القيام بذلك فقط للزائرين لأول مرة، لتقليل العبء على متصفحات الويب التي لم تقم بعد بتنزيل أي من أصول الموقع. تكتشف ميزة «إعادة التحميل السريع» التغييرات أثناء إجرائها وتعيد عرض الصفحات المناسبة بحيث يتجنب الخادم الحاجة إلى إعادة التشغيل. يسمح هذا بالتغييرات التي تم إجراؤها على رمز التطبيق لتنعكس على الفور في متصفح الويب، على الرغم من أن بعض المتصفحات تتطلب تحديث الصفحة.  يستخدم البرنامج التوجيه-عبر-الملفات من أجل الصفحات ويسهل على المطورين ويتضمن نكست جي اس دعمًا للتوجيه الديناميكي. تشمل الميزات الأخرى استبدال الوحدات السريع بحيث يمكن استبدال الوحدات النمطية مباشر، وتقسيم الكود التلقائي، والذي يتضمن فقط الكود الضروري لتحميل الصفحة، والجلب المسبق للصفحة لتقليل وقت التحميل. 

يدعم Next.js أيضًا التجديد الثابت المتزايد (ISR)  وإنشاء الموقع الثابت (SSG) - عادةً ما يتم إنشاء نسخة مجمعة من موقع الويب أثناء وقت الإنشاء وحفظها كمجلد التالي. عندما يقوم المستخدم بتقديم طلب، يتم تخزين النسخة المبنية مسبقًا والتي هي عبارة عن صفحات HTML ثابتة مؤقتًا وإرسالها إليهم. هذا يجعل وقت التحميل سريعًا جدًا، ولكنه ليس مناسبًا لكل موقع ويب لأن المواقع التفاعلية التي تتغير كثيرًا وتستخدم الكثير من مدخلات المستخدم لن تكون مناسبة.

## انظر أيضا

* لامب
* رياكت (مكتبة جافا سكريبت)
* Vue.js
* إطار عمل جافا سكريبت

## مراجع

## روابط خارجية

* 
* 
* 
* 

تصنيف:أطر عمل الويب
تصنيف:إطارات عمل جافا سكريبت
تصنيف:برمجيات تستخدم رخصة إم آي تي