Deno (бағдарламалық жасақтама) - Deno (software)

Дено
Deno.svg
Түпнұсқа автор (лар)Райан Даль
ӘзірлеушілерӘр түрлі
Бастапқы шығарылым13 мамыр 2018 ж; 2 жыл бұрын (2018-05-13)[1]
Тұрақты шығарылым
1.5.4 / 23 қараша 2020 ж; 4 күн бұрын (2020-11-23)[2]
Репозиторийgithub.com/ деноланд/ deno
ЖазылғанTypeScript, JavaScript, Тот, C ++
Операциялық жүйеLinux, macOS, Microsoft Windows
ТүріЖұмыс уақыты ортасы
ЛицензияMIT лицензиясы[3][4]
Веб-сайтдено.жер Мұны Wikidata-да өңдеңіз

Дено Бұл жұмыс уақыты үшін JavaScript және TypeScript бұл негізделеді V8 JavaScript қозғалтқышы және Тот бағдарламалау тілі. Ол жасаған Райан Даль, түпнұсқа жасаушысы Node.js, және өнімділікке бағытталған.[5] Бұл туралы Даль 2018 жылы «Node.js туралы өкінетін 10 нәрсе» әңгімесі кезінде жариялады.[6] Deno нақты жұмыс уақыты рөлін де алады пакет менеджері бір шегінде орындалатын, жеке пакетті басқару бағдарламасын талап етуден гөрі.[7][8]

Тарих

Deno-ны JSConf EU 2018-де Райан Даль өзінің «Node.js туралы өкінетін 10 нәрсе» әңгімесінде жариялады.[6] Өз сөзінде Райан алғашқы дизайн шешімдеріне өкінетінін айтты Node.js, қолданбау туралы өзінің таңдауына назар аудара отырып Уәделер жылы API бұрынғы GYP құрылыс жүйесін, node_modules және pack.json жобалау, қолдану, файл кеңейтімдерін қалдыру, index.js сиқырлы модуль ажыратымдылығы және V8 қораптағы ортасын бұзу.[9] Ақырында ол сериялау құралдарымен хабарлама жіберу арқылы жүйелік қоңырау байланыстыруға қол жеткізуді көздейтін Deno прототипін ұсынды. Хаттама буферлері, және командалық жолдың жалаушаларын беру үшін қатынасты басқару.

Deno бастапқыда жазылған Барыңыз және қолданылған Хаттама буферлері артықшылығы бар (Go, жүйелік қоңырауға қол жеткізе отырып) және жеңілдетілген (V8) жақтар арасындағы сериялау үшін.[10] Алайда, көп ұзамай Го ауыстырылды Тот екі реттік жұмыс уақытына байланысты қоқыс шығару қысым.[11] Tokio орнына енгізілген либув асинхронды оқиғаға негізделген платформа ретінде,[12] және Жалпақ буферлер тезірек, «нөлдік көшірме» сериялау және сериясыздандыру үшін қабылданады[13] бірақ кейінірек 2019 жылдың тамызында FlatBuffers жойылды[14] 2019 жылдың сәуірінде серияланудың айтарлықтай үстеме бағасын өлшейтін эталондарды жариялағаннан кейін.[15]

Go стандартты кітапханасының үлгісіндегі стандартты кітапхана 2018 жылдың қарашасында Node.js тәуелділігі ағашының жарылу мәселесін ішінара шешетін кең құралдар мен утилиталармен қамтамасыз ету үшін құрылды.[16]

Deno 1.0 ресми нұсқасы 2020 жылы 13 мамырда шығарылды.[17]

Шолу

Deno өнімді болуды мақсат етеді сценарий заманауи бағдарламашы үшін орта.[7] Node.js-ке ұқсас, Deno атап өтеді оқиғаларға негізделген сәулет жиынтығын қамтамасыз етеді блоктаушы емес IO негізгі утилиталары, олардың бұғаттау нұсқаларымен бірге. Deno жасау үшін пайдаланылуы мүмкін веб-серверлер, ғылыми есептеулер жүргізу және т.б. ашық бастапқы бағдарламалық жасақтама астында MIT лицензиясы.[18]

Node.js-мен салыстыру

Deno және Node.js - бұл Google-да жасалған жұмыс уақыты V8 JavaScript қозғалтқышы, сол қозғалтқышта қолданылған Google Chrome. Олардың екеуінде де ішкі бар оқиға циклдары және қамтамасыз ету командалық интерфейстер сценарийлерді және жүйелік утилиталардың кең спектрін қолдануға арналған.

Deno негізінен Node.js-тен келесі аспектілерде ауытқып кетеді:[7]

  1. ES модулін орнына әдепкі модуль жүйесі ретінде қолданады Жалпы JS.
  2. Қолданады URL мекенжайлары ұқсас жергілікті немесе қашықтықтағы тәуелділіктерді жүктеу үшін браузерлер.
  3. Ресурстарды алуға арналған кіріктірілген пакет менеджері кіреді, сондықтан қажет емес NPM.
  4. Қолдайды TypeScript суреттен түсірілген TypeScript көмегімен қораптан шығарыңыз құрастырушы кэштеу механизмдерімен.
  5. Кең ауқымды веб-API бар браузерлермен жақсы үйлесімділікке бағытталған.
  6. Құммен қорғалған кодты іске қосу үшін файлдық жүйеге және желіге кіруге рұқсат береді.
  7. Пайдалану үшін API қайта жасайды Уәделер, ES6 және TypeScript мүмкіндіктері.
  8. Сыртқы тәуелділіктерсіз үлкен стандартты кітапхананы ұсына отырып, негізгі API мөлшерін азайтады.
  9. Артықшылықты жүйелік API интерфейстерін шақыру және байланыстыру үшін хабарлама жіберетін арналарды пайдалану.

