Параллельное сравнение

Создатель NodeJS Райан Даль выпустил новую среду выполнения, которая призвана устранить многие недостатки Node. Ваша первая реакция может быть такой: «Отлично, еще один фреймворк Javascript? Как раз то, что мне было нужно… ». Не волнуйтесь, у меня была такая же реакция. Поняв преимущества, я также понял, почему Deno - это именно то, что нужно внутреннему разработчику Javascript в 2020 году. Давайте взглянем на 5 основных причин, по которым разработчики JavaScript получают гораздо более плавный и современный интерфейс. используя Deno vs. Node.

1. Современный Javascript - модули ES

Если вы, как и я, разработчик React, то заметили, что синтаксис для импорта пакетов отличается при работе с NodeJS. Это связано с тем, что Node был создан еще в 2009 году, с тех пор в Javascript было внесено множество обновлений и улучшений.

В React (и Deno) мы используем современный синтаксис import package from 'package', в то время как в Node мы используем синтаксис const package = require("package").

Импорт модулей ES лучше по двум причинам:
1: с import вы можете выборочно загружать только те части, которые вам нужны из пакета, что экономит память.
2: Загрузка выполняется синхронно с require, а import загружает модули асинхронно, что повышает производительность.

Если вы заметили на изображении выше, мы импортируем момент пакет с URL-адреса, что приводит нас к следующему преимуществу Deno.

2: Децентрализованные пакеты

С Deno вы больше не зависите от NPM. Точно, больше не package.json. Каждый пакет загружается по URL-адресу.

В NodeJS, чтобы использовать пакет, вам нужно сначала установить его из NPM:

npm i moment

Подождите, пока он установится, затем включите его в свое приложение:

const moment = require("moment")

Кроме того, каждый раз, когда кто-то захочет запустить ваше репозиторий NodeJS локально, ему придется установить все зависимости из NPM.

В Deno пакет импортируется из URL-адреса, поэтому, если вы хотите использовать момент, вы просто импортируете https://deno.land/x/moment/moment.ts.

Еще одно огромное преимущество, когда дело доходит до пакетов в Deno, заключается в том, что каждый пакет кэшируется на жестком диске после установки. Это означает, что установка пакета происходит только один раз. Если вы хотите снова импортировать зависимость куда угодно, ее не нужно будет загружать.

3: TypeScript работает изначально, настройка не требуется

Заставить TypeScript работать с NodeJS - это многоэтапный процесс. Вам нужно будет установить typescript, обновить package.json, tsconfig.json и убедиться, что ваши модули поддерживают @types.

В Deno все, что вам нужно сделать, это сохранить файл как .ts вместо .js, компилятор TypeScript уже встроен прямо в.

4. Ожидание верхнего уровня - используйте ожидание вне асинхронной функции.

В Node ключевое слово await доступно только в асинхронной функции.

С Deno вы можете await что угодно где угодно, не оборачиваясь асинхронной функцией.
Почти все приложения Javascript включают множество асинхронных функций. Это обновление делает код более чистым и простым.

5. Доступ к API браузера (окно, выборка)

Чтобы делать HTTP-запросы в javascript, мы можем использовать Fetch API.
В NodeJS у нас нет доступа к API браузера, поэтому мы не можем вызвать функцию выборки. Сначала мы должны установить пакет:

npm i node-fetch

Затем импортируйте пакет:

const fetch = require("node-fetch")

И только тогда мы можем сделать вызов выборки.

Deno изначально имеет доступ к объекту window, а это значит, что вы можете просто продолжить и вызвать fetch("https://something.com"), а также любой другой в API браузера без установки каких-либо библиотек.

В сочетании с преимуществом ожидания верхнего уровня теперь вы можете увидеть, насколько код Deno проще, чем код узла:

Это не конец

Deno имеет много других преимуществ, например, более безопасный по умолчанию, вы можете запускать двоичные файлы Wasm, он имеет множество встроенных библиотек, и этот список можно продолжить.

Все пункты, упомянутые в этой статье, взаимосвязаны и образуют более современную серверную среду выполнения javascript 2020 года. Как разработчик React я резонирую с Deno. Теперь я могу использовать синтаксис import, писать await где хочу, использовать TypeScript, ничего не настраивая, и даже вызывать fetch без установки пакета. Это просто.

Заменит ли Deno в конечном итоге Node? Может быть. Скорее всего, это займет несколько лет. Экосистема NodeJS огромна, Deno потребуется время, чтобы наверстать упущенное. Но разработчики Javascript в последнее время отдают предпочтение Deno для своих новых проектов, поэтому, если вы хотите в ближайшее время начать новый проект, на него определенно стоит обратить внимание. Для получения дополнительной информации о том, как начать, посетите identify.land.