Deno (/ˈdiːnoʊ/, произносится как dee-no
) — это среда выполнения JavaScript, TypeScript и WebAssembly с безопасными настройками по умолчанию и удобным интерфейсом для разработчиков.
Он построен на V8, Rust и Tokio.
Stars: 87.7k License: MIT Languages: Rust(62.2%), JavaScript(26.1%) Link: https://github.com/denoland/deno
Особенности
- Обеспечивает функциональность веб-платформы и принимает стандарты веб-платформы. Например, с помощью модулей ES, веб-воркеров и поддержки
fetch()
.
- Безопасность по умолчанию. Нет доступа к файлам, сети или среде, если это явно не разрешено.
- Поддерживает TypeScript из коробки.
- Отправляет один исполняемый файл (
deno
). - Предоставляет встроенные инструменты разработки, такие как форматирование кода (
deno fmt
), линтер (deno lint
), средство запуска тестов (deno test
) и языковой сервер для вашего редактора. - Имеет набор проверенных (аудированных) стандартных модулей, которые гарантированно работают с Deno.
- Может объединять сценарии в один файл JavaScript или исполняемый файл.
- Поддерживает использование существующих модулей npm.
- Лучшая в своем классе скорость HTTP-сервера
Философия
Deno стремится стать продуктивной и безопасной средой для написания сценариев для современного программиста.
Deno всегда будет распространяться как один исполняемый файл. Учитывая URL-адрес программы Deno, она может быть запущена только с исполняемым исполняемым файлом размером ~ 31 мегабайт. Deno явно берет на себя роль как среды выполнения, так и менеджера пакетов. Он использует стандартный совместимый с браузером протокол для загрузки модулей: URL-адреса.
Помимо прочего, Deno — отличная замена служебным скриптам, которые исторически могли быть написаны с помощью Bash или Python.
Цели
- Поставлять как один исполняемый файл (
deno
). - Обеспечьте безопасные значения по умолчанию: если это специально не разрешено, скрипты не могут получить доступ к файлам, среде или сети.
- Быть совместимым с браузером: подмножество программ Deno, полностью написанных на JavaScript и не использующих глобальное пространство имен
Deno
(или тестовых функций для него), также должно запускаться в современном веб-браузере без изменений. - Предоставьте встроенные инструменты для улучшения опыта разработчиков: например. модульное тестирование, форматирование кода и линтинг.
- Держите концепции V8 подальше от пользовательской земли.
- Эффективно обслуживайте HTTP.
Другие ключевые поведения
- Извлекать и кэшировать удаленный код при первом выполнении и никогда не обновлять его, пока код не будет запущен с флагом
--reload
. (Таким образом, это все еще будет работать на самолете.) - Модули/файлы, загружаемые с удаленных URL-адресов, должны быть неизменяемыми и кэшируемыми.
Начиная
Попробуйте запустить простую программу:
deno run https://deno.land/std/examples/welcome.ts
Или более сложный:
const listener = Deno.listen({ port: 8000 }); console.log("http://localhost:8000/"); for await (const conn of listener) { serve(conn); } async function serve(conn: Deno.Conn) { for await (const { respondWith } of Deno.serveHttp(conn)) { respondWith(new Response("Hello world")); } }