Deno JavaScript платформасы NPM модульдерімен үйлесімді

Deno 1.28 шығарылды, бұл серверлік өңдеушілерді жасау үшін пайдаланылуы мүмкін JavaScript және TypeScript қолданбаларын құмсалғыштауға арналған құрылым. Платформаны Node.js жасаушы Райан Дал әзірлеген. Node.js сияқты, Deno Chromium негізіндегі браузерлерде де қолданылатын V8 JavaScript қозғалтқышын пайдаланады. Сонымен қатар, Deno Node.js шанышқысы емес, ол нөлден жасалған жаңа жоба болып табылады. Жоба коды MIT лицензиясы бойынша таратылады. Құрылымдар Linux, 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 үлгісіне қолдау сол деңгейде сақталады және NPM модульдерін импорттау үшін Deno-ның таныс URL-негізделген жүктеу схемасы пайдаланылады. NPM модульдеріне қол жеткізу үшін әдеттегі Deno модульдері сияқты пайдалануға болатын арнайы URL префиксі «npm:» бар. Мысалы, NPM модулін импорттау үшін "npm:chalk@5" ішінен 'import { 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-зиянды бағдарлама' сұрады ├ Бұл шақыруды айналып өту үшін --allow-write арқылы қайта іске қосыңыз. └ Рұқсат бересіз бе? [y/n] (y = иә, рұқсат; n = жоқ, жоққа шығару) >

Жаңа нұсқадағы NPM емес жақсартуларға 8 нұсқасын шығару үшін V10.9 қозғалтқышын жаңарту, құлыптары бар файлдарды автоматты түрде анықтау, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() тұрақтандыру кіреді. және Deno API интерфейстері.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” пәрменін пайдалануға болады. Сыртқы ресурстардан алынған код жергілікті жүйеде жүктеледі және кэштеледі, бірақ ешқашан автоматты түрде жаңартылмайды (жаңарту үшін қолданбаны «--қайта жүктеу» жалаушасымен нақты іске қосу қажет);
  • Қолданбаларда HTTP арқылы желілік сұраныстарды тиімді өңдеу;платформа өнімділігі жоғары желілік қосымшаларды құруға арналған;
  • Deno-да да, қарапайым веб-шолғышта да орындалатын әмбебап веб-қосымшаларды жасау мүмкіндігі;
  • Модульдердің стандартты жиынтығының болуы, оларды пайдалану сыртқы тәуелділіктермен байланыстыруды қажет етпейді. Стандартты жинақтағы модульдер қосымша аудит пен үйлесімділік тестілеуінен өтті;
  • Орындалу уақытынан басқа, Deno платформасы пакет менеджері ретінде де әрекет етеді және код ішіндегі URL мекенжайы арқылы модульдерге қол жеткізуге мүмкіндік береді. Мысалы, модульді жүктеу үшін «https://deno.land/std/log/mod.ts» журналынан импорттау * кодында көрсетуге болады. URL арқылы сыртқы серверлерден жүктелген файлдар кэштеледі. Модуль нұсқаларына байланыстыру URL ішіндегі нұсқа нөмірлерін көрсету арқылы анықталады, мысалы, “https://unpkg.com/[электрондық пошта қорғалған]/dist/liltest.js»;
  • Құрылым тәуелділікті тексерудің біріктірілген жүйесін («deno info» пәрмені) және кодты пішімдеуге арналған утилитаны (deno fmt) қамтиды;
  • Барлық қолданба сценарийлерін бір JavaScript файлына біріктіруге болады.

Ақпарат көзі: opennet.ru

пікір қалдыру