Муаллифи Node.js платформаи бехатарии JavaScript Deno 1.0-ро пешниҳод кард

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

Рақами назарраси версия бо устувории APIҳо дар фазои номи Deno алоқаманд аст, ки барои ҳамкории барномаҳо бо ОС масъуланд. Интерфейсҳои нармафзор, ки то ҳол доранд муътадил нагардидааст, ба таври нобаёнӣ пинҳон мешаванд ва танҳо ҳангоми кор дар реҷаи "--ноустувор" дастрасанд. Вақте ки версияҳои нав ташаккул меёбанд, чунин APIҳо тадриҷан устувор мешаванд. API дар фазои номҳои ҷаҳонӣ, ки дорои функсияҳои умумӣ ба монанди setTimeout() ва fetch() мебошад, то ҳадди имкон ба API-и браузерҳои маъмулии веб наздик аст ва мувофиқи стандартҳои веб барои браузерҳо таҳия шудааст. API-ҳои аз ҷониби Rust пешниҳодшуда, ки мустақиман дар коди платформа истифода мешаванд, инчунин интерфейс барои таҳияи плагинҳо барои вақти корӣ Deno, то ҳол мӯътадил нашудаанд ва инкишофро идома медиҳанд.

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

асосӣ хусусиятҳо Дено:

  • Конфигуратсияи пешфарз, ки ба амният нигаронида шудааст. Дастрасии файл, шабака ва дастрасӣ ба тағирёбандаҳои муҳити зист бо нобаёнӣ ғайрифаъол карда мешаванд ва бояд ба таври возеҳ фаъол карда шаванд. Барномаҳо ба таври нобаёнӣ дар муҳити ҷудошудаи қум кор мекунанд ва бидуни додани иҷозатҳои возеҳ ба қобилиятҳои система дастрасӣ надоранд;
  • Дастгирии дарунсохт барои TypeScript берун аз JavaScript. Компилятори стандартии TypeScript барои тафтиши намудҳо ва тавлиди JavaScript истифода мешавад, ки ин боиси баланд шудани иҷроиш дар муқоиса бо таҳлили JavaScript дар V8 мегардад. Дар оянда, мо нақша дорем, ки татбиқи худамонро системаи санҷиши навъи TypeScript омода созем, ки он иҷрои коркарди TypeScript-ро бо як андоза беҳтар мекунад;
  • Вақти иҷро дар шакли як файли иҷрошавандаи мустақил («deno») меояд. Барои иҷро кардани барномаҳо бо Deno, кофӣ аст боргузорӣ барои платформаи он як файли иҷрошаванда мавҷуд аст, ки андозаи он тақрибан 20 МБ мебошад, ки вобастагии беруна надорад ва ягон насби махсусро дар система талаб намекунад. Гузашта аз ин, deno як барномаи монолитӣ нест, балки маҷмӯи бастаҳои қуттиҳо дар 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 муттаҳид кард.

Фарқиятҳо аз Node.js:

  • Deno мудири бастаи npm -ро истифода намебарад
    ва ба анборҳо алоқаманд нест, модулҳо тавассути URL ё роҳи файл ирсол карда мешаванд ва худи модулҳо метавонанд дар ҳама гуна вебсайт ҷойгир карда шаванд;
  • Deno барои муайян кардани модулҳо "package.json" -ро истифода намебарад;
  • Фарқияти API, ҳама амалҳои асинхронӣ дар Deno ваъда медиҳанд;
  • Deno таърифи дақиқи ҳама иҷозатҳои заруриро барои файлҳо, тағирёбандаҳои шабака ва муҳити зист талаб мекунад;
  • Ҳама хатогиҳое, ки бо коркардкунандагон таъмин нашудаанд, боиси қатъ шудани барнома мешаванд;
  • Deno системаи модули ECMAScript-ро истифода мебарад ва талаб намекунад ();
  • Сервери HTTP-и дарунсохтаи Deno дар TypeScript навишта шудааст ва дар болои васлкунакҳои аслии TCP кор мекунад, дар ҳоле ки сервери HTTP дар C навишта шудааст ва барои JavaScript пайвандҳоро таъмин мекунад. Таҳиягарони Deno ба оптимизатсияи тамоми қабати васлаки TCP ва таъмин намудани интерфейси умумӣ тамаркуз кардаанд. Deno HTTP Server гузариши камтарро таъмин мекунад, аммо таъхири пешгӯишавандаро кафолат медиҳад. Масалан, дар озмоиш як замимаи оддӣ дар асоси сервери Deno HTTP тавонист 25 ҳазор дархостро дар як сония бо таъхири ҳадди аксар 1.3 миллисония коркард кунад. Дар Node.js, як замимаи шабеҳ дар як сония 34 ҳазор дархостро коркард мекард, аммо таъхирҳо аз 2 то 300 миллисонияро ташкил медоданд.
  • Deno бо бастаҳои Node.js (NPM) мувофиқ нест, аммо алоҳида таҳия карда мешавад байниқабат барои мутобиқат бо китобхонаи стандартии Node.js, вақте ки он таҳия мешавад, бештар ва бештари барномаҳои барои Node.js навишташуда метавонанд дар Deno кор кунанд.
  • Манбаъ: opennet.ru

Илова Эзоҳ