Сравнение с Node.js

Всем привет!

В мире JavaScript появилась новая шумиха - появление Deno. Конечно, вы можете посетить их официальную страницу здесь https://deno.land/, чтобы ознакомиться с документацией. В этой статье я расскажу, чем Deno отличается от Node.js, и отвечу на вопрос Заменит ли он Nodejs?.

Deno был создан Райаном Далем, тем же человеком, который создал Node.js. Deno можно определить как анаграмму для Node. Когда вы посещаете их официальный веб-сайт, в цитате на целевой странице указано, что Deno - это «безопасная среда выполнения для JavaScript и TypeScript», и в этом вы видите первое отличие. Deno позволяет легко запускать TypeScript, которого нет в Node.js (или включает в себя некоторые шаги для этого). Давайте попробуем Дено, чтобы лучше понять это утверждение.

Вы можете установить Deno любым из следующих способов (Ссылка: https://deno.land/)

После установки вы можете запустить Deno, просто набрав «Deno» в командной строке.

Как мы видим, и Deno, и Node открывают интерактивную подсказку для выполнения вычислений. Но они могут сделать больше. Давайте рассмотрим простой код Node.js

В приведенном выше коде отобразится «Hello World!» в браузере, особенно по адресу «http: // localhost: 3000 /». Также Node часто работает с такими пакетами, как Express.js, где мы должны устанавливать пакеты и поддерживать файл package.json, чтобы отслеживать их. Но давайте посмотрим, как это использует Deno.

Вы можете запускать файлы Deno с помощью команды

Deno run "filename"

Как видите, Deno поддерживает TypeScript без необходимости внешней компиляции, вместо этого компилятор встроен в Deno. Теперь давайте создадим простой сервер с Deno, как в Node. Я буду использовать тот же код, что и в их документации.

Мы видим, что Deno импортирует свои модули не из какой-либо папки «node_modules» или через какие-либо встроенные модули импорта, вместо этого он загружает модуль непосредственно по ссылке, предоставленной во время компиляции, и кэширует его локально, поэтому ему не нужно загружать каждый раз, когда мы используем этот импорт снова. Deno также допускает ожидания верхнего уровня, как и для простых функций обещания, в отличие от Node.js, который допускает только ожидания уровня Async. Когда вы запустите код, вы столкнетесь со следующей ошибкой

Это потому, что Deno обещает безопасную среду выполнения, в которой вы можете запускать сервер, только если вы явно установите флаг «- -allow-net», как это

Deno run --allow-net deno.ts

Где в Node.js вы можете запускать серверы без каких-либо ограничений. Это критически важная функция безопасности в Deno, которая не позволяет сторонним библиотекам компрометировать вашу систему изнутри. Эта функция безопасности установлена ​​по умолчанию, ограничивая доступ к сети и так далее.

Подводя итог, Райан попытался решить проблемы, которые, как он считал, вызывают сожаление по поводу Node.js. Вы можете посмотреть все видео его 10 вещей, о которых я сожалею о Node.js здесь https://www.youtube.com/watch?v=M3BM9TB-8yA. Он успешно устранил некоторые сожаления, о которых говорил, например, об улучшении безопасности, избавлении от node_modules и package.json и новом способе импорта модулей.

Команда Deno обещает поддерживать стабильный API. Если общий API не изменится в будущих версиях, и они также предполагают, что это может быть или не может быть правильным выбором в зависимости от потребностей вашего приложения. Еще одно важное замечание: Deno еще не совместим с пакетами npm, что пока является недостатком, но может измениться в будущем. В конце концов, Deno может стать заменой Node.js. Можно сказать, что он выполняет те же функции, что и Node.js, но лучше, так сказать. Однако Deno только что вышел из инкубатора (версия 1.0, выпущенная 4 мая 2020 г.), и в их официальной документации говорится, что многие функции все еще нестабильны или находятся в стадии разработки. Это не означает, что Node.js закроет свои двери. Сам Райан пояснил это в своем выступлении Deno - новый способ использования JavaScript здесь https://www.youtube.com/watch?v=1gIiZfSbEAE. В любом случае, поиграйте с Дено и дайте мне знать, если найдете что-нибудь интересное.

Спасибо и удачного обучения!