Deno JavaScript платформ нь NPM модулиудад нийцдэг

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

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

Шинэ хувилбарын гол өөрчлөлт нь NPM репозиторт байршуулсан багцуудын нийцтэй байдлыг тогтворжуулах явдал бөгөөд Deno-д Node.js платформд зориулан бүтээсэн 1.3 сая гаруй модулийг ашиглах боломжийг олгодог. Жишээлбэл, Deno-д суурилсан програмууд одоо Prisma, Mongoose, MySQL зэрэг өгөгдөлд нэвтрэх байнгын модулиуд, мөн React, Vue зэрэг урд талын хүрээг ашиглах боломжтой болсон. Зарим NPM модулиуд Deno-той таарахгүй хэвээр байна, жишээ нь package.json файл зэрэг Node.js-д хамаарах орчны элементүүдтэй холбогдсоноос болж. Мөн NPM модулиудаар "deno compile" командыг ашиглах боломжгүй байна. Ирээдүйн хувилбарууд нь эдгээр үл нийцэх байдал, хязгаарлалтыг арилгахаар төлөвлөж байна.

Deno-ийн өмнө нь ашиглаж байсан ECMAScript модулийн систем болон Web API загварын дэмжлэгийг ижил түвшинд хадгалсан бөгөөд Deno-ийн танил URL-д суурилсан ачаалах схемийг NPM модулиудыг импортлоход ашигладаг. NPM модулиудад хандахын тулд "npm:" гэсэн тусгай URL угтвар байдаг бөгөөд үүнийг ердийн Deno модулиудтай адил ашиглаж болно. Жишээлбэл, NPM модулийг импортлохын тулд та "npm:chalk@5";'-с импортлох { chalk }-г зааж өгч, NPM скриптийг ажиллуулахын тулд "deno run --allow-env --allow" командын мөрөөс ажиллуулж болно. -npm:create- vite-extra-г уншина уу.”

Deno-д NPM багцуудыг ашиглах нь 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 = тийм, зөвшөөрөх; n = үгүй, үгүйсгэх) >

Шинэ хувилбарт NPM-ийн бус сайжруулалтууд нь V8 хөдөлгүүрийг 10.9 хувилбараар шинэчлэх, цоожтой файлуудыг автоматаар илрүүлэх, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo()-г тогтворжуулах зэрэг орно. болон Deno APIs. .uid(), ажиллаж байгаа командуудад зориулж шинэ тогтворгүй API Deno.Command() нэмсэн (Deno.spawn, Deno.spawnSync болон Deno.spawnChild-ийн бүх нийтийн орлуулалт).

Deno-ийн гол онцлогууд:

  • Аюулгүй байдалд чиглэсэн өгөгдмөл тохиргоо. Файлын хандалт, сүлжээ болон орчны хувьсагчдад хандах хандалт нь анхдагчаар идэвхгүй бөгөөд тодорхой идэвхжсэн байх ёстой. Програмууд нь анхдагчаар тусгаарлагдсан хамгаалагдсан хязгаарлагдмал орчинд ажилладаг бөгөөд тодорхой зөвшөөрөлгүйгээр системийн чадамжид хандах боломжгүй;
  • JavaScript-ээс гадна TypeScript-ийн суурилуулсан дэмжлэг. Төрөл шалгах болон JavaScript үүсгэхийн тулд стандарт TypeScript хөрвүүлэгчийг ашигладаг бөгөөд энэ нь V8 дахь JavaScript задлан шинжилсэнтэй харьцуулахад гүйцэтгэл буурахад хүргэдэг;
  • Ажиллах цаг нь бие даасан гүйцэтгэх боломжтой файл ("deno") хэлбэрээр ирдэг. Deno ашиглан програмуудыг ажиллуулахын тулд та платформдоо зориулж 30 МБ хэмжээтэй, гадны хамааралгүй, систем дээр тусгай суулгац шаарддаггүй нэг ажиллах боломжтой файлыг татахад л хангалттай. Түүнчлэн, deno нь цул хэрэглүүр биш бөгөөд тусад нь ашиглах боломжтой Rust хайрцагны багц (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"-аас "import *" гэсэн кодыг зааж өгч болно. URL-ээр дамжуулан гадаад серверээс татаж авсан файлуудыг кэшд хадгалдаг. Модулийн хувилбаруудтай холбох нь URL доторх хувилбарын дугаарыг зааж өгөх замаар тодорхойлогддог, жишээлбэл, “https://unpkg.com/[имэйлээр хамгаалагдсан]/dist/liltest.js";
  • Бүтэц нь хараат байдлыг шалгах нэгдсэн систем ("deno info" команд) болон код форматлах хэрэгсэл (deno fmt);
  • Бүх програмын скриптүүдийг нэг JavaScript файлд нэгтгэж болно.

Эх сурвалж: opennet.ru

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