Deno: відмінності між версіями
[перевірена версія] | [очікує на перевірку] |
Deineka (обговорення | внесок) Немає опису редагування |
→Особливості: Вже є підтримка package.json |
||
(Не показані 6 проміжних версій 6 користувачів) | |||
Рядок 4: | Рядок 4: | ||
| author = [[Ryan Dahl]] |
| author = [[Ryan Dahl]] |
||
| developer = різні |
| developer = різні |
||
| released = {{Start date and age|2018|05|13}}<ref>{{cite web | url=https://github.com/denoland/deno/graphs/contributors | accessdate=5 July 2019|title=Contributors, denoland/deno, Github}}</ref> |
| released = {{Start date and age|2018|05|13}}<ref>{{cite web | url=https://github.com/denoland/deno/graphs/contributors | accessdate=5 July 2019 | title=Contributors, denoland/deno, Github | archive-date=30 травня 2019 | archive-url=https://web.archive.org/web/20190530101226/https://github.com/denoland/deno/graphs/contributors }}</ref> |
||
| latest preview version = 0.32.0 |
| latest preview version = 0.32.0 |
||
| latest preview date = {{Start date and age|2020|02|03}}<ref>{{cite web|url=https://github.com/denoland/deno/releases/tag/v0.32.0|accessdate=3 |
| latest preview date = {{Start date and age|2020|02|03}}<ref>{{cite web|url=https://github.com/denoland/deno/releases/tag/v0.32.0|accessdate=3 лютого 2020|title=Deno 0.32.0|via=[[GitHub]]|archive-date=22 лютого 2020|archive-url=https://web.archive.org/web/20200222155224/https://github.com/denoland/deno/releases/tag/v0.32.0}}</ref> |
||
| repo = https://github.com/denoland/deno |
| repo = https://github.com/denoland/deno |
||
| programming language = [[TypeScript]], [[JavaScript]], [[Rust]], [[C++]] |
| programming language = [[TypeScript]], [[JavaScript]], [[Rust]], [[C++]] |
||
| operating system = [[Linux]], [[macOS]], [[Microsoft Windows]] |
| operating system = [[Linux]], [[macOS]], [[Microsoft Windows]] |
||
| genre = [[Runtime system|Run-time environment]] |
| genre = [[Runtime system|Run-time environment]] |
||
| license = [[MIT license]]<ref>{{cite web|title=deno/LICENSE at master|url=https://github.com/denoland/deno/blob/master/LICENSE|website=GitHub|accessdate=5 |
| license = [[MIT license]]<ref>{{cite web|title=deno/LICENSE at master|url=https://github.com/denoland/deno/blob/master/LICENSE|website=GitHub|accessdate=5 липня 2019|archive-date=29 травня 2019|archive-url=https://web.archive.org/web/20190529235918/https://github.com/denoland/deno/blob/master/LICENSE}}</ref><ref>{{cite web|title=The MIT License|url=https://opensource.org/licenses/MIT|website=Open Source Initiative|accessdate=17 вересня 2018|date=17 вересня 2018|archive-date=9 травня 2020|archive-url=https://web.archive.org/web/20200509193552/https://opensource.org/licenses/MIT}}</ref> |
||
}} |
}} |
||
'''Deno''' — програмний |
'''Deno''' — програмний проєкт, що пропонує схожу на [[Node.js]] платформу для відокремленого виконання [[застосунок|застосунків]] на мовах [[JavaScript]] і [[TypeScript]], яка може бути використана для виконання застосунків без прив'язки до [[браузер]]у, наприклад, для створення обробників, що працюють на [[сервер]]і. У Deno використовується [[JavaScript-рушій]] [[V8 (рушій JavaScript)|V8]], який також застосовується в Node.js і браузерах на основі проєкту [[Chromium]]. |
||
[[сирцевий код|Код]] проєкту поширюється під [[ліцензія MIT|ліцензією MIT]]. Проєкт розвиває [[Раян Дал]] (Ryan Dahl), творець JavaScript-платформи Node.js. |
|||
⚫ | Однією з головних цілей створення нового runtime для JavaScript є надання більш захищеного оточення. Для підвищення безпеки обв'язка навколо рушія V8 написана на мові [[Rust]], що дозволяє уникнути багатьох вразливостей, що виникають через низькорівневу |
||
== Особливості == |
== Особливості == |
||
⚫ | Однією з головних цілей створення нового runtime для JavaScript є надання більш захищеного оточення. Для підвищення безпеки обв'язка навколо рушія V8 написана на мові [[Rust]], що дозволяє уникнути багатьох вразливостей, що виникають через низькорівневу роботу з пам'яттю, таких як звернення до області пам'яті після її звільнення, розіменування нульових вказівників і вихід за межі буфера. Для обробки запитів в неблокуючому режимі застосовується платформа Tokio, також написана на мові Rust. Tokio дозволяє створювати високопродуктивні застосунки на основі подієво-орієнтованої архітектури (Event-driven), що підтримують [[багатонитевість]] і обробку мережевих запитів в асинхронному режимі. |
||
Основні особливості Deno: |
Основні особливості Deno: |
||
* Орієнтація на безпеку в конфігурації за замовчуванням. Звернення до файлів, мережеві можливості і доступ до змінних оточення за замовчуванням блоковані і вимагають явного включення; |
* Орієнтація на безпеку в конфігурації за замовчуванням. Звернення до файлів, мережеві можливості і доступ до змінних оточення за замовчуванням блоковані і вимагають явного включення; |
||
Рядок 23: | Рядок 25: | ||
* Runtime поставляється в формі одного самодостатнього виконуваного файлу ("deno"). Для запуску застосунків за допомогою Deno досить завантажити для своєї платформи один виконуваний файл, розміром близько 10 Мб, що не мають зовнішніх залежностей і не вимагає якогось особливого установки в систему; |
* Runtime поставляється в формі одного самодостатнього виконуваного файлу ("deno"). Для запуску застосунків за допомогою Deno досить завантажити для своєї платформи один виконуваний файл, розміром близько 10 Мб, що не мають зовнішніх залежностей і не вимагає якогось особливого установки в систему; |
||
* При запуску програми, а також для завантаження модулів можна використовувати адресацію через [[URL]]. Наприклад, для запуску програми welcome.js можна використовувати команду |
* При запуску програми, а також для завантаження модулів можна використовувати адресацію через [[URL]]. Наприклад, для запуску програми welcome.js можна використовувати команду |
||
deno https://deno.land/std/examples/welcome.js |
deno https://deno.land/std/examples/welcome.js {{Webarchive|url=https://web.archive.org/web/20200219093657/https://deno.land/std/examples/welcome.js |date=19 лютого 2020 }} |
||
Код з зовнішніх ресурсів завантажується і кешується на локальній системі, але ніколи автоматично не оновлюється (для поновлення потрібно явно запустити застосунок з прапором "<tt>--reload</tt>"); |
Код з зовнішніх ресурсів завантажується і кешується на локальній системі, але ніколи автоматично не оновлюється (для поновлення потрібно явно запустити застосунок з прапором "<tt>--reload</tt>"); |
||
* Ефективна обробка в застосунках мережевих запитів по [[HTTP]], платформа розрахована на створення високопродуктивних мережевих застосунків; |
* Ефективна обробка в застосунках мережевих запитів по [[HTTP]], платформа розрахована на створення високопродуктивних мережевих застосунків; |
||
* Можливість створення універсальних |
* Можливість створення універсальних вебзастосунків, які можуть виконатися як в Deno, так і в звичайному веббраузері; |
||
* Крім runtime платформа Deno також виконує роль пакетного менеджера і дозволяє всередині коду звертатися до модулів по URL. Наприклад, для завантаження модуля можна вказати в коді |
* Крім runtime платформа Deno також виконує роль пакетного менеджера і дозволяє всередині коду звертатися до модулів по URL. Наприклад, для завантаження модуля можна вказати в коді |
||
import * as log from "https://deno.land/std/log/mod.ts" |
import * as log from "https://deno.land/std/log/mod.ts {{Webarchive|url=https://web.archive.org/web/20200219093700/https://deno.land/std/log/mod.ts |date=19 лютого 2020 }}" |
||
Файли, завантажені з зовнішніх серверів по URL кешуються. Прив'язка до версій модулів визначаються через вказування номерів версій всередині URL, наприклад, "https://unpkg.com/[email protected]/dist/liltest.js"; |
Файли, завантажені з зовнішніх серверів по URL, кешуються. Прив'язка до версій модулів визначаються через вказування номерів версій всередині URL, наприклад, "https://unpkg.com/[email protected]/dist/liltest.js {{Webarchive|url=https://web.archive.org/web/20200219093659/https://unpkg.com/[email protected]/dist/liltest.js |date=19 лютого 2020 }}"; |
||
* До складу інтегрована система інспектування залежностей (команда "deno info") і утиліта для форматування коду (deno fmt). |
* До складу інтегрована система інспектування залежностей (команда "deno info") і утиліта для форматування коду (deno fmt). |
||
* Для розробників застосунків запропонований набір стандартних модулів, які пройшли додатковий аудит і перевірку на сумісність; |
* Для розробників застосунків запропонований набір стандартних модулів, які пройшли додатковий аудит і перевірку на сумісність; |
||
Рядок 35: | Рядок 37: | ||
Відмінності від Node.js: |
Відмінності від Node.js: |
||
* Deno не використовує пакетний менеджер [[npm]] і не прив'язується до репозиторіїв, адресація модулів здійснюється через URL або по файловому |
* Deno не використовує пакетний менеджер [[npm]] і не прив'язується до репозиторіїв, адресація модулів здійснюється через URL або по файловому шляху, а самі модулі можуть розміщуватися на будь-якому сайті; |
||
⚫ | |||
* У Deno не використовується <tt>package.json</tt> для визначення модулів; |
|||
⚫ | |||
* Deno вимагає явного визначення всіх необхідних повноважень для файлів, мережі та змінних оточення; |
* Deno вимагає явного визначення всіх необхідних повноважень для файлів, мережі та змінних оточення; |
||
* Всі помилки, які не забезпечені обробниками, призводять до завершення виконання програми; |
* Всі помилки, які не забезпечені обробниками, призводять до завершення виконання програми; |
||
Рядок 52: | Рядок 53: | ||
[[Категорія:JavaScript]] |
[[Категорія:JavaScript]] |
||
[[Категорія:Програмне забезпечення на Rust]] |
[[Категорія:Програмне забезпечення на Rust]] |
||
[[Категорія:Вільні сервери]] |
|||
[[Категорія:Програмне забезпечення в розробці]] |
[[Категорія:Програмне забезпечення в розробці]] |
Поточна версія на 11:02, 6 березня 2023
![]() | Тема цієї статті може не відповідати загальним критеріям значущості Вікіпедії. (May 2019) |
![]() | |
Тип | Run-time environment |
---|---|
Автор | Ryan Dahl |
Розробник | різні |
Перший випуск | 13 травня 2018[1] |
Нестабільний випуск | 0.32.0 (3 лютого 2020[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 [Архівовано 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/[email protected]/dist/liltest.js [Архівовано 19 лютого 2020 у Wayback Machine.]";
- До складу інтегрована система інспектування залежностей (команда "deno info") і утиліта для форматування коду (deno fmt).
- Для розробників застосунків запропонований набір стандартних модулів, які пройшли додатковий аудит і перевірку на сумісність;
- Всі скрипти застосунку можуть бути об'єднані в один JavaScript файл.
Відмінності від Node.js:
- Deno не використовує пакетний менеджер npm і не прив'язується до репозиторіїв, адресація модулів здійснюється через URL або по файловому шляху, а самі модулі можуть розміщуватися на будь-якому сайті;
- Різниця API, всі асинхронні дії в Deno повертають promise;
- Deno вимагає явного визначення всіх необхідних повноважень для файлів, мережі та змінних оточення;
- Всі помилки, які не забезпечені обробниками, призводять до завершення виконання програми;
- У Deno застосовується система модулів ECMAScript і не підтримується require().
- ↑ Contributors, denoland/deno, Github. Архів оригіналу за 30 травня 2019. Процитовано 5 July 2019.
- ↑ Deno 0.32.0. Архів оригіналу за 22 лютого 2020. Процитовано 3 лютого 2020 — через GitHub.
- ↑ deno/LICENSE at master. GitHub. Архів оригіналу за 29 травня 2019. Процитовано 5 липня 2019.
- ↑ The MIT License. Open Source Initiative. 17 вересня 2018. Архів оригіналу за 9 травня 2020. Процитовано 17 вересня 2018.
|