Написать пост

Убийцы Node.js — какие аналоги есть у библиотеки

Аватарка пользователя Дух айтишной эмо школы

IT-блогер Миша Ларченко рассуждает о том, какие аналоги могут заменить Node.js и стоит ли отказываться от этой библиотеки.

IT-блогер Миша Ларченко рассуждает о том, какие аналоги могут заменить Node.js и стоит ли отказываться от этой библиотеки.

Превью видео ShaDkizJIDI

Вот, о чём идёт речь в видео:

  1. Node.js часто подвергался критике и попыткам замены, но остается популярным инструментом для разработки бэкэнда.
  2. JavaScript, язык, на котором написан Node.js, не всегда был популярен среди бэкэнд-разработчиков.
  3. Быстродействие Node.js стало причиной его широкого применения, как, например, в Amazon, где ускорение загрузки страниц привело к значительному увеличению доходов.
  4. Были попытки ускорить Node.js, в том числе замена движка JavaScript Engine v8 на Chakra от Microsoft, но эта инициатива не была реализована.
  5. Появление альтернативных рантаймов, таких как Deno, написанный на Rust, не смогло заменить Node.js из-за отсутствия полной совместимости и функциональности.
  6. Новый рантайм Bun вызвал волну интереса в сообществе благодаря высокой производительности и поддержке TypeScript и JSX без компиляции.
  7. Существуют опасения по поводу безопасности Bun и его готовности к использованию в продакшене.
  8. Сообщество разработчиков играет важную роль в поддержке и развитии технологий, и на данный момент сообщество Node.js значительно больше, чем у Bun'.
  9. Не все функции Bun могут быть востребованы разработчиками, особенно теми, кто не использует TypeScript или JSX.
  10. Слишком рано делать выводы о замене Node.js на Bun', поскольку Node.js продолжает развиваться и остается важным инструментом для многих разработчиков.

Ниже — транскрибация ролика.

Почему не любят Node.js

Говорят, что Node.js тоже теперь надо вот так вот выкинуть, как я сейчас мусор буду выкидывать.

Но мне кажется, мы куда-то очень торопимся. Когда Node.js только появился, его уже хоронили. И причин было много, но главное было в том, что он написан для того, чтобы его использовать с JavaScript, а JavaScript все никогда они любили.

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

Не могу себе отказать в обеденном кофе. Так вот, Node.js всегда считался быстрым бэкэндом. И, например, Amazon, когда переводил часть своих интерфейсов, которые генерировались на бэкэнде, на Node.js, то они где-то там что-то посчитали в эти стародавние времена, что одна секунда ускорения загрузки страницы позволит им заработать дополнительные 4 миллиарда долларов в год. И звучит это для бизнеса, конечно, очень приятно, поэтому они старались ускорить загрузку и рендер своих страниц, и вот они тогда использовали Node.js. Как я уже сказал, это делалось только потому, что Node.js считался быстрым, но всегда были попытки сделать его еще быстрее. Например, по-моему, в 2016 году Microsoft хотела в Node.js заменить JavaScript Engine v8 от Google на свой собственный, который в то время назывался Chakra.

Chakra Microsoft тогда использовал у себя в Edge-браузере для того, чтобы делать приложение для Microsoft Universal. Это единая операционная система, или единое приложение для мобильных планшетов и компьютеров. Тогда еще были мобильные телефоны на Windows. И они вот хотели его туда вставить, в Node.js, эту самую чакру, потому что их чакра была быстрее, чем v8.

Но, как мы знаем, Microsoft от чакры в итоге отказалась, и браузер Edge теперь работает на блинке, то есть он, по сути, хром, только в другой обертке. И эта вот попытка ускорить Node.js с помощью чакры, она тоже канула в лето. И затем были еще попытки. И самое известное из старых, это, наверное, Deno. Deno был написан на Rusty, и он был быстрее, чем Node.js, но у него была одна фундаментальная проблема. Он не умел все то, что умеет Node.js.

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

