Deno.js | Вступление

Опубликовано: 1 Августа, 2021

Введение: DenoJS - это безопасная среда выполнения для JavaScript и TypeScript, основанная на движке JavaScript V8 (разработанном The Chromium Project, Google), языке программирования Rust и Tokio, который представляет собой асинхронную среду выполнения для Rust. NodeJS - это также среда выполнения JavaScript, которая использует движок V8. DenoJS 1.0.0 был выпущен 13 мая 2020 года и создан Райаном Далем, который также является создателем NodeJS.

DenoJS стремится быть продуктивной и безопасной средой написания сценариев, чтобы обеспечить легкий опыт для современных разработчиков. Создатели NodeJS выразили несколько опасений по поводу функционирования NodeJS. Они выразили обеспокоенность по поводу безопасности Node, того, как Node обрабатывает пакеты и другие устаревшие API-интерфейсы в Node, которые, помимо прочего, никогда не изменятся. Node был выпущен в 2009 году, и с тех пор JavaScript сильно изменился. Они хотели сделать лучшую версию NodeJS с современными инструментами JavaScript и API. Они также хотели чего-то, совместимого с браузером и серверной средой, и поэтому пришли к реализации DenoJS.

Преимущества и особенности DenoJS:

  • Безопасность по умолчанию: одним из самых больших преимуществ DenoJS является то, что он защищен по умолчанию. Он работает в среде Sandbox, и, если это специально не разрешено, Deno не имеет доступа к файлам, среде или сети, чего нет в NodeJS. Чтобы получить доступ к среде или сети, нам явно нужно добавить флаги безопасности и разрешения при выполнении приложения Deno. Если соответствующие флаги не добавлены, при запуске приложения будет выдана ошибка PermissionsDenied. Список флажков безопасности представлен ниже.
    • –Allow-write: разрешить доступ для записи
    • –Alow-read: разрешить доступ для чтения
    • –Allow-net: разрешить доступ к сети
    • –Alow-env: разрешить доступ к среде
    • –Alow-plugin: разрешить загрузку внешних подключаемых модулей.
    • –Allow-hrtime: разрешить измерение времени с высоким разрешением
    • –Allow-run: разрешить выполнение подпроцессов
    • -A: разрешить все разрешения
  • Машинопись: DenoJS поддерживает Машинопись прямо из коробки. Мы можем использовать TypeScript или JavaScript при разработке приложений Deno, поскольку компилятор TypeScript также включен в Deno. Следовательно, мы можем просто создать новый .ts и он будет успешно скомпилирован и выполнен с помощью Deno.
  • Единый исполняемый файл: DenoJS поставляется как единый исполняемый файл без зависимостей. Deno пытается предоставить автономный инструмент для быстрого создания сложных сценариев. Как и веб-браузер, он умеет получать и импортировать внешний код. В Deno один файл может определять сложное поведение без каких-либо других инструментов. Учитывая URL-адрес программы Deno, ее можно запустить, используя не более 15 МБ памяти. Deno явно берет на себя роль как среды выполнения, так и диспетчера пакетов.
  • Децентрализованные пакеты: одним из основных недостатков NodeJS является то, как зависимости обрабатываются с помощью пакетов NPM. Например, если мы хотим использовать Express с NodeJS, мы просто установим с помощью npm, и зависимость перейдет в папку node_modules. Проблема в том, что когда установлен Express , это просто не пакет Express. Он также включает зависимости Express. Следовательно, мы получаем множество папок в node_modules , что чрезвычайно усложняет процесс обработки внешних пакетов, а также увеличивает размер приложения. DenoJS предлагает децентрализованные пакеты, т.е. Deno не использует npm . Для Deno нет пакетов NPM, нет файла package.json и нет папки зависимостей node_modules. Он использует стандартный совместимый с браузером протокол для загрузки модулей через URL-адреса . Он импортирует модули, на которые есть ссылки через URL-адреса или пути к файлам из приложения. Если мы хотим импортировать и использовать внешний модуль, мы можем просто импортировать его из URL-адреса:
     https://deno.land/x/[имя_пакета]
  • Совместимость с браузером: DenoJS был разработан для совместимости с браузером. Набор скриптов Deno, которые полностью написаны на JavaScript и не используют глобальное пространство имен Deno, также может быть выполнен с помощью Deno в современном веб-браузере без каких-либо изменений кода. Deno также следует стандартизированным API-интерфейсам JavaScript для браузеров. Поскольку Deno совместим с браузером, у нас есть доступ и мы можем использовать API JavaScript, такие как fetch . У нас также есть доступ к глобальному объекту окна JavaScript.
  • Модули ES: в отличие от NodeJS, Deno использует современный синтаксис JavaScript. Deno использует модули ES ( синтаксис импорта ) и не поддерживает общий синтаксис требований JavaScript, используемый в NodeJS. Все внешние модули ES импортируются через URL-адреса, как в GoLang , например:
     импортировать {serve} из "https://deno.land/x/http/server.ts"

    Этот импорт используется для создания простого HTTP- сервера в Deno. Еще одна ключевая особенность Deno заключается в том, что после импорта этого модуля он кэшируется на жесткий диск при загрузке. Полученный удаленный код будет кэширован на жестком диске при первом запуске и никогда не будет обновлен до тех пор, пока код не будет запущен с флагом –reload. Согласно официальной документации DenoJS, модули и файлы, загружаемые с удаленных URL-адресов, должны быть неизменяемыми и кэшируемыми .

  • Стандартные модули: Deno имеет обширный набор стандартных библиотечных модулей, которые проверяются командой Deno и гарантированно работают с Deno. Эти стандартные модули размещены здесь и распространяются через URL-адреса, как и все другие модули ES, совместимые с Deno. Некоторые из этих стандартных библиотек - это fs , datetime , http и т. Д., Очень похожие на модули NodeJS. Deno также может импортировать модули из любого места в Интернете, например, GitHub, личного веб-сервера или CDN (сети доставки контента). Ежедневно в Deno добавляется все больше стандартных модулей, а также внешних модулей.
  • Ожидание верхнего уровня: Еще одна основная и важная особенность Deno - это синтаксис ожидания верхнего уровня / первого класса. В Deno мы можем использовать синтаксис Await в глобальной области действия без необходимости заключать его в функцию Async. Также все асинхронные действия в Deno возвращают обещание, которое может удалить / избежать ада обратного вызова, к которому может привести Node из-за вложенных обратных вызовов.
  • Утилиты: Deno предоставляет встроенное тестирование и имеет встроенные утилиты, такие как инспектор зависимостей (обозначение info) и средство форматирования кода (обозначение fmt) . Deno также позволяет напрямую выполнять двоичные файлы WebAssembly WASM. NodeJS известен своими возможностями HTTP и потоковой передачи данных, однако Deno может обслуживать HTTP более эффективно, чем Node.

