منصة Deno JavaScript متوافقة الآن مع وحدات NPM

تم إصدار Deno 1.28 ، وهو إطار تنفيذي لتطبيق JavaScript و TypeScript مستقل يمكن استخدامه لإنشاء معالجات من جانب الخادم. تم تطوير المنصة بواسطة Ryan Dahl ، مبتكر Node.js. مثل Node.js ، يستخدم Deno محرك V8 JavaScript ، والذي يستخدم أيضًا في المتصفحات القائمة على Chromium. في الوقت نفسه ، لا يعد Deno تفرعًا لـ Node.js ، ولكنه مشروع جديد تم إنشاؤه من البداية. يتم توزيع كود المشروع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. أبنية معدة لأنظمة Linux و Windows و macOS.

تم إنشاء مشروع Deno لتزويد المستخدمين ببيئة أكثر أمانًا والقضاء على الأخطاء المفاهيمية في بنية Node.js. لتحسين الأمان ، تمت كتابة الارتباط حول محرك V8 بلغة Rust ، والتي تتجنب العديد من نقاط الضعف التي تنشأ بسبب معالجة الذاكرة منخفضة المستوى. لمعالجة الطلبات في وضع عدم الحظر ، يتم استخدام منصة Tokio ، المكتوبة أيضًا بلغة Rust. يسمح لك Tokio بإنشاء تطبيقات عالية الأداء استنادًا إلى بنية مدفوعة بالأحداث (مدفوعة بالأحداث) ، ودعم تعدد مؤشرات الترابط ومعالجة طلبات الشبكة في الوضع غير المتزامن.

التغيير الرئيسي في الإصدار الجديد هو استقرار التوافق مع الحزم المستضافة في مستودع NPM ، والذي يسمح لـ Deno باستخدام أكثر من 1.3 مليون وحدة تم إنشاؤها لمنصة Node.js. على سبيل المثال ، يمكن للتطبيقات المستندة إلى Deno الآن استخدام وحدات الوصول المستمر إلى البيانات مثل Prisma و Mongoose و MySQL ، بالإضافة إلى أطر أمامية مثل React و Vue. تظل بعض وحدات NPM غير متوافقة مع Deno ، على سبيل المثال ، بسبب الارتباطات بالبيئات الخاصة بـ Node.js مثل ملف package.json. كما أنه ليس من الممكن بعد استخدام الأمر "deno compile" مع وحدات NPM. يتم التخطيط للإصدارات المستقبلية لمعالجة أوجه عدم التوافق والقيود هذه.

يتم الاحتفاظ بدعم نظام وحدة ECMAScript المستخدم سابقًا من Deno ونموذج Web API على نفس المستوى، ويتم استخدام نظام التحميل المألوف القائم على عنوان URL الخاص بـ Deno لاستيراد وحدات NPM. للوصول إلى وحدات NPM، هناك بادئة عنوان URL خاصة "npm:"، والتي يمكن استخدامها بنفس طريقة استخدام وحدات Deno العادية. على سبيل المثال، لاستيراد وحدة NPM، يمكنك تحديد 'import { chalk } from "npm:chalk@5";'، ولتشغيل برنامج NPM النصي من سطر الأوامر - "deno run --allow-env --allow -اقرأ npm: create- vite-extra."

يعد استخدام حزم NPM في Deno أسهل بكثير مما هو عليه في Node.js ، لأنه لا توجد حاجة للتثبيت المسبق للوحدات (يتم تثبيت الوحدات النمطية عند تشغيل التطبيق لأول مرة) ، ولا يتم استخدام ملف package.json ، ولا يتم استخدام دليل node_modules يتم استخدامه افتراضيًا (يتم تخزين الوحدات النمطية في مجلد عام مؤقتًا ، ولكن من الممكن إرجاع السلوك القديم باستخدام الخيار "--node-modules-dir").

تحتفظ التطبيقات المستندة إلى NPM بالقدرة على استخدام آليات التحكم في الوصول والعزل والتفعيل الخاصة بـ Deno للميزات المتقدمة التي تؤثر على الأمان. لمواجهة الهجمات من خلال التبعيات المشكوك فيها ، يقوم Deno افتراضيًا بحظر جميع محاولات الوصول إلى النظام من التبعيات ويعرض تحذيرًا بشأن المشكلات المكتشفة. على سبيل المثال ، عندما تحاول الوحدة كتابة الوصول إلى / usr / bin / ، سيتم عرض طلب تأكيد لهذه العملية: deno run npm: install-malware ⚠️ يطلب Deno حق الوصول للكتابة إلى / usr / bin /. ├ مطلوب بواسطة "install-malware" ├ قم بالتشغيل مرة أخرى باستخدام --allow-write لتجاوز هذه المطالبة. السماح؟ [y / n] (y = yes، allow؛ n = no، deny)>

تتضمن التحسينات غير المرتبطة بـ NPM في الإصدار الجديد تحديث محرك V8 لإصدار 10.9 ، والكشف التلقائي عن الملفات ذات الأقفال ، وتثبيت Deno.bench () ، و Deno.gid () ، و Deno.networkInterfaces () ، و Deno.systemMemoryInfo ( ) و Deno APIs .uid () ، إضافة واجهة برمجة تطبيقات Deno.Command () الجديدة غير المستقرة لتشغيل الأوامر (الاستبدال العام لـ Deno.spawn و Deno.spawnSync و Deno.spawnChild).

الميزات الرئيسية لدينو:

  • ركز على الأمان في التكوين الافتراضي. يتم حظر الوصول إلى الملفات والشبكات والوصول المتغير للبيئة افتراضيًا ويجب تمكينه بشكل صريح. تعمل التطبيقات في بيئات آلية تحديد الوصول افتراضيًا ولا يمكنها الوصول إلى إمكانات النظام بدون أذونات صريحة ؛
  • دعم لغة TypeScript المضمنة بالإضافة إلى JavaScript. للتحقق من الأنواع وإنشاء JavaScript ، يتم استخدام مترجم TypeScript العادي ، مما يؤدي إلى انخفاض في الأداء مقارنة بتحليل JavaScript في V8 ؛
  • يأتي وقت التشغيل في شكل ملف تنفيذي واحد قائم بذاته ("deno"). لتشغيل التطبيقات باستخدام Deno ، يكفي تنزيل ملف واحد قابل للتنفيذ لمنصتك ، بحجم 30 ميغابايت تقريبًا ، والذي لا يحتوي على تبعيات خارجية ولا يتطلب أي تثبيت خاص على النظام. في الوقت نفسه ، لا يعد deno تطبيقًا مترابطًا ، ولكنه مجموعة من حزم صناديق الصدأ (deno_core، rusty_v8) التي يمكن استخدامها بشكل منفصل ؛
  • عند بدء تشغيل البرنامج ، وكذلك لوحدات التحميل ، يمكن استخدام العنونة عبر URL. على سبيل المثال ، لتشغيل برنامج welcome.js ، يمكنك استخدام الأمر "deno https://deno.land/std/examples/welcome.js". يتم تنزيل التعليمات البرمجية من الموارد الخارجية وتخزينها مؤقتًا على النظام المحلي ، ولكن لا يتم تحديثها تلقائيًا أبدًا (يتطلب التحديث تشغيل التطبيق بشكل صريح بعلامة "--Reload") ؛
  • معالجة فعالة في تطبيقات طلبات الشبكة عبر HTTP ، تم تصميم النظام الأساسي لإنشاء تطبيقات شبكة عالية الأداء ؛
  • القدرة على إنشاء تطبيقات ويب عالمية يمكن تشغيلها في كل من Deno ومتصفح الويب العادي ؛
  • وجود مجموعة معيارية من الوحدات ، لا يتطلب استخدامها ارتباطًا بالتبعية الخارجية. تم تدقيق واختبار وحدات من المجموعة القياسية بالإضافة إلى ذلك من أجل التوافق ؛
  • بالإضافة إلى وقت التشغيل ، تعمل منصة Deno أيضًا كمدير للحزم وتسمح لك بالوصول إلى الوحدات عن طريق عنوان URL داخل التعليمات البرمجية الخاصة بك. على سبيل المثال ، لتحميل وحدة نمطية ، يمكنك تحديد "استيراد * كسجل من" https://deno.land/std/log/mod.ts "في الكود. يتم تخزين الملفات التي تم تنزيلها من الخوادم الخارجية بواسطة URL مؤقتًا. يتم تحديد الارتباط بإصدارات الوحدة من خلال تحديد أرقام الإصدارات داخل عنوان URL ، على سبيل المثال ، "https://unpkg.com/[البريد الإلكتروني محمي]/dist/liltest.js "؛
  • تتضمن الحزمة نظامًا متكاملًا لفحص التبعية (أمر "deno info") وأداة مساعدة لتنسيق الكود (deno fmt) ؛
  • يمكن دمج جميع البرامج النصية للتطبيق في ملف JavaScript واحد.

المصدر: opennet.ru

إضافة تعليق