Deno loyihasi Node.js ga o‘xshash xavfsiz JavaScript platformasini ishlab chiqmoqda

Mavjud loyiha chiqarilishi Menga 0.33 bering, bu JavaScript va TypeScript-da mustaqil ilovalarni bajarish uchun Node.js-ga o'xshash platformani taklif qiladi, bu dasturlarni brauzerga bog'lanmasdan ishlatish uchun ishlatilishi mumkin, masalan, serverda ishlaydigan ishlov beruvchilarni yaratish. Deno JavaScript dvigatelidan foydalanadi V8, bu Chromium loyihasi asosidagi Node.js va brauzerlarda ham qo'llaniladi. Loyiha kodi tarqaladi MIT litsenziyasi ostida. Loyiha Rayan Dahl tomonidan ishlab chiqilmoqda (Rayan Dahl), Node.js JavaScript platformasi yaratuvchisi.

JavaScript uchun yangi ish vaqtini yaratishning asosiy maqsadlaridan biri xavfsizroq muhitni ta'minlashdir. Xavfsizlikni yaxshilash uchun V8 dvigateli Rust-da yozilgan bo'lib, u past darajadagi xotira manipulyatsiyasi natijasida yuzaga keladigan ko'plab zaifliklardan qochadi, masalan, bepul kirish, null ko'rsatkichni o'zgartirish va buferni haddan tashqari oshirib yuborish. Platforma bloklanmaydigan rejimda so'rovlarni qayta ishlash uchun ishlatiladi Tokio, Rustda ham yozilgan. Tokio sizga hodisalarga asoslangan arxitektura asosida yuqori samarali ilovalar yaratishga imkon beradi, ko'p tarmoqli ulanishni qo'llab-quvvatlaydi va asinxron rejimda tarmoq so'rovlarini qayta ishlaydi.

asosiy xususiyatlari Deno:

  • Xavfsizlikka yo'naltirilgan standart konfiguratsiya. Faylga kirish, tarmoqqa ulanish va atrof-muhit o'zgaruvchilariga kirish sukut bo'yicha o'chirib qo'yilgan va aniq yoqilgan bo'lishi kerak;
  • JavaScript-ga qo'shimcha ravishda TypeScript tilini o'rnatilgan qo'llab-quvvatlash;
  • Ish vaqti bitta mustaqil bajariladigan fayl ("deno") shaklida keladi. Deno yordamida ilovalarni ishga tushirish kifoya yuklab olish uning platformasi uchun tashqi bog'liqliklarga ega bo'lmagan va tizimda hech qanday maxsus o'rnatishni talab qilmaydigan o'lchami taxminan 10 MB bo'lgan bitta bajariladigan fayl;
  • Dasturni ishga tushirishda, shuningdek, modullarni yuklash uchun siz URL manzilini ishlatishingiz mumkin. Masalan, Welcome.js dasturini ishga tushirish uchun siz “deno https://deno.land/std/examples/welcome.js” buyrug‘idan foydalanishingiz mumkin. Tashqi manbalardan olingan kod mahalliy tizimda yuklab olinadi va keshlanadi, lekin hech qachon avtomatik ravishda yangilanmaydi (yangilash uchun ilovani “--reload” bayrog‘i bilan aniq ishga tushirish kerak);
  • Ilovalarda HTTP orqali tarmoq so'rovlarini samarali qayta ishlash; platforma yuqori samarali tarmoq ilovalarini yaratish uchun mo'ljallangan;
  • Denoda ham, oddiy veb-brauzerda ham bajarilishi mumkin bo'lgan universal veb-ilovalarni yaratish qobiliyati;
  • Ish vaqti bilan bir qatorda, Deno platformasi paket menejeri vazifasini ham bajaradi va kod ichidagi URL orqali modullarga kirish imkonini beradi. Masalan, modulni yuklash uchun siz “https://deno.land/std/log/mod.ts” dan “import *” kodini belgilashingiz mumkin. URL orqali tashqi serverlardan yuklab olingan fayllar keshlanadi. Modul versiyalari bilan bogʻlanish URL ichidagi versiya raqamlarini koʻrsatish orqali aniqlanadi, masalan, “https://unpkg.com/[elektron pochta bilan himoyalangan]/dist/liltest.js";
  • Strukturaga integratsiyalangan qaramlikni tekshirish tizimi ("deno info" buyrug'i) va kodni formatlash uchun yordamchi dastur (deno fmt) kiradi.
  • Ilova ishlab chiquvchilar uchun taklif qildi qo'shimcha audit va muvofiqlik testlaridan o'tgan standart modullar to'plami;
  • Barcha dastur skriptlari bitta JavaScript fayliga birlashtirilishi mumkin.

Node.js dan farqlari:

  • Deno npm paket menejeridan foydalanmaydi
    va omborlarga bog'lanmagan, modullar URL yoki fayl yo'li orqali murojaat qilinadi va modullarning o'zi istalgan veb-saytga joylashtirilishi mumkin;

  • Deno modullarni aniqlash uchun "package.json" dan foydalanmaydi;
  • API farqi, Denodagi barcha asinxron harakatlar va'dani qaytaradi;
  • Deno fayllar, tarmoq va atrof-muhit o'zgaruvchilari uchun barcha zarur ruxsatlarni aniq belgilashni talab qiladi;
  • Ishlovchilar bilan ta'minlanmagan barcha xatolar dasturni tugatishga olib keladi;
  • Deno ECMAScript modul tizimidan foydalanadi va require() ni qo'llab-quvvatlamaydi.

Manba: opennet.ru

a Izoh qo'shish