Установка DenoJS: Чтобы узнать о различных способах установки DenoJS, перейдите по этой ссылке. Мы будем устанавливать Deno с помощью Chocolatey для Windows . Для установки Deno с помощью Chocolatey выполните следующую команду:

 choco install den

Это установит Deno в локальной системе в каталог по умолчанию $ HOME / .deno. Это базовый каталог Deno по умолчанию, на который ссылается переменная окружения DENO_DIR .

Начало работы: Чтобы проверить установку DenoJS, выполните команду:

 означать --версия

Это должно предоставить вам версию TypeScript, V8 Engine и Deno.

Если просто выполнить команду:

 обозначать

Выполняет команду:

 обозначает ответ

Это открывает интерфейс REPL, который означает READ EVAL PRINT LOOP, что означает, что мы можем ввести базовый код JavaScript из командной строки, и он скомпилирует, выполнит и распечатает результат.

Мы выполним простой скрипт Deno на нашем локальном компьютере, расположенном по стандартному URL-адресу node.land/std/. Мы можем напрямую запустить этот сценарий с удаленного URL-адреса с помощью команды:

 обозначаем запуск https://deno.land/std/examples/welcome.ts 

Это ссылка на сценарий welcome.ts в официальных примерах документации Deno. Мы можем просмотреть исходный код, просто перейдя по этому URL-адресу. Команда « deno run компилирует скрипт и выполняет скрипт, чтобы отобразить результат в вашей консоли. Deno автоматически знает, запускаем ли мы этот скрипт через URL-адрес или просто просматриваем его в браузере.

Чтобы установить скрипт на локальный компьютер, мы можем запустить команду:

 обозначить установить https://deno.land/std/examples/welcome.ts

Это позволит установить скрипт welcome.ts в $ Home / .deno каталог / бен. Файл будет загружен как файл .cmd в Windows . В случае, если установка уже существует, нам нужно явно перезаписать ее.

Примечание. Запустите CMD с правами администратора, чтобы избежать ненужных ошибок с Deno.

Мы создадим файл welcome.ts на локальном компьютере и выполним его с помощью Deno.
welcome.ts




console.log( "Welcome to GeeksForGeeks" );

Чтобы выполнить этот файл, выполните команду:

 обозначить запустить welcome.ts

Выход: