Тема цієї статті може не відповідати . (May 2019) |
Deno — програмний проєкт, що пропонує схожу на Node.js платформу для відокремленого виконання застосунків на мовах JavaScript і TypeScript, яка може бути використана для виконання застосунків без прив'язки до браузеру, наприклад, для створення обробників, що працюють на сервері. У Deno використовується JavaScript-рушій V8, який також застосовується в Node.js і браузерах на основі проєкту Chromium.
Тип | |
---|---|
Автор | Ryan Dahl |
Розробник | різні |
Перший випуск | 13 травня 2018 |
Нестабільний випуск | 0.32.0 (3 лютого 2020 ) |
Операційна система | Linux, macOS, Microsoft Windows |
Мова програмування | TypeScript, JavaScript, Rust, |
Ліцензія | MIT license |
Онлайн-документація | deno.land/manual(англ.) |
Репозиторій | https://github.com/denoland/deno |
Вебсайт | deno.com |
|
Код проєкту поширюється під ліцензією MIT. Проєкт розвиває Раян Дал (Ryan Dahl), творець JavaScript-платформи Node.js.
Особливості
Однією з головних цілей створення нового runtime для JavaScript є надання більш захищеного оточення. Для підвищення безпеки обв'язка навколо рушія V8 написана на мові Rust, що дозволяє уникнути багатьох вразливостей, що виникають через низькорівневу роботу з пам'яттю, таких як звернення до області пам'яті після її звільнення, розіменування нульових вказівників і вихід за межі буфера. Для обробки запитів в неблокуючому режимі застосовується платформа Tokio, також написана на мові Rust. Tokio дозволяє створювати високопродуктивні застосунки на основі подієво-орієнтованої архітектури (Event-driven), що підтримують багатонитевість і обробку мережевих запитів в асинхронному режимі.
Основні особливості Deno:
- Орієнтація на безпеку в конфігурації за замовчуванням. Звернення до файлів, мережеві можливості і доступ до змінних оточення за замовчуванням блоковані і вимагають явного включення;
- Вбудована підтримка мови TypeScript крім JavaScript;
- Runtime поставляється в формі одного самодостатнього виконуваного файлу ("deno"). Для запуску застосунків за допомогою Deno досить завантажити для своєї платформи один виконуваний файл, розміром близько 10 Мб, що не мають зовнішніх залежностей і не вимагає якогось особливого установки в систему;
- При запуску програми, а також для завантаження модулів можна використовувати адресацію через URL. Наприклад, для запуску програми welcome.js можна використовувати команду
deno https://deno.land/std/examples/welcome.js [ 19 лютого 2020 у Wayback Machine.]
Код з зовнішніх ресурсів завантажується і кешується на локальній системі, але ніколи автоматично не оновлюється (для поновлення потрібно явно запустити застосунок з прапором "--reload");
- Ефективна обробка в застосунках мережевих запитів по HTTP, платформа розрахована на створення високопродуктивних мережевих застосунків;
- Можливість створення універсальних вебзастосунків, які можуть виконатися як в Deno, так і в звичайному веббраузері;
- Крім runtime платформа Deno також виконує роль пакетного менеджера і дозволяє всередині коду звертатися до модулів по URL. Наприклад, для завантаження модуля можна вказати в коді
import * as log from "https://deno.land/std/log/mod.ts [ 19 лютого 2020 у Wayback Machine.]"
Файли, завантажені з зовнішніх серверів по URL, кешуються. Прив'язка до версій модулів визначаються через вказування номерів версій всередині URL, наприклад, "https://unpkg.com/liltest@0.0.5/dist/liltest.js [ 19 лютого 2020 у Wayback Machine.]";
- До складу інтегрована система інспектування залежностей (команда "deno info") і утиліта для форматування коду (deno fmt).
- Для розробників застосунків запропонований набір стандартних модулів, які пройшли додатковий аудит і перевірку на сумісність;
- Всі скрипти застосунку можуть бути об'єднані в один JavaScript файл.
Відмінності від Node.js:
- Deno не використовує пакетний менеджер npm і не прив'язується до репозиторіїв, адресація модулів здійснюється через URL або по файловому шляху, а самі модулі можуть розміщуватися на будь-якому сайті;
- Різниця API, всі асинхронні дії в Deno повертають promise;
- Deno вимагає явного визначення всіх необхідних повноважень для файлів, мережі та змінних оточення;
- Всі помилки, які не забезпечені обробниками, призводять до завершення виконання програми;
- У Deno застосовується система модулів ECMAScript і не підтримується require().
Виноски
- . Архів оригіналу за 30 травня 2019. Процитовано 5 July 2019.
- . Архів оригіналу за 22 лютого 2020. Процитовано 3 лютого 2020 — через GitHub.
- . GitHub. Архів оригіналу за 29 травня 2019. Процитовано 5 липня 2019.
- . Open Source Initiative. 17 вересня 2018. Архів оригіналу за 9 травня 2020. Процитовано 17 вересня 2018.
Посилання
- Офіційний сайт
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Tema ciyeyi statti mozhe ne vidpovidati zagalnim kriteriyam znachushosti Vikipediyi Bud laska dopomozhit pidtverditi znachushist dodavshi posilannya na nadijni vtorinni dzherela yaki ye nezalezhnimi dlya ciyeyi temi Yaksho znachushist zalishitsya nepidtverdzhenoyu stattya mozhe buti ob yednana z inshoyu statteyu perenapravlena na inshu stattyu abo viluchena May 2019 Deno programnij proyekt sho proponuye shozhu na Node js platformu dlya vidokremlenogo vikonannya zastosunkiv na movah JavaScript i TypeScript yaka mozhe buti vikoristana dlya vikonannya zastosunkiv bez priv yazki do brauzeru napriklad dlya stvorennya obrobnikiv sho pracyuyut na serveri U Deno vikoristovuyetsya JavaScript rushij V8 yakij takozh zastosovuyetsya v Node js i brauzerah na osnovi proyektu Chromium DenoTipAvtorRyan DahlRozrobnikrizniPershij vipusk13 travnya 2018 6 rokiv tomu 2018 05 13 Nestabilnij vipusk0 32 0 3 lyutogo 2020 4 roki tomu 2020 02 03 Operacijna sistemaLinux macOS Microsoft WindowsMova programuvannyaTypeScript JavaScript Rust C LicenziyaMIT licenseOnlajn dokumentaciyadeno land manual angl Repozitorijhttps github com denoland denoVebsajtdeno com Mediafajli u Vikishovishi Kod proyektu poshiryuyetsya pid licenziyeyu MIT Proyekt rozvivaye Rayan Dal Ryan Dahl tvorec JavaScript platformi Node js OsoblivostiOdniyeyu z golovnih cilej stvorennya novogo runtime dlya JavaScript ye nadannya bilsh zahishenogo otochennya Dlya pidvishennya bezpeki obv yazka navkolo rushiya V8 napisana na movi Rust sho dozvolyaye uniknuti bagatoh vrazlivostej sho vinikayut cherez nizkorivnevu robotu z pam yattyu takih yak zvernennya do oblasti pam yati pislya yiyi zvilnennya rozimenuvannya nulovih vkazivnikiv i vihid za mezhi bufera Dlya obrobki zapitiv v neblokuyuchomu rezhimi zastosovuyetsya platforma Tokio takozh napisana na movi Rust Tokio dozvolyaye stvoryuvati visokoproduktivni zastosunki na osnovi podiyevo oriyentovanoyi arhitekturi Event driven sho pidtrimuyut bagatonitevist i obrobku merezhevih zapitiv v asinhronnomu rezhimi Osnovni osoblivosti Deno Oriyentaciya na bezpeku v konfiguraciyi za zamovchuvannyam Zvernennya do fajliv merezhevi mozhlivosti i dostup do zminnih otochennya za zamovchuvannyam blokovani i vimagayut yavnogo vklyuchennya Vbudovana pidtrimka movi TypeScript krim JavaScript Runtime postavlyayetsya v formi odnogo samodostatnogo vikonuvanogo fajlu deno Dlya zapusku zastosunkiv za dopomogoyu Deno dosit zavantazhiti dlya svoyeyi platformi odin vikonuvanij fajl rozmirom blizko 10 Mb sho ne mayut zovnishnih zalezhnostej i ne vimagaye yakogos osoblivogo ustanovki v sistemu Pri zapusku programi a takozh dlya zavantazhennya moduliv mozhna vikoristovuvati adresaciyu cherez URL Napriklad dlya zapusku programi welcome js mozhna vikoristovuvati komandu deno https deno land std examples welcome js 19 lyutogo 2020 u Wayback Machine Kod z zovnishnih resursiv zavantazhuyetsya i keshuyetsya na lokalnij sistemi ale nikoli avtomatichno ne onovlyuyetsya dlya ponovlennya potribno yavno zapustiti zastosunok z praporom reload Efektivna obrobka v zastosunkah merezhevih zapitiv po HTTP platforma rozrahovana na stvorennya visokoproduktivnih merezhevih zastosunkiv Mozhlivist stvorennya universalnih vebzastosunkiv yaki mozhut vikonatisya yak v Deno tak i v zvichajnomu vebbrauzeri Krim runtime platforma Deno takozh vikonuye rol paketnogo menedzhera i dozvolyaye vseredini kodu zvertatisya do moduliv po URL Napriklad dlya zavantazhennya modulya mozhna vkazati v kodi import as log from https deno land std log mod ts 19 lyutogo 2020 u Wayback Machine Fajli zavantazheni z zovnishnih serveriv po URL keshuyutsya Priv yazka do versij moduliv viznachayutsya cherez vkazuvannya nomeriv versij vseredini URL napriklad https unpkg com liltest 0 0 5 dist liltest js 19 lyutogo 2020 u Wayback Machine Do skladu integrovana sistema inspektuvannya zalezhnostej komanda deno info i utilita dlya formatuvannya kodu deno fmt Dlya rozrobnikiv zastosunkiv zaproponovanij nabir standartnih moduliv yaki projshli dodatkovij audit i perevirku na sumisnist Vsi skripti zastosunku mozhut buti ob yednani v odin JavaScript fajl Vidminnosti vid Node js Deno ne vikoristovuye paketnij menedzher npm i ne priv yazuyetsya do repozitoriyiv adresaciya moduliv zdijsnyuyetsya cherez URL abo po fajlovomu shlyahu a sami moduli mozhut rozmishuvatisya na bud yakomu sajti Riznicya API vsi asinhronni diyi v Deno povertayut promise Deno vimagaye yavnogo viznachennya vsih neobhidnih povnovazhen dlya fajliv merezhi ta zminnih otochennya Vsi pomilki yaki ne zabezpecheni obrobnikami prizvodyat do zavershennya vikonannya programi U Deno zastosovuyetsya sistema moduliv ECMAScript i ne pidtrimuyetsya require Vinoski Arhiv originalu za 30 travnya 2019 Procitovano 5 July 2019 Arhiv originalu za 22 lyutogo 2020 Procitovano 3 lyutogo 2020 cherez GitHub GitHub Arhiv originalu za 29 travnya 2019 Procitovano 5 lipnya 2019 Open Source Initiative 17 veresnya 2018 Arhiv originalu za 9 travnya 2020 Procitovano 17 veresnya 2018 PosilannyaOficijnij sajt