Deno - это простая, современная и безопасная среда выполнения для JavaScript и TypeScript, которая использует V8 и построена на Rust.
Мы возвращаемся к динозаврам.
Что такое Deno и что с ним делать?
Deno - это новая среда выполнения для выполнения JavaScript и TypeScript вне веб-браузера. Deno пытается предоставить автономный инструмент для быстрого создания сложных сценариев . - Deno Blog
В мире JavaScript появилась новая среда выполнения. Deno является преемником NodeJS, решая некоторые из вопросов, обсуждаемых в презентации Ошибки проектирования в Node, представленной создателем как NodeJS, так и Deno: Райаном Далем.
Экосистема NodeJS помогла первопроходцу JavaScript стать тем, чем он является сегодня. Он был построен по необходимости и позволил решить современные проблемы. Это все еще действующая экосистема, однако для ее понимания, настройки и запуска требуется время.
Основные моменты, которые Райанс говорит о недостатках NodeJS, таковы:
- Не придерживаться обещаний
- Безопасность
- Система сборки (GYP)
- package.json
- node_modules
- require («модуль») без расширения «.js»
- index.js
Это знание - это сожаление - все скопилось в Deno. Эти сложные ошибки выдал разработчикам Deno. Deno все исправляет. Думаю?
Давайте быстро рассмотрим, что такое Deno. С сайта:
Deno - это простая, современная и безопасная среда выполнения для JavaScript и TypeScript, которая использует V8 и построена на Rust.
1. Защищено по умолчанию. Нет доступа к файлам, сети или среде, если явно не разрешено.
2. Поддерживает TypeScript из коробки.
3. Поставляет только один исполняемый файл.
4. Имеет встроенные утилиты например, инспектор зависимостей (обозначение info) и средство форматирования кода (обозначение fmt).
5. Имеет набор проверенных (проверенных) стандартных модулей, которые гарантированно работают с Deno: identify.land/std
Также отметили о философии проекта:
Deno стремится быть производительной и безопасной средой написания сценариев для современного программиста.
Deno всегда будет распространяться как единый исполняемый файл. Учитывая URL-адрес программы Deno, она запускается только с заархивированным исполняемым файлом размером ~ 15 мегабайт. Deno явно берет на себя роль как среды выполнения, так и диспетчера пакетов. Он использует стандартный совместимый с браузером протокол для загрузки модулей: URL-адреса.
Помимо прочего, Deno - отличная замена служебным скриптам, которые исторически могли быть написаны на bash или python.
Сценарии позволяют пользователям быстро и лаконично связывать вместе сложные системы и выражать идеи, не беспокоясь о таких деталях, как управление памятью или сборка систем - Deno Blog
Теперь ваши проекты сосредоточены на написании сценариев. Начинаем что-то делать; Теперь. Создание новой реализации; Теперь. Практика идеи, которую вы только что придумали; Теперь.
В этом сила сценариев. Вот почему мне потребовалось так много времени, чтобы заставить TypeScript / NodeJS / JavaScript / и т. Д. Работать вместе. Я пришел к этому с помощью сценариев. Вот почему я всегда рассматривал Python как инструмент для написания сценариев. Скрипты бывают быстрыми, грязными, готовыми и доступными. Приложения: продуманы, спланированы, спроектированы, внедрены, разработаны, протестированы, отправлены - в указанном порядке и постоянно в дальнейшем.
В этой статье мы рассмотрим ключевые концепции Deno, чтобы вы могли творить чудеса.
Оглавление
- Ключевые концепции 🤔
- Установка 💻
- Структура проекта🏠
- Привет Дено Лэнд 🦕
- Проекты 🤖
1. Ключевые концепции
Безопасность
Deno Использует тот факт, что JavaScript - это безопасная песочница. По умолчанию скриптам не предоставляются разрешения, если не указано иное. Это позволяет разработчику наделять скрипт мощью, тогда как многие скрипты Python используются по умолчанию sudo. JavaScript - это просто среда выполнения, и как среда выполнения мы просто не позволяем программе проникать в операционную систему.
Зависимости
Зависимости - или модули, требуемые вашим кодом - вместо этого используют модули, на которые ссылаются как URL-адреса или пути к файлам. Это отличается от NPM, который включает и объединяет код библиотеки модулей, установленный в node_modules (устраняя как требования, так и сожаления node_module). Кроме того, он использует синтаксис import/export модуля ES в соответствии со стандартами.
Извлеченная версия кода извлекается только один раз и кэшируется, если не найдена. Хотя разработчик может --reload их снова, после извлечения версии она остается до тех пор, пока не будет удалена в противном случае. Это может сократить время сборки и выполнения, а также минимизировать время разработки / развертывания.
Deno специально просит минимизировать зависимости и циклический импорт при создании модулей; Это тоже хорошее практическое правило.
Машинопись
По умолчанию Deno компилирует и использует TypeScript. Исполняемый файл Deno поставляется с компилятором TypeScript, так что вы можете просто установить Deno и запустить.
Если вы еще не пробовали TypeScript, попробуйте сейчас.
TypeScript дает разработчику безопасность типов, чего крайне не хватает в JavaScript. Типобезопасность - это возможность сообщить среде выполнения / компилятору, какой тип объекта представляет собой переменная, вместо того, чтобы угадывать, исходя из того, какая переменная была передана.
Ошибки
Deno умирает, когда получает ошибку. Как сказал Райан, «если произойдет ошибка, он просто умрет. Верно?" Я согласен, Райан. Если Deno получит ошибку при компиляции, он просто прервет выполнение и умрет.
2. Установки
Deno можно установить на macOS, Windows и Linux.
С сайта:
Оболочка (Mac, Linux):
$ curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
$ iwr https://deno.land/x/install/install.ps1 -useb | iex
Homebrew (Mac):
$ brew install deno
Шоколадный (Windows):
$ choco install deno
Совок (Windows):
$ scoop install deno
Сборка и установка из исходников с помощью Cargo
$ cargo install deno
Дополнительные параметры установки см. В разделе identify_install.
Затем вы можете запустить пример из Deno без каких-либо файлов проекта!
deno run https://deno.land/std/examples/welcome.ts
3. Структура проекта
Структура проекта
При создании модуля Deno (или большинства проектов Deno) вы будете смотреть на такую папку:
my-project/
|- mod.ts # default entry point; do not use index.ts
|- deps.ts # dependencies; use `import {x} from "./deps.ts"
|- README.md # Always include a readme
|- classA.ts
|- classA_test.ts
|- classB.ts
|- classB_test.ts
|- ...
4. Привет Дено Лэнд 🦕
Начнем с базового руководства. Для начала установите Deno на свой компьютер (как указано ранее).
Затем убедитесь, что он установлен с помощью проверки:
deno --version
У вас должно получиться:
deno X.X.X v8 X.X.X typescript X.X.X
Фантастика! Затем создайте папку проекта и измените каталоги на этот проект.
Создайте файл example.ts и добавьте:
console.log('Hello Deno Land 🦕');
Затем запустите программу с помощью:
deno run example.ts
6. Проекты 🤖
Некоторые примеры были взяты из самого проекта Deno, некоторые придумал я, все для вас. Все они доступны в моем проекте GitHub:
Вдобавок мне понравилось Руководство по стилю Deno. Пожалуйста, учитывайте это при создании будущих проектов.
Настройка файлового сервера
Прямо из Примеры Deno; для запуска файлового сервера вам понадобится только командная строка:
deno run --allow-net --allow-read https://deno.land/std/http/file_server.ts
Настройка веб-сервера REST API
Следуя руководству Я нашел здесь, вы можете настроить простой сервер REST API с помощью Deno. В папке проекта сервер REST API находится под theserver/.
Настройка наблюдателя за файлами
// filewatcher.ts
const watcher = Deno.watchFs("/");
for await (const event of watcher) {
console.log(">>>> event", event);
// { kind: "create", paths: [ "/foo.txt" ] }
}
Затем для запуска наблюдателя:
deno run --allow-read filewatcher.ts
Настройка WebView
Модуль WebView можно найти здесь, но на момент написания этого поста он полностью нестабилен.
Я создал простой проект WebView с:
// webview.ts
import { log, WebView } from "./deps.ts";
log.info("Welcome to Deno 🦕");
const html = `<html>
<body>
<div>
<h1>This is a website</h1>
<p>I wonder if we can load a React module here?</p>
</div>
</body>
</html>`;
await new WebView({
title: "Local webview_deno example",
url: `data:text/html,${encodeURIComponent(html)}`,
height: 600,
resizable: true,
debug: true,
frameless: false,
}).run();
Затем запустить в терминале:
deno run -A -r --unstable webview.ts
Докер весело
Я попытался настроить среду Docker для Deno для тестирования, и Я нашел одну, созданную hayd, однако она не работает с некоторыми ошибками URL, описанными в проблемах проекта (это было исправлено, но не выкатано).
Это всего лишь несколько примеров проектов, которые вы можете создать с помощью Deno. Я определенно буду возиться с ним, поскольку он продолжает расти. Может, я сделаю модуль или три и опубликую их. Я обязательно скоро вернусь с другим постом.
Спасибо, что нашли время прочитать. Я надеюсь, что сегодня вы нашли эту статью полезной для вашего учебного пути. Я думаю, что у Deno есть большой потенциал и то, для чего он может быть использован в проекте. Если вы придумали какие-нибудь изящные проекты, не могли бы вы поделиться ими; Я бы очень хотел их увидеть.
Всего наилучшего и оставайтесь в безопасности - Спенсер