- PVSM.RU - https://www.pvsm.ru -
Я не часть команды deno. Я не его фанат. Я не слежу за ним. Я даже не очень-то в него верю. Но видя негативную реакцию сообщества просто не могу не вступится. В этой статье я бы хотел рассмотреть самые частые претензии в адрес Deno и предложить альтернативную точку зрения.
Это не так. Таким его продвигают только «свидетели deno», безумные фанаты, либо жаждущие хайпа переводчики. Насколько мне известно, даже сам Раян Дал (автор Deno) не позиционирует свою разработку как замену или альтернативу NodeJs. Это скорее его видение «каким может быть тот же NodeJs в будущем». Концепт, если хотите (мы же не ругаем концепты авто или смартфонов за их непрактичность в современных реалиях). С точки зрения Раяна в NodeJs есть определенные проблемы. И он показал сообществу некое представление о том, как бы эти проблемы можно было бы решить. И вы можете в этом участвовать. Прямо сейчас приходите на GitHub [1], и описывайте те архитектурные проблемы которые вы видите. Обсуждайте их. Придумывайте решения.
Я не думаю, что Deno когда-либо заменит NodeJs. Но он может стать для него тем же чем стал TypeScript для JavaScript.
Многие смотрят на это немного не под тем углом. Идея в том, чтобы отказаться от глобального списка зависимостей на весь проект. Чтобы вместо одного большого package.json у вас в каждом вашем модуле/файле был свой, независимый список зависимостей. Я вижу в этом несколько плюсов.
Но для такого подхода нужна возможность описывать зависимости для каждого модуля. Название, версию и откуда эту зависимость взять. Как следствие — import с указанием URL. И это даже не придумка Deno. Это часть стандарта. Просто все привыкли работать так как привыкли. Но это не единственный путь.
Точно так же как бы вы работали с NodeJs. Что Deno, что NodeJs скачивают зависимости в отдельную директорию. Только в NodeJs для этого вы запускаете npm install
, а Deno делает это автоматически при первом запуске.
Не проблема. Есть такой пропозал — import maps [2]. И Deno его поддерживает [3], хоть и не в полной мере. Таким образом вы можете описать синонимы для всех зависимостей придя к аналогу package.json
. Но вы не будете ограничены этим:
{
"imports": {
"moment/": [
"https://deno.land/x/moment/",
"https://raw.githubusercontent.com/lisniuse/deno_moment/master/"
]
}
}
Ну, вообще можете [4]. deno install
это аналог npm install --global
. Deno скачает, скомпилирует требуемую библиотеку в бинарник и сохранит глобально. Отличие в том, что вы обязаны выдать библиотеке какие-то разрешения. То есть, установленный глобально пакет не получит доступа к сети, или к файлам, или ещё куда без вашего согласия.
И оно не без основательно. Deno это тот же NodeJs. Я вижу лишь несколько отличий:
Вот и все отличия на мой взгляд. Так что не вижу причин ненавидеть Deno. Разве что его агрессивных пиарщиков :)
Автор: Kozack
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/node-js/353625
Ссылки в тексте:
[1] GitHub: https://github.com/denoland/deno
[2] import maps: https://github.com/WICG/import-maps
[3] поддерживает: https://deno.land/manual/linking_to_external_code/import_maps
[4] можете: https://deno.land/manual/tools/script_installer
[5] Источник: https://habr.com/ru/post/504964/?utm_source=habrahabr&utm_medium=rss&utm_campaign=504964
Нажмите здесь для печати.