Ключевые вещи, которые 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 не будет загружать их снова, пока мы специально не попросим об этом с помощью --reload
flag.
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!