Мысал

Бұл файлдық жүйесіз немесе желілік рұқсаттарсыз негізгі Deno сценарийін іске қосады (құм жәшігі режимі):

deno run main.ts

Рұқсаттарды қосу үшін ашық жалаулар қажет:

deno run --allow-read --allow-net main.ts

Сценарийдің тәуелділік ағашын тексеру үшін ақпарат ішкі команда:

deno info main.ts

Негізгі сәлем әлем бағдарламасы Deno-да Node.js сияқты көрінеді:

консоль.журнал(«Сәлем Әлем»);

Ғаламдық Дено атау кеңістігі браузерде жоқ API интерфейстерін көрсетеді. A Unix мысық бағдарламасы келесідей жүзеге асырылуы мүмкін:

/ * кат.тс * // * Deno API интерфейсі `Deno` ат кеңістігі арқылы көрсетіледі. * /const { stdout, ашық, көшірме, доға } = Дено;// Жоғарғы деңгейдегі күтуге қолдау көрсетіледіүшін (рұқсат етіңіз мен = 0; мен < доға.ұзындығы; мен++) {    const файл атауы = доға[мен]; // Пәрмен жолының аргументтерін алады.    const файл = күту ашық(файл атауы); // Оқу үшін сәйкес файлды ашады.    күту көшірме(файл, stdout); // «файлдан» «stdout» дейін нөлдік көшірмесі бар асинхронды көшірмені орындайды.}

The Көшірме Жоғарыда қолданылған функция Go сияқты жұмыс істейді көшіру, қайда stdout (стандартты шығу ) баратын жер Жазушы, және файл көзі болып табылады Оқырман.Бұл бағдарламаны іске қосу үшін бізге оқуға рұқсат беру керек файлдық жүйе:

deno run - рұқсатсыз оқылатын cat.ts myfile

Келесі Deno сценарийі негізгі болып табылады HTTP сервері:

// URL мекенжайын қолдана отырып, қашықтағы Deno стандартты кітапханасынан «қызмет етеді».импорт { қызмет ету } бастап «https://deno.land/[email protected]/http/server.ts»;// `serve` функциясы асинхронды итераторды қайтарады, сұраныстар ағыны пайда боладыүшін күту (const req туралы қызмет ету({ порт: 8000 })) {    req.жауап беру({ дене: «Сәлем Әлем  n» });}

Осы бағдарламаны іске қосқан кезде Deno автоматты түрде қашықтағы стандартты кітапхана файлдарын жүктеп, кэштейді және кодты компиляциялайды, біз де стандартты кітапхана сценарийін (мысалы, файлдық сервер ) тікелей жүктемей, файлдың аты ретінде URL мекенжайын беру арқылы ( барлық рұқсаттарды қосады):

$ deno run -A https://deno.land/std/http/file_server.tsHttps://deno.land/std/http/file_server.ts жүктеп алыңызHttps://deno.land/std/http/file_server.ts құрастырыңыз...HTTP сервері http://0.0.0.0:4500/ сайтында тыңдау

Әдебиеттер тізімі

  1. ^ «Салымшылар, деноланд / дено, Github». Алынған 5 шілде 2019.
  2. ^ «Шығарылымдар · деноланд / дено». Алынған 2020-11-23.
  3. ^ «deno / LICENCE at master». GitHub. Алынған 5 шілде 2019.
  4. ^ «MIT лицензиясы». Ашық ақпарат көзі. 17 қыркүйек 2018 жыл. Алынған 17 қыркүйек 2018.
  5. ^ «Deno: Original Node.js Creator-ден қауіпсіз V8 TypeScript жұмыс уақыты». InfoQ. Алынған 2019-05-17.
  6. ^ а б JSConf (2018-06-06), Node.js туралы өкінетін 10 нәрсе - Райан Даль - JSConf EU 2018, алынды 2019-05-17
  7. ^ а б в «Deno нұсқаулығы». deno.land. Алынған 2019-05-17.
  8. ^ Пол Крилл (2018-06-21). «Райан Дальдың Node.js өкініші Деноға алып келеді». InfoWorld.
  9. ^ Даль, Райан (2018-06-06). «Түйіндегі қателіктер» (PDF). Github.
  10. ^ «denoland / deno, branch» голанг"". Github.
  11. ^ «Ұсыныс: Rust портына көшіруді және Tokio-ны қолдануды қарастырыңыз». GitHub.
  12. ^ «Tokio - Rust бағдарламалау тілінің асинхронды жұмыс уақыты». Tokio.rs.
  13. ^ «Протобуф бұл жағдай үшін көп шығындар сияқты көрінеді?». Github.
  14. ^ «Жалпақ буферді алып тастау». GitHub.
  15. ^ «Жалпақ буферді ауыстыру». GitHub.
  16. ^ «denoland / deno_std: deno стандартты модульдер». Github.
  17. ^ «Deno 1.0». deno.land. Алынған 2020-05-14.
  18. ^ «Deno өндіріске дайын». InfoQ. Алынған 2020-07-01.

Сыртқы сілтемелер