Как стать автором
Обновить

Комментарии 6

Поправьте последний пример кода.

Node имеет официальный пакетный менеджер npm. У Deno такого менеджера нет, вместо этого он позволяет импортировать любой модуль с помощью URL.


А потом кто-то удалит очередной LeftPad и всё сломается. Или как в древней истории с jQuery, когда половина вебмастеров тупо ставила latest ссылку на CDN, куда попадала всегда именно последняя версия либы, но однажды jQuery выпустила следующую, мажерную версию, вроде 2.0, которая была без обратной совместимости, ибо ну логично, latest, последняя… и половина интернета в буквальном прямом смысле, без шуток, сломалась. Причем ладно если у сайта есть поддержка, а если это очередной сайт на бесплатном шаблоне или 5 лет уже сами менеджеры в интернет-магазинчике товары вносили… в общем боли было столько что в итоге команда jQuery заморозила latest ссылку на версии 1.0 и больше никогда не трогала, для последующих версий были уже свои латест.

И что в итоге? Deno наступает на эти грабли, осознанно, говоря что это лучшее решение! Да, это удобно во многих кейсах — просто импорт по ссылке, как в браузерах script src=«url», отлично, свой самодельный пакетный менеджер на коленке можно на раз-два сделать, тупо храня всё на своем серваке, облаке или где-то ещё, нет зависимости от одной компании… Но дело в том что у npm потому и нет каких-то особых альтернатив потому что это тупо удобно, ведь по факту никто не мешает любому сделать свой, со своими там командами, своими файлами, правилами, более того — такое делали и, возможно, будут делать. Но когда у тебя есть единый стандарт, единый поисковик — это удобно. А ещё запрет на удаление — ты всегда будешь уверен что ничего не сломается в один прекрасный момент. Добавим к этому строгое версионирование — если ты указал версию — ты уверен что ничего не сломается в ненужный момент потому что код не будет меняться, ты можешь зафиксировать версию. Либо чуть ослабить фиксацию и зафиксировать только мажерную, которая ломает обратную совместимость — тут уже на откуп разработчикам, но единый стандарт и единые правила дисциплинируют, к тому же лок-файлы добавляют ещё бонусов к фиксациям и единому окружению у разработчиков и на продакшене.

А вот механизм из Deno — не гарантирует. Не говорю уже про историю с jQuery. Также с мелкими пакетами на мелких сайтах — вполне могут ломать, вставляя зловредов. И сейчас можно, но текущая централизация всё же дает, пусть холиварно это звучит, всё же большую защиту чем пакет васи пупкина на его личном сайте, который кто-то добавит к себе потому что там удобная фича, а потом с этой фичей начнет вдруг подгружаться что-то новое, интересное и болезненное для того кто импортировал пакет, зато прибыльное для того кто это туда внедрил. Учитывая что при свежей сборке может прилететь что-то не то… Кстати, что-то ничего не было в описании этого механизма на предмет проверки целостности, хеша и вот этого всего. А ещё сейчас на странице пакета любой может зарепортить баг, есть ещё audit fix команда и прочее такое. Но кто сделает это на частном сайте в интернете?

В общем — на мой взгляд это очень плохой шаг, решением может стать только появление… подобия npm, только с загрузкой по ссылке-импорту. Но к чему мы меняем так кардинально, может просто добавить в npm такую функциональность?

Возможно я не прав и написал тут что-то не то, не понимая сути. Но тогда я буду рад если кто-то укажет где я не прав.
Спасибо.

Вижу что версионирование отдано на откуп отдающей стороне, с этим проблема значит всё ещё остается.
Также вижу что есть --lock флаг, который сохраняет хеш, вот это уже другой разговор, если всегда его использовать — будет хорошо, это плюс.
Но остальные проблемы не решены.
И у самого Deno есть список пакетов, которые именуются модулями, где для указания версии сейчас используется имя ветки в гите и по ней версия, это может быть удобно если всё будет на каком-нибудь гитхабе. Но есть нюанс — гитхаб из коробки поддерживает npm, а ещё Docker, Maven, NuGet, RubyGems через функционал пакаджей, то есть там уже это есть. Но не гитхабом единым, это да, однако Deno сейчас для них использует как раз таки гитхаб.

Всегда хорошо когда есть альтернативы, порождает здравую конкуренцию и развитие. Когда-то именно появление IO.js, форка ноды, подтолкнуло её к развитию, после чего они снова слились вместе и нода стала эффективно развиваться.

Но Deno пока всё ещё не выглядит как кардинальное улучшение или как сильный конкурент. Посмотрим как пойдет конечно, но выше уже написал про нюансы с импортами, например.

Вы и правы и неправы одновременно!

Статья про дено а ваш вопрос про npm, понятно что дено 1.15 и нод 17.0 не могут быть равновесно сравнены в продакшн смысле.

И в статье так и говорится что дено не убийца нод... пока

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

а кровавый энтерпрайз еще вчера воротил нос и откровенно хихикал от идеи "нда на продакшн".

Мне дено очень вдохновляет,

его сближение с браузером, встроенный асинк, свобода от папки nodemodules, простота базовых вещей из коробки, и даже система пермишнов это все ну просто супер на самом деле и я более чем уверен что конец ноды не за горами, энрепрайз такой энтерпрайз там одни консерваторы толстосумы они до сих пор мутят на джаве потому что когдато вложили в нее миллион и даже заработали два )

(не нра только загоны на тайпскрипт) а эксплойты в npm cdn сегодня каждую неделю!

Почему никто не сказал, что большая часть статьи куда-то пропала?)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории