لقد قمنا بإصدار بعض التحسينات التي تعزز تجربة الاستخدام في Next.js مع الإصدار 12.3:
- Fast Refresh محسن: ملفات
.env
وjsconfig.json
وtsconfig.json
الآن تعيد التحميل السريع. - تثبيت TypeScript التلقائي: أضف ملف
.ts
لتكوين TypeScript تلقائيًا وتثبيت التبعيات. - مكون الصورة:
next/future/image
أصبح الآن مستقرًا. - SWC Minifier: تصغير الحجم باستخدام مترجم Next.js أصبح الآن مستقرًا.
- تحديث الموجه الجديد + التخطيطات: بدأ التنفيذ وتم شرح الميزات الجديدة.
قم بالتحديث اليوم عن طريق تشغيل npm i next@latest
.
إعلان عن مؤتمر Next.js المجتمعي العالمي الثالث في 25 أكتوبر. سجل الآن →
Next.js Conf
أنت مدعو إلى المؤتمر المجتمعي العالمي لـ Next.js في 25 أكتوبر. بمناسبة الذكرى السادسة لـ Next.js، سنقدم:
- ميزات تستفيد من React Server Components و Streaming و Suspense.
- اصطلاحات تجعل من السهل على المطورين تحسين وتوسيع التطبيقات.
- أدوات مفتوحة المصدر تجعل التطوير المحلي وعمليات البناء للإنتاج أسرع.
احصل على تذكرتك المجانية وشاهد مستقبل Next.js و React، وتابع @nextjs لمزيد من الإعلانات قريبًا. نحن نبحث أيضًا عن محادثات مجتمعية. قدم اقتراحًا لمحادثة وشارك قصة ما تقوم ببنائه باستخدام Next.js.
تثبيت TypeScript التلقائي
يحتوي Next.js على دعم مدمج للتكوين التلقائي لـ TypeScript. سابقًا، إضافة TypeScript إلى مشروع موجود تطلب تثبيت التبعيات اللازمة يدويًا.
مع هذا الإصدار، يكتشف Next.js تلقائيًا عند إضافة ملفات TypeScript إلى مشروع، يقوم بتثبيت التبعيات اللازمة وإضافة ملف tsconfig.json
. يعمل هذا عند تشغيل next dev
و next build
.
فيديو يوضح Next.js يقوم بالتثبيت التلقائي لـ TypeScript.
Fast Refresh محسن
التكرارات السريعة ضرورية لسير عمل التطوير المحلي. يستخدم Next.js Fast Refresh للحصول على ملاحظات فورية على التعديلات التي تجريها على مكونات React. اضغط حفظ وشاهد التغييرات تنعكس في المتصفح بدون الحاجة إلى إعادة تحميل الصفحة.
مع Next.js 12.3، بعض ملفات التكوين الآن تعيد التحميل السريع عند إجراء التعديلات، بما في ذلك:
.env
وenv.*
المتغيراتjsconfig.json
- `tsconfig.json**
لم تعد بحاجة إلى إعادة تشغيل خادم التطوير المحلي عند إجراء تغييرات على ملفات التكوين هذه.
فيديو يوضح Next.js يعيد التحميل السريع لملف `.env`.
مكون الصورة
مكون next/future/image
(مستقر)
في Next.js 12.2، شاركنا معاينة تجريبية لمكون جديد للصورة يبسط كيفية تنسيق الصور ويحسن الأداء باستخدام التحميل الكسول للمتصفح الأصلي.
أصبح مكون الصورة الجديد الآن مستقرًا ولم يعد يتطلب علامة تجريبية.
منذ الإصدار الأخير، قمنا بإجراء المزيد من التحسينات:
- أضفنا دعمًا لوضع التخطيط
fill
الذي يجعل الصورة تملأ العنصر الأصلي. - حسّننا العنصر النائب blur-up ليعمل مع الصور الشفافة، لم يعد يحتاج إلى
<noscript>
، وnext dev
يتطابق معnext start
. - منعنا الانزياح الطفيف في التخطيط (في المتصفحات غير Chrome) عن طريق إخفاء نص
alt
أثناء تحميل الصورة. - أصبحت خاصية
alt
مطلوبة لتحسين إمكانية الوصول. - أصلحنا خاصية
onError
عند حدوث خطأ قبل الترطيب. - أصلحنا نسبة العرض إلى الارتفاع للصورة المستوردة بشكل ثابت التي تحتوي فقط على
width
أوheight
. - حسّننا رسائل الخطأ عند استخدام إعدادات أو تكوين غير صحيح.
في المستقبل، نخطط لإعادة تسمية next/image
إلى next/legacy/image
و next/future/image
إلى next/image
. سيوفر هذا تجربة رائعة لمشاريع Next.js الجديدة وستتمكن المشاريع الحالية من الترحيل بسهولة باستخدام أداة التعديل التلقائي next/image
. سنقدم المزيد من التفاصيل مع اقتراب الإصدار الرئيسي التالي.
لمزيد من المعلومات حول كيفية استخدامه اليوم، يرجى الرجوع إلى الوثائق التي تتضمن دليل الترحيل.
أنماط عن بعد (مستقرة)
remotePatterns
تتيح لك تحديد أحرف البدل للصور البعيدة عند استخدام واجهة برمجة التطبيقات المدمجة لتحسين الصور. تتيح مطابقة أكثر قوة تتجاوز تكوين images.domains
الحالي، الذي يقوم فقط بمطابقة دقيقة لاسم النطاق.
أصبح هذا الخيار الآن مستقرًا ويمكن استخدامه مع خيار التكوين التالي:
module.exports = {
images: {
remotePatterns: [
{
// يجب أن ينتهي اسم المضيف لخاصية `src` بـ `.example.com`،
// وإلا ستستجيب واجهة برمجة التطبيقات بـ 400 طلب غير صالح.
protocol: 'https',
hostname: '**.example.com',
},
],
},
};
تعطيل تحسين الصورة (مستقر)
تتطلب واجهة برمجة التطبيقات لتحسين الصورة خادمًا لتحسين الصور عند الطلب. يعمل هذا بشكل رائع عند الاستضافة الذاتية باستخدام next start
أو النشر على منصات مثل Vercel. ومع ذلك، لن يعمل هذا مع next export
لأنه لا يتضمن خادمًا لتحسين الصور. سابقًا، كنت بحاجة إلى تكوين موفر تحسين صور طرف ثالث باستخدام خاصية loader
، ولكن الآن يمكنك تعطيل تحسين الصورة تمامًا باستخدام next.config.js
لجميع حالات next/image
.
أصبح هذا الخيار التجريبي السابق الآن مستقرًا ويمكن استخدامه مع خيار التكوين التالي:
module.exports = {
images: {
unoptimized: true,
},
};
SWC Minifier (مستقر)
في Next.js 12، قدمنا تصغير الكود باستخدام SWC كجزء من الميزات التجريبية لـ مترجم Next.js. أظهرت النتائج المبكرة أن التصغير باستخدام SWC كان أسرع بـ 7 مرات من الإصدار السابق مع Terser.
مع هذا الإصدار، أصبحت الميزة مستقرة ويمكنك تفعيلها باستخدام خيار next.config.js
التالي:
module.exports = {
swcMinify: true,
};
نخطط لجعل SWC minifier الافتراضي في الإصدار الرئيسي التالي.
تحديث الموجه الجديد والتخطيطات
في وقت سابق من هذا العام، نشرنا Layouts RFC الذي قدم أكبر تحديث لـ Next.js منذ إصداره في 2016. تتضمن هذه التغييرات موجهًا جديدًا مبنيًا على React Server Components. بدأ العمل على التنفيذ ونحن نعمل نحو إصدار تجريبي عام في الإصدار الرئيسي التالي.
اليوم، نشارك المزيد من المعلومات حول الميزات القادمة، بما في ذلك:
- مجموعات المسار: تُستخدم لإخراج المسارات من التخطيطات، وتنظيم المسارات دون التأثير على مسارات URL.
- حالات التحميل الفوري: اصطلاح ملف جديد لإضافة واجهة تحميل بسهولة، مبنية باستخدام Suspense.
- معالجة الأخطاء: اصطلاح ملف جديد لإضافة حدود خطأ متداخلة وواجهة أخطاء بسهولة.
- القوالب: اصطلاح ملف جديد لإضافة واجهة مشتركة تنشئ مثيلًا مختلفًا ولا تشارك الحالة.
- المسارات الاعتراضية، المسارات المتوازية، والمسارات الشرطية: اصطلاحات جديدة تسمح لك بتنفيذ أنماط توجيه متقدمة.
بالإضافة إلى ذلك، في RFC مختلف، نستكشف إضافة دعم للاستيراد العالمي لـ CSS في دليل app
الجديد. سيسمح لك ذلك باستخدام الحزم التي تستورد ملفات .css
الخاصة بها دون تكوين إضافي.
اقرأ المزيد عن هذه الميزات الجديدة في Layouts RFC.
تحسينات أخرى
- وثائق جديدة حول ميزات إمكانية الوصول المدمجة في Next.js.
- قوالب
create-next-app
تتضمن الآن دعم الوضع المظلم تلقائيًا باستخدام تفضيلات نظامك. src/
أصبح الآن دليلًا افتراضيًا للفحص عند استخدام دعم ESLint المدمج.next.config.js
يتضمن الآن تحققًا من الصحة باستخدامajv
، مما يساعد على منع سوء استخدام خيارات التكوين.next.config.js
يحتوي الآن على علامة تكوين تجريبيةfallbackNodePolyfills: false
لمنع Next.js من توفير polyfills لواجهات برمجة تطبيقات Node.js للمتصفح (مما يؤدي إلى زيادة أحجام الحزم). سيؤدي هذا الخيار إلى ظهور خطأ في وقت البناء يوضح مصدر الاستيراد غير الضروري.
المجتمع
Next.js هو نتيجة العمل المشترك لأكثر من 2000 مطور فردي، وشركاء صناعيين مثل Google Chrome و Meta، وفريقنا الأساسي في Vercel.
جاء هذا الإصدار بفضل مساهمات: @pthomas931، @madmed88، @sanjaiyan-dev، @balazsorban44، @DonghyukJacobJang، @chaiwattsw، @styfle، @dunglas، @ahkhanjani، @promer94، @terrierscript، @shawncal، @insik-han، @QuiiBz، @ykzts، @JoshuaKGoldberg، @lucasassisrosa، @dikwickley، @Brooooooklyn، @sicarius97، @FourwingsY، @manovotny، @SukkaW، @pepoeverton، @jdeniau، @sumiren، @anthonyshew، @pekarja5، @huozhi، @leerob، @fediev، @atcastle، @shuding، @feugy، @jonohewitt، @zakiego، @Schniz، @timneutkens، @wyattjoh، @MaedahBatool، @X7Becka، @nnnnoel، @dcdev67، @alvinometric، @timothympace، @jeferson-sb، @ijjk، @theMosaad، @Yuddomack، @msquitieri، @andreizanik، @nix6839، @thomasballinger، @ziishaned، @xyeres، @nyedidikeke، @maxproske، @sokra، @titusdmoore، @thebergamo، @fikrikarim، @Kikobeats، @clearlyTHUYDOAN، @nasso، @qutek، @kdy1، @kyliau، @housseindjirdeh، @barissayil، @seveibar، @Jessidhia، @santidalmasso، @JohnDaly، @Nikhilnama18، @mduleone، @colinhacks، @ductnn، @josh، @hiro0218، @eltociear، @kwonoj، @valcosmos، @mihaic195، @stefanprobst، @KATT، @thiagomorales، @danielcavanagh، @steven-tey، @hellomhc، @trevor-fauna، @nguyenyou، @eminvergil، @lobsterkatie، @dorian-davis، @sambecker، @isaac-martin، @lfades، @amorimr، @javivelasco، @mongolyy، @Thisen، @zorrolisto، @ethomson، @padmaia، @thisisjofrank، @dominiksipowicz، @awareness481، @pakaponk، @apledger، @longzheng، @tknickman، @rbrcsk، @emersonlaurentino، @carstenlebek، @edusig، @riccardogiorato، @hanneslund، @ryanhaticus، @j-mendez، @armandabric، @WinmezzZ، @andershagbard، @dammy001، @MarDi66، @okmttdhr، @rishabhpoddar، @marjorg، @dustinsgoodman، و @zanechua.