Что такое Bun

И вот теперь мы все говорим о Bun'е. А Bun это то, что релизнули совсем недавно, вышла версия 1.0, и весь интернет или весь фронт-энд почему-то взорвался. Сразу начались различные тесты, сравнения производительности Node.js и Bun', где Bun просто разрывает Node.js. И все стали говорить о том, что, наверное, Node.js скоро может умереть. Ну, не все, но многие начали говорить о том, что Node.js скоро может умереть, потому что появился новый вот такой вот рантайм. Который позволяет и TypeScript файлы сразу запускать без компиляции, и JSX файлы запускать без компиляции, и делает все это очень быстро, и написан он на Ziggy, такой новый модный язык программирования.

В общем, он классный этот Bun', и вот Bun это будущее разработки бэкэнда на JavaScript. Но так ли это? Стоит ли нам уже хоронить Node.js именно как рантайм, который запускает бэкэнд на JS? Или все-таки рано об этом еще говорить. И есть у меня по этому поводу некоторые мысли, которыми я с вами сейчас поделюсь. Я почему сначала вам рассказал о некоторых других попытках сделать Node.js быстрее?

Только потому, что это были те самые попытки убить Node.js в том виде, в котором он существовал. И, как вы уже понимаете, эти попытки, они не удались. Так вот, Bun может сдать потенциально такое же будущее, как тот же Deno. Потому что, во-первых, Bun пока еще не умеет совсем-совсем все.

В чём Bun проигрывает Node.js

Да, он умеет большинство абсолютно, но он не умеет все. И второе, это то, на что обращали внимание разработчики Bun'а, когда его разрабатывали. Они в первую очередь смотрели на производительность, а производительность это, конечно же, классно, но кроме производительности есть другие условия, которые делают бэкэнд удобным и возможным для использования в крупных приложениях различных. Так вот, команда в погоне за производительностью оставила немного в стороне какие-то другие важные вещи, и они не уделили должного внимания безопасности. Поэтому пока еще непонятно, насколько Bun'к безопасен для использования в продакшене, насколько это отвечает требованиям, которые сегодня предъявляют компании для своих серверов. И еще одна интересная ситуация, это, конечно же, комьюнити. Если, когда ты разрабатываешь на ноде, у тебя возникают вопросы, то ты всегда можешь обратиться в к людям в комьюнити они помогают тебе решить, или если какой-то баг, или еще какая-то проблема, ты опять-таки можешь с помощью комьюнити все это попытаться решить очень быстро.

То с Bun'ом все немного сложнее. Да, конечно, он на хайпе, повторюсь, по какой-то непонятной причине, в основном его хайпят именно фронт-энд разработчики. Но это не значит, что вот в этом хайпе там образуется большое количество людей, которые Bun'ом этим будут увлекаться и использовать. Одно из главных преимуществ Bun'а, такое как запуск TypeScript и JSX без компиляции, мне кажется немного переоцененным. Оно важно только в той ситуации, когда мы делаем что-то связанное с SSR и React, а для остальных Node.js разработчиков ни TypeScript, ни JSX в принципе не нужны, поэтому их не интересует такая возможность.

И поэтому вот такая вот важная фича Bun'а, она сразу отпадает и как бы делает Bun менее для них привлекательным. Как мне кажется, у Bun'а есть будущее для того, чтобы стать важной вехой в развитии JavaScript на бэкэнде, но также он может им и не стать. Поэтому рано пока хоронить Node.js, надо все еще разрабатывать и учиться работать именно с Node.js, учить все те функции и методы. Модули, которые встроены в Node.js. Ну, а Bun пока останется чем-то в стороне, за чем можно следить, как он там развивается. И если он действительно станет большим, классным рантаймом для JavaScript на бэкэнде, то тогда можно будет подумать о том, чтобы начать с ним работать. Так прикольно смотреть, как чистится пол вот этой странной машинки.

Следите за новыми постами
Следите за новыми постами по любимым темам
326 открытий886 показов