Deno: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
м правопис
Рядок 13: Рядок 13:
| license = [[MIT license]]<ref>{{cite web|title=deno/LICENSE at master|url=https://github.com/denoland/deno/blob/master/LICENSE|website=GitHub|accessdate=5 July 2019}}</ref><ref>{{cite web|title=The MIT License|url=https://opensource.org/licenses/MIT|website=Open Source Initiative|accessdate=17 September 2018|date=17 September 2018}}</ref>
| license = [[MIT license]]<ref>{{cite web|title=deno/LICENSE at master|url=https://github.com/denoland/deno/blob/master/LICENSE|website=GitHub|accessdate=5 July 2019}}</ref><ref>{{cite web|title=The MIT License|url=https://opensource.org/licenses/MIT|website=Open Source Initiative|accessdate=17 September 2018|date=17 September 2018}}</ref>
}}
}}
'''Deno''' — програмний проект, що пропонує схожу на [[Node.js]] платформу для відокремленого виконання [[застосунок|застосунків]] на мовах [[JavaScript]] і [[TypeScript]], яка може бути використана для виконання застосунків без прив'язки до [[браузер]]у, наприклад, для створення обробників, що працюють на [[сервер]]і. У Deno використовується [[JavaScript-рушій]] [[V8 (рушій JavaScript)|V8]], який також застосовується в Node.js і браузерах на основі проекту [[Chromium]].
'''Deno''' — програмний проєкт, що пропонує схожу на [[Node.js]] платформу для відокремленого виконання [[застосунок|застосунків]] на мовах [[JavaScript]] і [[TypeScript]], яка може бути використана для виконання застосунків без прив'язки до [[браузер]]у, наприклад, для створення обробників, що працюють на [[сервер]]і. У Deno використовується [[JavaScript-рушій]] [[V8 (рушій JavaScript)|V8]], який також застосовується в Node.js і браузерах на основі проєкту [[Chromium]].


[[сирцевий код|Код]] проекту поширюється під [[ліцензія MIT|ліцензією MIT]]. Проект розвиває [[Раян Дал]] (Ryan Dahl), творець JavaScript-платформи Node.js.
[[сирцевий код|Код]] проєкту поширюється під [[ліцензія MIT|ліцензією MIT]]. Проєкт розвиває [[Раян Дал]] (Ryan Dahl), творець JavaScript-платформи Node.js.


== Особливості ==
== Особливості ==

Версія за 19:51, 16 січня 2021

Deno
ТипRun-time environment
АвторRyan Dahl
Розробникрізні
Перший випуск13 травня 2018; 6 років тому (2018-05-13)[1]
Нестабільний випуск0.32.0 (3 лютого 2020; 4 роки тому (2020-02-03)[2])
Операційна системаLinux, macOS, Microsoft Windows
Мова програмуванняTypeScript, JavaScript, Rust, C++
ЛіцензіяMIT license[3][4]
Онлайн-документаціяdeno.land/manual(англ.)
Репозиторійhttps://github.com/denoland/deno
Вебсайтdeno.com

Deno — програмний проєкт, що пропонує схожу на Node.js платформу для відокремленого виконання застосунків на мовах JavaScript і TypeScript, яка може бути використана для виконання застосунків без прив'язки до браузеру, наприклад, для створення обробників, що працюють на сервері. У Deno використовується JavaScript-рушій V8, який також застосовується в Node.js і браузерах на основі проєкту Chromium.

Код проєкту поширюється під ліцензією 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

Код з зовнішніх ресурсів завантажується і кешується на локальній системі, але ніколи автоматично не оновлюється (для поновлення потрібно явно запустити застосунок з прапором "--reload");

  • Ефективна обробка в застосунках мережевих запитів по HTTP, платформа розрахована на створення високопродуктивних мережевих застосунків;
  • Можливість створення універсальних веб-застосунків, які можуть виконатися як в Deno, так і в звичайному веб-браузері;
  • Крім runtime платформа Deno також виконує роль пакетного менеджера і дозволяє всередині коду звертатися до модулів по URL. Наприклад, для завантаження модуля можна вказати в коді
import * as log from "https://deno.land/std/log/mod.ts"

Файли, завантажені з зовнішніх серверів по URL кешуються. Прив'язка до версій модулів визначаються через вказування номерів версій всередині URL, наприклад, "https://unpkg.com/[email protected]/dist/liltest.js";

  • До складу інтегрована система інспектування залежностей (команда "deno info") і утиліта для форматування коду (deno fmt).
  • Для розробників застосунків запропонований набір стандартних модулів, які пройшли додатковий аудит і перевірку на сумісність;
  • Всі скрипти застосунку можуть бути об'єднані в один JavaScript файл.

Відмінності від Node.js:

  • Deno не використовує пакетний менеджер npm і не прив'язується до репозиторіїв, адресація модулів здійснюється через URL або по файловому путі, а самі модулі можуть розміщуватися на будь-якому сайті;
  • У Deno не використовується package.json для визначення модулів;
  • Різниця API, все асинхронні дії в Deno повертають promise;
  • Deno вимагає явного визначення всіх необхідних повноважень для файлів, мережі та змінних оточення;
  • Всі помилки, які не забезпечені обробниками, призводять до завершення виконання програми;
  • У Deno застосовується система модулів ECMAScript і не підтримується require().

Виноски

  1. Contributors, denoland/deno, Github. Процитовано 5 July 2019.
  2. Deno 0.32.0. Процитовано 3 February 2020 — через GitHub.
  3. deno/LICENSE at master. GitHub. Процитовано 5 July 2019.
  4. The MIT License. Open Source Initiative. 17 September 2018. Процитовано 17 September 2018.

Посилання