يقوم مشروع Deno بتطوير منصة JavaScript آمنة مشابهة لـ Node.js

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

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

رئيسي ملامح دينو:

  • التكوين الافتراضي الموجه نحو الأمان. يتم تعطيل الوصول إلى الملفات والشبكات والوصول إلى متغيرات البيئة بشكل افتراضي ويجب تمكينها بشكل صريح؛
  • دعم مدمج للغة TypeScript بالإضافة إلى JavaScript؛
  • يأتي وقت التشغيل في شكل ملف واحد قابل للتنفيذ قائم بذاته ("deno"). يكفي تشغيل التطبيقات باستخدام Deno تحميل بالنسبة لنظامها الأساسي، هناك ملف واحد قابل للتنفيذ، يبلغ حجمه حوالي 10 ميغابايت، ولا يحتوي على تبعيات خارجية ولا يتطلب أي تثبيت خاص على النظام؛
  • عند بدء تشغيل البرنامج ، وكذلك لوحدات التحميل ، يمكن استخدام العنونة عبر 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 واحد.

الاختلافات عن Node.js:

  • لا يستخدم Deno مدير الحزم npm
    وغير مرتبطة بالمستودعات، ويتم التعامل مع الوحدات عبر عنوان URL أو عن طريق مسار ملف، ويمكن وضع الوحدات نفسها على أي موقع ويب؛

  • لا يستخدم Deno "package.json" لتعريف الوحدات؛
  • اختلاف واجهة برمجة التطبيقات (API)، جميع الإجراءات غير المتزامنة في Deno تُرجع وعدًا؛
  • يتطلب Deno تعريفًا واضحًا لجميع الأذونات اللازمة للملفات والشبكة ومتغيرات البيئة؛
  • جميع الأخطاء التي لم يتم توفيرها مع المعالجات تؤدي إلى إنهاء التطبيق؛
  • يستخدم Deno نظام وحدة ECMAScript ولا يدعم require().

المصدر: opennet.ru

إضافة تعليق