Ключевые вещи, которые Deno приносит разработчикам на стол

Node.js, что-то очень знакомое разработчикам более десяти лет. Заменит ли что-то под названием Deno эту суперпопулярную среду выполнения в ближайшие дни?

Примечание. Node.js и Deno - дети одного отца, Райана Даля.

Он рассказывает о своих ошибках с Nodejs здесь и о более глубоком изучении смысла здесь.

Deno - это что-то совершенно новое для разработчиков. Как введение

Deno - это простая, современная и безопасная среда выполнения для JavaScript и TypeScript, которая использует V8 и построена на Rust.

Deno строить поверх

  • V8 как node.js
  • Rust вместо C ++ в узле
  • Tokio (цикл событий) вместо libuv
  • TypeScript вместо vanila JS

Я отметил здесь установку и некоторые наиболее интересные аспекты этой новой среды выполнения.

Установка

Использование Homebrew (macOS):

brew install deno

Использование Cargo (Windows, macOS, Linux):

cargo install deno

TypeScript по рождению

Deno по умолчанию поддерживает машинописный текст. Никаких сложных настроек или настроек не требуется.

Покойся с миром tsconfig.json

Встроенная поддержка машинописного текста, то есть вы можете запускать файлы машинописного текста напрямую без компиляции в javascript.

Deno упрощает использование TypeScript без необходимости использования каких-либо файлов конфигурации. Тем не менее, можно писать программы на простом JavaScript и без проблем выполнять их с помощью Deno.

Безопасность по умолчанию

Защищено по умолчанию. Нет доступа к файлам, сети или среде, если явно не разрешено.

Дено безопасен своим рождением. Вы должны явно указать безопасность, такую ​​как сеть, среда или что-то в этом роде.

В отличие от узла, обозначает запуск в песочнице на хост-машине, т.е.

  • Нет доступа к файловой системе
  • Нет доступа к сети
  • Нет доступа к другим скриптам
  • Нет доступа к переменной Env

Таким образом, из среды выполнения нет доступа к таким вещам, как сеть, файловая система и т. Д. Когда ваш код пытается получить доступ к этим ресурсам, вам предлагается разрешить действие.

Давайте попробуем пример

Теперь запустите файл:

deno run FirstDeno.ts

Теперь в игру вступает защитный барьер

error: Uncaught PermissionDenied: network access to "0.0.0.0:8000", run again with the --allow-net flag
at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11)
at Object.sendSync ($deno$/ops/dispatch_json.ts:72:10)
at Object.listen ($deno$/ops/net.ts:51:10)
at listen ($deno$/net.ts:152:22)
at serve (https://deno.land/[email protected]/http/server.ts:261:20)
at file:///Users/tunvirrahman/Downloads/FirstDeno.ts:2:11

Поскольку Deno по умолчанию безопасен, и вы должны явно разрешить сеть

deno run — allow-net FirstDeno.ts

Вот доступные параметры безопасности, чтобы дать

--allow-all # Allow all permissions
--allow-env # Allow environment access
--allow-hrtime # Allow high resolution time measurement
--allow-net=<allow-net> # Allow network access
--allow-plugin # Allow loading plugins
--allow-read=<allow-read> # Allow file system read access
--allow-run # Allow running subprocesses
--allow-write=<allow-write> # Allow file system write access

Менеджер пакетов RIP

Deno не требует диспетчера пакетов или package.json. Вместо этого он использовал современный синтаксис ES, как показано ниже

Больше никаких package.json и node_modules

import { serve } from “https://deno.land/[email protected]/http/server.ts";

Когда мы запускаем приложение, Deno загружает все импортированные модули и кеширует их. После того, как они будут кэшированы, Deno не будет загружать их снова, пока мы специально не попросим об этом с помощью --reloadflag.

Deno не поддерживает пакеты npm. Это тревожно, правда?

Скорее, он имеет систему управления модулями, аналогичную Go, где модули импортируются через URL-адрес.

Обещано быть основанным на обещаниях

Он поддерживает ожидание верхнего уровня. Все асинхронное - это обещание, основанное на Deno.

До свидания, ад обратный вызов

const res = await fetch("https://someUrl")

Это не требует, чтобы содержащий метод был асинхронным.

Стандартные модули Deno

Эти модули не имеют внешних зависимостей и проверяются основной командой Deno. Намерение состоит в том, чтобы иметь стандартный набор высококачественного кода, который могут безбоязненно использовать все проекты Deno.

Чтобы просмотреть документацию по модулям:

  • Перейдите на https://deno.land/std/.
  • Перейдите к любому интересующему вас модулю.
  • Щелкните «Просмотр документации».

Совместимость с браузером

Deno стремится быть совместимым с браузером. С технической точки зрения, при использовании модулей ES нам не нужно использовать какие-либо инструменты сборки, такие как webpack, чтобы сделать наше приложение готовым к использованию в браузере.

Однако такие инструменты, как Babel, будут переносить код в версию JavaScript для ES5, и в результате код можно запускать даже в старых браузерах, которые не поддерживают все новейшие функции языка. Но это также происходит за счет включения большого количества ненужного кода в окончательный файл и раздувания выходного файла.

Нам решать, какова наша главная цель, и делать соответствующий выбор.

Заключение

Ребята из Node.js. Не паникуйте. Узел никуда не денется!

Если вы пишете программное обеспечение с нуля, возможно, стоит изучить Deno. А пока это для энтузиастов.

Спасибо за прочтение. Привет 🥂

Примечание команды Plain English

Вы знали, что у нас четыре публикации и канал на YouTube? Вы можете найти все это на нашей домашней странице plainenglish.io - проявите немного любви, подписавшись на наши публикации и подписавшись на наш канал YouTube!