Node.js-ийн зохиогч Deno 1.0 аюулгүй JavaScript платформыг танилцуулсан

Хоёр жилийн хөгжлийн дараа танилцуулсан анхны томоохон хувилбар Дено 1.0, JavaScript болон TypeScript дээр програмуудыг бие даан гүйцэтгэх платформ бөгөөд үүнийг сервер дээр ажилладаг зохицуулагч үүсгэхэд ашиглаж болно. Уг платформыг Райан Дал (Ryan Dahl) боловсруулсан.Райан Дал), Node.js-ийг бүтээгч. Node.js-ийн нэгэн адил Дено нь JavaScript хөдөлгүүр ашигладаг V8, үүнийг Chromium-д суурилсан хөтчүүдэд бас ашигладаг. Үүний зэрэгцээ, Deno бол Node.js-ийн салаа биш, харин эхнээс нь бий болсон шинэ төсөл юм. Төслийн код тараасан MIT лицензийн дагуу. Чуулганууд бэлтгэсэн Linux, Windows болон macOS-д зориулагдсан.

Ач холбогдол бүхий хувилбарын дугаар нь үйлдлийн системтэй програмуудын харилцан үйлчлэлийг хариуцдаг Deno нэрийн орон зай дахь API-уудыг тогтворжуулахтай холбоотой юм. Өнөөг хүртэл байгаа програм хангамжийн интерфейс тогтворжоогүй, анхдагчаар далдлагдсан бөгөөд зөвхөн “--тогтворгүй” горимд ажиллах үед л боломжтой. Шинэ хувилбарууд үүсэхийн хэрээр ийм API-ууд аажмаар тогтвортой байх болно. setTimeout() болон fetch() зэрэг нийтлэг функцуудыг агуулсан дэлхийн нэрийн орон зай дахь API нь ердийн вэб хөтчүүдийн API-тай аль болох ойр бөгөөд хөтчүүдэд зориулсан вэб стандартын дагуу боловсруулагдсан. Rust-ийн өгсөн API-ууд нь платформын кодонд шууд ашиглагддаг, мөн Deno-ийн ажиллах цагийн залгаасуудыг хөгжүүлэх интерфейс хараахан тогтворжоогүй байгаа бөгөөд үргэлжлүүлэн хөгжүүлсээр байна.

Шинэ JavaScript платформыг бий болгох гол сэдэл нь үзэл баримтлалын алдааг арилгах хүсэл байв. хүлээн зөвшөөрсөн Node.js архитектурт суулгаж, хэрэглэгчдэд илүү аюулгүй орчинг бүрдүүлнэ. Аюулгүй байдлыг сайжруулахын тулд V8 хөдөлгүүр нь Rust хэл дээр бичигдсэн бөгөөд энэ нь санах ойн доод түвшний заль мэхээс үүдэн гарах үнэгүй хандалт, хоосон заагчийн хаягжилт, буфер хэт их ачаалал гэх мэт олон эмзэг байдлаас зайлсхийдэг. Энэхүү платформ нь хүсэлтийг блоклохгүй горимд боловсруулахад ашиглагддаг Токио, мөн Rust дээр бичсэн. Токио нь үйл явдалд суурилсан архитектурт суурилсан өндөр гүйцэтгэлтэй програмуудыг үүсгэх боломжийг олгодог бөгөөд олон урсгалыг дэмждэг, асинхрон горимд сүлжээний хүсэлтийг боловсруулдаг.

Үндсэн Онцлог Дено:

  • Аюулгүй байдалд чиглэсэн өгөгдмөл тохиргоо. Файлын хандалт, сүлжээ болон орчны хувьсагчдад хандах хандалт нь анхдагчаар идэвхгүй бөгөөд тодорхой идэвхжсэн байх ёстой. Програмууд нь анхдагчаар тусгаарлагдсан хамгаалагдсан хязгаарлагдмал орчинд ажилладаг бөгөөд тодорхой зөвшөөрөлгүйгээр системийн чадамжид хандах боломжгүй;
  • JavaScript-ээс гадна TypeScript-ийн суурилуулсан дэмжлэг. Стандарт TypeScript хөрвүүлэгч нь төрлийг шалгах, JavaScript үүсгэхэд ашиглагддаг бөгөөд энэ нь V8 дээрх JavaScript задлан шинжилсэнтэй харьцуулахад гүйцэтгэлийн амжилтад хүргэдэг. Ирээдүйд бид TypeScript төрлийн шалгах системийг бие даан хэрэгжүүлэхээр төлөвлөж байгаа бөгөөд энэ нь TypeScript боловсруулалтын гүйцэтгэлийг тодорхой хэмжээгээр сайжруулах болно;
  • Ажиллах цаг нь бие даасан гүйцэтгэх боломжтой файл ("deno") хэлбэрээр ирдэг. Deno ашиглан програмуудыг ажиллуулахад хангалттай байршуулах Түүний платформын хувьд 20 МБ хэмжээтэй, гадаад хамааралгүй, систем дээр тусгай суулгац шаарддаггүй нэг гүйцэтгэгдэх файл байдаг. Түүгээр ч барахгүй deno нь цул хэрэглээ биш, харин Rust дахь хайрцагны багцуудын цуглуулга юм (deno_core, зэвэрсэн_v8), тусад нь ашиглах боломжтой;
  • Програмыг эхлүүлэх, модулиудыг ачаалахын тулд та URL хаягийг ашиглаж болно. Жишээлбэл, Welcome.js програмыг ажиллуулахын тулд та “deno https://deno.land/std/examples/welcome.js” командыг ашиглаж болно. Гадны эх сурвалжаас кодыг локал системд татаж аваад кэшд хадгалдаг боловч хэзээ ч автоматаар шинэчлэгддэггүй (шинэчлэхийн тулд програмыг “--reload” гэсэн тугтайгаар ажиллуулах шаардлагатай);
  • Програмууд дахь HTTP-ээр дамжуулан сүлжээний хүсэлтийг үр дүнтэй боловсруулах; платформ нь өндөр хүчин чадалтай сүлжээний програмуудыг бий болгоход зориулагдсан;
  • Deno болон ердийн вэб хөтөч дээр ажиллах боломжтой бүх нийтийн вэб програмуудыг бий болгох чадвар;
  • тушаал стандарт модулиудын багц, хэрэглээ нь гадны хамааралтай холбоотой байхыг шаарддаггүй. Стандарт цуглуулгын модулиуд нь нэмэлт аудит, нийцтэй байдлын шалгалтанд хамрагдсан;
  • Ажиллах хугацаанаас гадна Deno платформ нь багц менежерийн үүрэг гүйцэтгэдэг бөгөөд код доторх URL-ээр модулиудад хандах боломжийг олгодог. Жишээлбэл, модулийг ачаалахын тулд "https://deno.land/std/log/mod.ts"-аас "import *" гэсэн кодыг зааж өгч болно. URL-ээр дамжуулан гадаад серверээс татаж авсан файлуудыг кэшд хадгалдаг. Модулийн хувилбаруудтай холбох нь URL доторх хувилбарын дугаарыг зааж өгөх замаар тодорхойлогддог, жишээлбэл, “https://unpkg.com/[имэйлээр хамгаалагдсан]/dist/liltest.js";
  • Бүтэц нь хараат байдлыг шалгах нэгдсэн систем ("deno info" команд) болон код форматлах хэрэгсэл (deno fmt);
  • Бүх програмын скриптүүдийг нэг JavaScript файлд нэгтгэж болно.

Node.js-ийн ялгаа:

  • Дено нь npm багц менежерийг ашигладаггүй
    хадгалах сантай холбоогүй, модулиуд нь URL эсвэл файлын замаар хаяглагдсан бөгөөд модулиудыг өөрсдөө дурын вэбсайтад байрлуулж болно;
  • Дено модулиудыг тодорхойлохдоо "package.json" ашигладаггүй;
  • API ялгаа, Deno дахь бүх асинхрон үйлдэл нь амлалтыг буцаана;
  • Deno нь файл, сүлжээ болон орчны хувьсагчдад шаардлагатай бүх зөвшөөрлийн тодорхой тодорхойлолтыг шаарддаг;
  • Зохицуулагчаар хангагдаагүй бүх алдаа нь програмыг зогсооход хүргэдэг;
  • Дено нь ECMAScript модулийн системийг ашигладаг бөгөөд require();
  • Deno-ийн суулгасан HTTP сервер нь TypeScript дээр бичигдсэн бөгөөд эх TCP залгуурууд дээр ажилладаг бол Node.js HTTP сервер нь C хэл дээр бичигдсэн бөгөөд JavaScript-ийн холболтоор хангадаг. Deno-ийн хөгжүүлэгчид TCP залгуурын давхаргыг бүхэлд нь оновчтой болгож, илүү ерөнхий интерфейсээр хангахад анхаарлаа хандуулсан. Deno HTTP сервер нь дамжуулах хурд багатай боловч урьдчилан таамаглаж болох бага хоцролтыг баталгаажуулдаг. Жишээлбэл, туршилтын явцад Deno HTTP сервер дээр суурилсан энгийн програм нь секундэд 25 мянган хүсэлтийг хамгийн ихдээ 1.3 миллисекунд хоцрогдолтойгоор боловсруулах боломжтой болсон. Node.js-д ижил төстэй програм нь секундэд 34 мянган хүсэлтийг боловсруулдаг байсан ч хоцролтын хугацаа 2 ба 300 миллисекунд хооронд хэлбэлздэг.
  • Deno нь Node.js (NPM) багцад тохирохгүй боловч тусад нь хөгжүүлж байна хоорондын давхарга стандарт Node.js номын сантай нийцүүлэхийн тулд үүнийг хөгжүүлснээр Node.js-д зориулж бичсэн илүү олон програмууд Deno дээр ажиллах боломжтой болно.
  • Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх