Deno.js: следующий шаг для JavaScript

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

Создатель Node js обнаружил в Node много недостатков, которые можно увидеть в этом видео: https://www.youtube.com/watch?v=M3BM9TB-8yA.
Два года назад он начал проект, который был открытым исходным кодом и находился на стадии альфа-тестирования. Недавно, 13 мая 2020 года, был выпущен номер 1.0 (готовый к производству).

Javascript прошел долгий путь от беспорядочного языка браузера до надежного серверного языка, который используется для разработки приложений с полным стеком. Но в JS было много недостатков, которые попали в Node, которые были обновлены в ближайшие годы, но не были обновлены в Node. Создатель Node решил построить что-то вроде Node, но без всех этих недостатков. Итак, теперь у нас есть новая серверная технология.

Особенности Deno:

  1. Современные функции javascript, такие как обещания и т. Д.
  2. Полная поддержка машинописного текста, скомпилированная в исходном коде. Следовательно, вы можете воспользоваться такими функциями, как IntelliSense.
  3. Обширная стандартная библиотека.
  4. Имеет совместимость со стандартными модулями ES.
  5. Нет диспетчера пакетов, модули импортируются через URL.
  6. Первоклассная ждем поддержки.
  7. Встроенный функционал тестирования.
  8. Совместимость с браузером, тогда как Node был только для серверной части. (доступны классы, такие как окно)

Заменит ли он Node js?

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

Сходства между Node и означать

  • Оба разработаны на базе хромированного двигателя V8.
  • Оба отлично подходят для серверного JavaScript.

Различия

  • Node написан на c ++ и js, а обозначается на ржавчине и машинописном тексте.
  • В Node есть менеджер пакетов под названием npm, в то время как в нем вы импортируете модули ES из URL-адресов.
  • Node использует синтаксис CommonJS, в то время как обозначает официальный синтаксис модулей ES.
  • Deno использует функции Ecmascript в API и библиотеках, в то время как Node использует обратные вызовы.
  • Deno имеет отличные функции безопасности, а Node позволяет получить доступ ко всему.
  • Deno пытается скомпилировать в двоичном формате. (но это не готовая функция)

Обещания

Node был реализован до того, как в JS появились обещания или async / await. Аналогом Promises для Node был EventEmitter, на котором основаны API в Node.
В то время как все обратные вызовы в Deno возникают из обещаний.

Песочница Deno

Deno создает среду песочницы, которая разрешает только системные вызовы, явно разрешенные его CLI.
Ничто не мешает Node получить доступ к вашим личным файлам на диске и отправить их на сервер, в то время как Deno пытается воспроизвести ту же модель разрешений, которую реализует браузер.
Если программе требуется доступ к сети, мы должны предоставить ей разрешение в явном виде:

 обозначается запуск --allow-net app.ts

Поддержка машинописного текста First Class

Deno поддерживает TypeScript без дополнительных инструментов. Среда выполнения разработана с учетом TypeScript. Команда replace types предоставляет объявления типов для всего, что предоставляется Deno. Все стандартные модули Deno написаны на TypeScript.

Совместимость

Deno несовместим с существующими инструментами JS и пакетами Node. Но прилагаются усилия, чтобы сделать инструменты более совместимыми.

Формирование кода

Вы можете легко отформатировать код на основе стандартов для облегчения чтения с помощью

 Deno fmt app.ts

Стоит ли изучать Дено?

Вы должны начать с JavaScript, а затем изучить Node и только потом начинать использовать node, поскольку компании, использующие Node, не будут легко заменять его на node, потому что это требует огромных ресурсов.
Node будет широко использоваться в отрасли. Таким образом, первым шагом всегда должно быть изучение Node, а затем обозначение для новых клиентов, пытающихся его реализовать.

Стандартная библиотека

  • Архив: утилиты tar-архива.
  • Async: асинхронные утилиты.
  • Байты: помощники для управления срезами байтов.
  • Журнал: логирование утилит.
  • Mime: поддержка составных данных.
  • Datetime: анализ даты / времени.
  • Кодирование: кодирование / декодирование для различных форматов.
  • Флаги: анализировать флаги командной строки.
  • Fmt: форматирование и печать.
  • Узел: уровень совместимости с Node.js.
  • Путь: манипулирование путем.
  • Ws: WebSockets.
  • Fs: API файловой системы.
  • Хеш: крипто-библиотека.
  • Http: HTTP-сервер.
  • Io: библиотека ввода-вывода.

Давайте запачкаем руки с помощью означает:

Монтаж

 Используя Shell (macOS, Linux):
$ curl -fsSL https://deno.land/x/install/install.sh | ш

Используя PowerShell (Windows):
$ iwr https://deno.land/x/install/install.ps1 -useb | iex

Используя Homebrew (macOS): 
$ brew install означает

Использование Chocolatey (Windows):
$ choco install означает

Используя Scoop (Windows):
$ scoop install означает

Начиная

Попробуйте запустить простую программу:

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

Или более сложный:

javascript




import { serve } from
const s = serve({ port: 8000 });
console.log( " http://localhost:8000/ " );
for await (const req of s) {
req.respond({ body: "Hello World " });
}

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

$ означающее –help:

 означает 0,42,0
Безопасная среда выполнения JavaScript и TypeScript

Документы: https://deno.land/std/manual.md
Модули: https://deno.land/std/ https://deno.land/x/
Ошибки: https://github.com/denoland/deno/issues

Чтобы запустить REPL, не указывайте аргументов:
 обозначать

Чтобы выполнить сценарий:
 обозначаем запуск https://deno.land/std/examples/welcome.ts
 обозначает https://deno.land/std/examples/welcome.ts

Чтобы оценить код в оболочке:
 обозначает eval "console.log (30933 + 404)"

Запустите 'обозначает запуск справки' для флагов, специфичных для 'выполнения'.

ПРИМЕНЕНИЕ:
   обозначает [ОПЦИИ] [ПОДКОМАНДА]

ПАРАМЕТРЫ:
   -h, --help
           Печатает справочную информацию

   -L, --log-level <уровень-журнала>
           Установить уровень журнала [возможные значения: отладка, информация]

   -q, --quiet
           Подавить диагностический вывод
           По умолчанию подкоманды печатаются в удобном для чтения виде
            диагностические сообщения в stderr.
           Если флаг установлен, ограничьте эти сообщения ошибками.
   -V, --version
           Печатает информацию о версии


ПОДКОМАНДЫ:
   объединить модуль Bundle и зависимости в один файл
   cache Кэшировать зависимости
   Завершение Генерация завершений оболочки
   doc Показать документацию для модуля
   eval Eval скрипт
   fmt Format исходные файлы
   help Распечатывает это сообщение или справку 
                данной подкоманды (ей)
   info Показать информацию о кеше или информации 
                связанный с исходным файлом
   установить скрипт установки как исполняемый файл
   repl Читать цикл печати Eval
   запустить Запустить программу с именем файла 
               или URL-адрес модуля
   test Выполнить тесты
   типы Распечатать объявления TypeScript среды выполнения
   обновление Обновление означает исполняемый файл до последней версии

ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ:
   DENO_DIR Установить базовый каталог обозначает 
                        (по умолчанию $ HOME / .deno)
   DENO_INSTALL_ROOT Установить означает выходной каталог установки
                        (по умолчанию $ HOME / .deno / bin)
   NO_COLOR Установите для отключения цвета
   HTTP_PROXY Прокси-адрес для HTTP-запросов
                        (загрузка модуля, получение)
   HTTPS_PROXY То же, но для HTTPS