Платформаи Deno JavaScript бо модулҳои NPM мувофиқ аст

Deno 1.28 бароварда шуд, чаҳорчӯба барои қумбокскунии барномаҳои JavaScript ва TypeScript, ки метавонад барои эҷоди коркардкунандагони тарафи сервер истифода шавад. Платформа аз ҷониби Райан Дал, созандаи Node.js таҳия шудааст. Мисли Node.js, Deno муҳаррики V8 JavaScript-ро истифода мебарад, ки он инчунин дар браузерҳои Chromium асосёфта истифода мешавад. Дар айни замон, Deno як фардкунандаи Node.js нест, балки лоиҳаи навест, ки аз сифр сохта шудааст. Рамзи лоиҳа тибқи иҷозатномаи MIT паҳн карда мешавад. Сохтаҳо барои Linux, Windows ва macOS омода карда шудаанд.

Лоиҳаи Deno барои фароҳам овардани муҳити амнтар ба корбарон ва рафъи хатогиҳои консептуалӣ дар меъмории Node.js сохта шудааст. Барои беҳтар кардани амният, муҳаррики V8 дар Rust навишта шудааст, ки аз бисёр осебпазириҳо, ки аз коркарди хотираи сатҳи паст ба вуҷуд меоянд, пешгирӣ мекунад. Барои коркарди дархостҳо дар реҷаи бебанд, платформаи Tokio, ки дар Rust навишта шудааст, истифода мешавад. Токио ба шумо имкон медиҳад, ки барномаҳои баландмаъноро дар асоси меъмории ба рӯйдодҳо асосёфта эҷод кунед, ки дархостҳои шабакавиро дар реҷаи асинхронӣ дастгирӣ мекунад.

Тағйироти калидӣ дар нашри нав мӯътадилсозии мутобиқат бо бастаҳои дар анбори NPM ҷойгиршуда мебошад, ки ба Дено имкон медиҳад беш аз 1.3 миллион модули барои платформаи Node.js сохташударо истифода барад. Масалан, замимаҳои дар асоси Deno асосёфта ҳоло метавонанд модулҳои дастрасии доимии додаҳо ба монанди Prisma, Mongoose ва MySQL, инчунин чаҳорчӯбаҳои пешрафта, аз қабили React ва Vue -ро истифода баранд. Баъзе модулҳои NPM то ҳол бо Deno номувофиқ боқӣ мемонанд, масалан аз сабаби пайвастшавӣ ба унсурҳои муҳити мушаххаси Node.js ба монанди файли package.json. Истифодаи фармони "deno compile" бо модулҳои NPM ҳанӯз имконнопазир аст. Варақаҳои оянда нақша доранд, ки ин номувофиқатӣ ва маҳдудиятҳоро ҳал кунанд.

Дастгирии системаи модули қаблан истифодашудаи ECMAScript ва модели Web API-и Deno дар як сатҳ нигоҳ дошта мешавад ва схемаи боркунии ба URL- асосёфтаи Дено барои воридоти модулҳои NPM истифода мешавад. Барои дастрасӣ ба модулҳои NPM, префикси махсуси URL "npm:" мавҷуд аст, ки онро метавон ҳамчун модулҳои муқаррарии Deno истифода бурд. Масалан, барои ворид кардани модули NPM, шумо метавонед 'import { chalk }-ро аз "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 = ҳа, иҷозат; n = не, рад) >

Такмили ғайри NPM дар версияи нав аз навсозии муҳаррики V8 барои баровардани 10.9, муайянкунии автоматии файлҳо бо қулфҳо, мӯътадилсозии Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() иборат аст. ва API-ҳои Deno. .uid (), илова кардани API нави ноустувори Deno.Command() барои фармонҳои иҷрошаванда (ивазкунии универсалӣ барои Deno.spawn, Deno.spawnSync ва Deno.spawnChild).

