المُشغل المتقدم Edge Runtime في Next.js
يعتمد المُشغل الآني المتقدم Edge Runtime في Next.js على واجهات الويب البرمجية Web API التي تُستخدم من قبل البرمجيات الوسيطة أو وجهات API المتقدمة.
الواجهة البرمجية للشبكة
الواجهة البرمجية للتشفير
الواجهة البرمجية لنقل البيانات عبر ويب
ReadableStreamReadableStreamBYOBReaderReadableStreamDefaultReaderTransformStreamWritableStreamWritableStreamDefaultWriter
واجهة ويب البرمجية Crypto
واجهة ويب البرمجية المعيارية
أساسيات المحرّك V8
ArrayArrayBufferAtomicsBigIntBigInt64ArrayBigUint64ArrayBooleanclearIntervalclearTimeoutconsoleDataViewDatedecodeURIdecodeURIComponentencodeURIencodeURIComponentErrorEvalErrorFloat32ArrayFloat64ArrayFunctionInfinityInt8ArrayInt16ArrayInt32ArrayIntlisFiniteisNaNJSONMapMathNumberObjectparseFloatparseIntPromiseProxyRangeErrorReferenceErrorReflectRegExpSetsetIntervalsetTimeoutSharedArrayBufferStringSymbolSyntaxErrorTextDecoderTextEncoderTypeErrorUint8ArrayUint8ClampedArrayUint16ArrayUint32ArrayURIErrorURLURLSearchParamsWeakMapWeakSetWebAssembly
متغيرات البيئة
بإمكانك استخدام الملف process.env للوصول إلى متغيرات البيئة عبر next dev و next build. إنّ تنفيذ التعليمة console.log على process.env لن يعرض جميع متغيرات البيئة، وعليك ان تصل إلى المتغيرات مباشرة كالتالي:
console.log(process.env)
// { NEXT_RUNTIME: 'edge' }
console.log(process.env.TEST_VARIABLE)
// { NEXT_RUNTIME: 'edge', TEST_VARIABLE: 'value' }
الواجهات البرمجية غير المدعومة
- لا تُدعم الواجهة البرمجية الأصلية لبيئة Node.js، فلن تتمكن من القراءة أو الكتابة إلى نظام الملفات.
- يمكن استخدام
node_modulesطالما أنها تُنجز باستخدام وحدات ES ولا تستخدم واجهة Node.js البرمجية الأصلية. - لا يُسمح باستدعاء
requireمباشرة، لا بد من استخدام وحدات ES بدلًا منه. - عُطلت ميزات لغة JavaScript التالية:
eval: تقييم شيفرة JavaScript المُمثَّلة كنص.new Function(evalString): إنشاء دالة جديدة من خلال شيفرة قُدمّت كوسيط argument.WebAssembly.compileWebAssembly.instantiateمع معامل مخزن مؤقت buffer.
قد تحوي شيفرتك في حالات نادرة تعليمات تقييم ديناميكية لا يمكن الوصول إليها وقت التنفيذ ولا يمكن حذفها أثناء عملية treeshaking ويمكنك تسهيل التحقق بالسماح بملفات محددة مع الضبط المُصدَّر مع البرمجيات الوسيطة Middleware أو وجهة الواجهة البرمجية المتقدمة Edge API Route:
export const config = {
runtime: 'edge', // for Edge API Routes only
unstable_allowDynamic: [
'/lib/utilities.js', // allows a single file
'/node_modules/function-bind/**', // use a glob to allow anything in the function-bind 3rd party module
],
}
unstable_allowDynamic هو من نوع glop أو مصفوفة من أنواع glop يؤدي إلى تجاهل تقييم الشيفرة الديناميكية لملفات محددة ويكون نسبةً إلى المجلد الجذر لتطبيقك.
انتبه، إذ إن نُفِّذت هذه التعليمات في المُشغل المتقدم Edge فتتسبب بخطأ وقت التنفيذ.
المصادر
- الصفحة Edge Runtime من توثيق Next.js الرسمي.