В этой статье я надеюсь дать вам обзор того, что такое Deno. Мы рассмотрим его ключевые функции и спросим, почему вы можете начать изучать этот новый инструмент.
Что такое Дено?
Так что же такое Deno и зачем он был создан? Это среда выполнения JavaScript и TypeScript, что означает, что вы можете писать программы на любом языке и выполнять их из командной строки. В отличие от JavaScript, запускаемого в браузере, программы Deno могут получать доступ к ресурсам на
Если вы знакомы с Node.js и думаете, что Deno звучит очень похоже, вы правы. Deno — детище создателя Node, Райана Даля, который создал Deno, чтобы исправить то, что он считает недостатками дизайна в Node. Цель проекта — предоставить среду сценариев, которая по умолчанию безопасна, рассматривает TypeScript как первоклассный язык и максимально совместима с браузером (там, где это целесообразно).
Функции безопасности
Deno разработан, чтобы быть безопасным из коробки. Весь код по умолчанию выполняется в защищенной песочнице, а это означает, что вам необходимо дать явное разрешение, чтобы разрешить программе доступ к сети или файловой системе.
Программам могут быть предоставлены разрешения со следующими флагами командной строки:
-A, —
—
—
—
—
–разрешить чтение=\: разрешить доступ на чтение к файловой системе. При желании принимает белый список каталогов или файлов, разделенных запятыми.
—
–разрешить запись=\: разрешить доступ на запись к файловой системе. При желании принимает белый список каталогов или файлов, разделенных запятыми.
Первоклассная поддержка TypeScript
Как я упоминал ранее, Deno может выполнять как JavaScript, так и TypeScript. Более того, он поддерживает TypeScript как первоклассный язык. Это означает, что он может загружать и запускать ваш код TypeScript без
Конечно, поскольку TypeScript является расширенным набором современного JavaScript, вы также можете писать свой код на старом добром JS, если хотите! Deno поддерживает некоторые замечательные, удобные для разработчиков функции, такие как импорт модулей ES.
Использование внешнего кода
Как упомянул Райан в своем выступлении, одной из его целей в Deno было избежать необходимости в менеджере пакетов. В отличие от сред выполнения/языков, таких как Node.js и PHP (которые используют менеджеры пакетов npm и composer соответственно), для Deno нет менеджера пакетов.
Вместо этого внешние пакеты импортируются напрямую через URL:
import { Client } from «https: //deno.land/x/mysql@2.2.0/mod.ts»;
При первом запуске скрипта Deno извлечет, скомпилирует и кэширует все импортированные данные, так что последующие запуски будут молниеносными. Очевидно, что бывают случаи, когда вам может понадобиться заставить его повторно получить импорт, и вы можете сделать это с помощью cacheподкоманды:
deno cache —reload my_module.ts
Пакетный хостинг
Хотя Deno не предоставляет реестра пакетов как такового, есть список доступных сторонних модулей. Служба предоставляет стандартизированный версионный
Стандартная библиотека
Deno предоставляет стандартную библиотеку, частично основанную на библиотеке Golang, которая предоставляет набор высококачественных стандартных модулей без
Пакеты стандартной библиотеки не устанавливаются вместе с Deno. Скорее, они доступны в Интернете и связаны с ними, как мы видели в предыдущем разделе. Модули версионные, что позволяет вам привязать свой код к использованию определенной версии:
import { copy } from «https: //deno.land/std@0.50.0/fs/copy.ts»;
Это означает, что любой написанный вами код, основанный на модуле из стандартной библиотеки, должен продолжать работать в будущих версиях.
Библиотека включает в себя различные помощники и утилиты, которые могут вам понадобиться для создания как приложений командной строки, так и приложений на основе HTTP:
архив: модули для работы с файлами tar
async: асинхронные утилиты
bytes: хелперы для работы с бинарными массивами
datetime: помощник для разбора строк даты в Dateобъекты
кодирование: кодировщики для работы с форматами base32, двоичными файлами, CSV, TOML и YAML.
flags: парсер аргументов командной строки
fmt: инструмент для печати форматированного вывода
fs: помощники для работы с файловой системой
hash: модуль для создания хэшей с использованием различных алгоритмов
http: создавать HTTP и файловые серверы и управлять файлами cookie.
io: утилиты для ввода/вывода строк
log: простой модуль ведения журнала
mime: обеспечивает поддержку составных данных.
node: уровень совместимости (в настоящее время в разработке) для кода Node.js
path: утилита для работы с путями
разрешения: помощники для проверки и запроса разрешений безопасности
signal: помощники для обработки сигналов процесса Deno
тестирование: тестовые утверждения для использования со встроенным средством запуска тестов Deno.
uuid: утилиты для генерации и проверки UUID
ws: помощники для создания клиентов и серверов WebSocket
Установка Дено
Deno поставляется как единый исполняемый файл без
Оболочка (macOS, Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
Самодельный (macOS):
brew install deno
Обновление
После установки Deno также может обновить себя до последней версии, используя следующую команду:
deno upgrade
Или вы можете перейти на определенную версию:
deno upgrade —version 1.0.1
Будущее яркое
В руководстве Deno говорится, что это «отличная замена служебным сценариям, которые, возможно, исторически были написаны с помощью Bash или Python». Хотя это, безусловно, верно, я ожидаю, что он все чаще будет использоваться для тех же случаев использования, в которых в настоящее время популярен Node.js. Уже появляется ряд фреймворков, подобных Express/Koa, которые позволяют создавать безопасные для типов REST API, а также становится доступным растущее число сторонних модулей.
Итак, стоит ли вам забыть Node.js и начать изучать Deno? Текущее мнение в отрасли таково, что Node.js не собирается исчезать в ближайшее время, но Deno, безусловно, является технологией, за которой стоит следить.
Фонды Дено
Изучите Deno с нашей коллекцией Deno Foundations. Здесь вы найдете весь наш обзор Deno по мере его публикации, организованный таким образом, чтобы помочь вам как новичку.