Хусусиятҳои асосии Deno:

  • Конфигуратсияи пешфарз, ки ба амният нигаронида шудааст. Дастрасии файл, шабака ва дастрасӣ ба тағирёбандаҳои муҳити зист бо нобаёнӣ ғайрифаъол карда мешаванд ва бояд ба таври возеҳ фаъол карда шаванд. Барномаҳо ба таври нобаёнӣ дар муҳити ҷудошудаи қум кор мекунанд ва бидуни додани иҷозатҳои возеҳ ба қобилиятҳои система дастрасӣ надоранд;
  • Дастгирии дарунсохт барои TypeScript берун аз JavaScript. Барои тафтиши намуд ва тавлиди JavaScript, компилятори стандартии TypeScript истифода мешавад, ки ин боиси паст шудани иҷроиш дар муқоиса бо таҳлили JavaScript дар V8 мешавад;
  • Вақти иҷро дар шакли як файли иҷрошавандаи мустақил («deno») меояд. Барои иҷро кардани барномаҳо бо истифодаи Deno, шумо бояд танҳо як файли иҷрошавандаро барои платформаи худ зеркашӣ кунед, андозаи тақрибан 30 МБ, ки вобастагии беруна надорад ва ягон насби махсусро дар система талаб намекунад. Гузашта аз ин, deno як барномаи монолитӣ нест, балки маҷмӯи бастаҳои crate Rust (deno_core, rusty_v8) мебошад, ки онҳоро алоҳида истифода бурдан мумкин аст;
  • Ҳангоми оғоз кардани барнома, инчунин барои бор кардани модулҳо, шумо метавонед суроғаи URL-ро истифода баред. Масалан, барои иҷро кардани барномаи Welcome.js, шумо метавонед фармони "deno https://deno.land/std/examples/welcome.js" -ро истифода баред. Рамз аз захираҳои беруна дар системаи маҳаллӣ зеркашӣ ва кэш карда мешавад, аммо ҳеҷ гоҳ ба таври худкор нав карда намешавад (навсозӣ ба таври возеҳ иҷро кардани барномаро бо парчами "--reload" талаб мекунад);
  • Коркарди пурсамари дархостҳои шабакавӣ тавассути HTTP дар барномаҳо; платформа барои эҷоди барномаҳои шабакавии сермахсул пешбинӣ шудааст;
  • Имконияти эҷоди барномаҳои универсалии веб, ки онҳоро ҳам дар Deno ва ҳам дар браузери муқаррарии веб иҷро кардан мумкин аст;
  • Мавҷудияти маҷмӯи стандартии модулҳо, ки истифодаи онҳо ҳатмӣ ба вобастагии берунаро талаб намекунад. Модулҳои коллексияи стандартӣ аз санҷиши аудити иловагӣ ва мутобиқат гузаштанд;
  • Илова ба вақти корӣ, платформаи Deno инчунин ҳамчун мудири бастаҳо амал мекунад ва ба шумо имкон медиҳад, ки ба модулҳо тавассути URL дар дохили код дастрасӣ пайдо кунед. Масалан, барои бор кардани модул, шумо метавонед дар рамзи "import * ҳамчун сабт аз "https://deno.land/std/log/mod.ts" муайян кунед. Файлҳои аз серверҳои беруна тавассути URL зеркашидашуда кэш карда мешаванд. Пайвастшавӣ ба версияҳои модул тавассути муайян кардани рақамҳои версияи дохили URL муайян карда мешавад, масалан, "https://unpkg.com/[почтаи электронӣ ҳифз карда шудааст]/dist/liltest.js";
  • Сохтор дорои системаи ҳамгирошудаи санҷиши вобастагӣ (фармони "deno info") ва утилита барои форматкунии код (deno fmt);
  • Ҳама скриптҳои барномаро метавон дар як файли JavaScript муттаҳид кард.

Манбаъ: opennet.ru

Илова Эзоҳ