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"));
  }
}

Если вам нравится то, что вы читаете, подумайте о том, чтобы присоединиться к Medium и прочитать еще много статей. Часть вашего гонорара идет на поддержку таких авторов, как я. Нажмите здесь, чтобы присоединиться.