Недавно вышла новость о выходе новой версии фреймворка Deno 1.28, который позволяет выполнять автономные приложения JavaScript и TypeScript, которые можно использовать для создания контроллеров, работающих на сервере.
Deno был создан, чтобы предоставить пользователям более безопасную среду. и устранить неправильные представления об архитектуре Node.js. Для повышения безопасности обвязка вокруг движка V8 написана на Rust, что предотвращает многие уязвимости, возникающие из-за низкоуровневой обработки памяти.
Для обработки запросов в неблокирующем режиме используется фреймворк Tokio, также написанный на Rust. Tokio позволяет создавать высокопроизводительные приложения на основе событийно-управляемой архитектуры, поддерживающей многопоточность и асинхронную обработку сетевых запросов.
Некоторые особенности Основные из них Deno следующие:
- Встроенная поддержка языка TypeScript в дополнение к JavaScript. Для проверки типов и генерации JavaScript используется обычный компилятор TypeScript, что приводит к падению производительности по сравнению с парсингом JavaScript в V8.
- Среда выполнения представлена в виде отдельного автономного исполняемого файла («deno»). Чтобы запускать приложения с помощью Deno, вы просто загружаете исполняемый файл для вашей платформы размером около 30 МБ, который не имеет внешних зависимостей и не требует специальной установки в вашей системе.
- Эффективная обработка приложений сетевых запросов через HTTP, платформа предназначена для создания высокопроизводительных сетевых приложений.
- Возможность создания универсальных веб-приложений, которые могут работать как в Deno, так и в обычном веб-браузере
- Наличие стандартного набора модулей, использование которых не требует привязки к внешним зависимостям.
- Модули из стандартной коллекции прошли дополнительный аудит и тестирование на совместимость
- Пакет включает встроенную систему проверки зависимостей (команда "deno info") и утилиту форматирования кода (deno fmt).
- Все скрипты приложения могут быть объединены в один файл JavaScript.
Главные новости Deno 1.28
Ключевым изменением в новой версии является стабилизация совместимости с пакетами, размещенными в репозитории NPM, что позволяет Deno использовать более 1,3 миллиона модулей создан для платформы Node.js. Например, приложения на основе Deno теперь могут использовать постоянные модули доступа к данным, такие как Prisma, Mongoose и MySQL, а также интерфейсные платформы, такие как React и Vue.
Некоторые модули NPM по-прежнему несовместимы с Deno., например, из-за привязок к определенным средам Node.js, таким как файл package.json. Также невозможно использовать команду «deno compile» с модулями NPM. В будущих выпусках планируется устранить эти несовместимости и ограничения.
Модульная система Унаследованная от Deno модель модуля ECMAScript и веб-API остается прежней., а знакомая схема загрузки Deno на основе URL используется для импорта модулей NPM.
Использование пакетов NPM в Deno намного проще, чем в Node.js., так как нет необходимости предварительно устанавливать модули (модули устанавливаются при первом запуске приложения), файл package.json не используется и каталог node_modules не используется, используется по умолчанию (модули кэшируются в общем каталоге, но можно вернуться к предыдущему поведению с помощью параметра «--node-modules-dir»).
приложения, основанные на NPM сохраняют возможность использования механизмов контроля доступа, Изоляция и активация Deno для расширенных функций, влияющих на безопасность. Чтобы противостоять атакам через сомнительные зависимости, Deno по умолчанию блокирует все попытки доступа к системе из зависимостей и отображает предупреждение об обнаруженных проблемах. Например, когда модуль пытается записать в /usr/bin/, для этой операции будет отображаться запрос подтверждения:
Усовершенствования, не связанные с NPM в новой версии включить модернизацию двигателя V8 для версии 10.9, автоматическое обнаружение файлов с блокировками, стабилизация Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() и API Deno. .uid(), добавив новый нестабильный API Deno.Command() для выполнения команд (универсальная замена Deno.spawn, Deno.spawnSync и Deno.spawnChild).
Наконец, стоит упомянуть, что Как и Node.js, Deno использует движок JavaScript V8., который также используется в браузерах на основе Chromium. При этом Deno — это не форк Node.js, а новый проект, построенный с нуля. Код проекта распространяется под лицензией MIT и есть готовые сборки для Linux, Windows и macOS.
Если вы интересно узнать о нем больше, вы можете проконсультироваться по следующей ссылке.