В чем же сила Node.js ?

Объясните пожалуйста в чём его сила ? Это что-то революционное или ? Совмещение фронт и бек ? Асинхронная работа ? Да, пока нет на нём ничего серьезного, но почему ? Сложность ? Он уступает Php ?

P.S. Просто эта тема крайне интересна мне.
  • Вопрос задан
  • 4791 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Сила в том что все знают JS. Кто может писать на PHP/Ruby/Python? Те кто пишут на PHP/Ruby/Python соответственно (и скажем по 10%-15% от количества каждых кто может писать хотя бы на двух из трех языков. Кто может писать на JS? Все фронтэндеры + добрых каких 60%-70% от всех этих php/ruby/python/java/c# разработчиков...

Что это дает? ОГРОМНЕЙШЕЕ комьюнити... большая часть быдло конечно но засчет огромнейшего количества разработчиков инструментарий начал просто очень быстро развиваться. Кому нужен инструмент написанный на Ruby если его можно написать на JS и его сможет поддерживать на порядок больше людей?

Вопрос производительности по началу стоял как основная фишка языка. Все кричали наконец-то, V8 на сервере, асинхронность! Самый быстрый интерпритируемый язык на планете и все такое. Но на деле все чуть сложнее. JS реально быстрый. По сравнению с тем же Ruby он в разы быстрее! Но по большому счету на это адекватным людям плевать с высокой колокольни, так как js нифига не асиинхронный. JS работает в один поток. Причем в этом же потоке работает и сборщик мусора. Если он начнет все чистить - все замрет. Обычно это не сильно большая проблема но как-то забавно. Асинхронное в JS только работа с IO которая на плюсах/си реализована...

Революционности так же нету. JS на сервере не новая идея и практиковался еще лет за 5 до. Просто это была очень удачная реализация да ктому же если бы не V8 то так же все было бы не так круто.

Что до сравнения с PHP и т.д. - это инструменты для разных сфер. PHP - разработка web-сайтов. node.js - демоны, инструменты разработки, шины данных, доставка данных и т.д. Для всего остального PHP подходит больше. Есть правда пара интересных проектов главная цель которой устранить дублирование кода на сервере и на клиенте.... но подходят эти наработки пока только для очень простых проектов (хотя все относительно).

Если вас прям плющит от нового, быстрого, современного, с клевым дизайном и тоже где повлиял гугл - golang.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Можно почитать здесь.
Написано много интересного и все сразу станет понятно.
Ответ написан
Комментировать
vasiliy0s
@vasiliy0s
JavaScript full-stack developer
К вышеперечисленным словам добавлю использование Node.js-a фронтендерами для фронтенда. Как? В основном, Bower + Grunt. И тут есть много плюсов:
  • ты быстро ставишь нужный тебе фреймворк/библиотеку и включаешь его в проект одной командой
  • ты проверяшь свой код линтерами/хинтерами на предмет ошибок/утечек/соблюдения стиля
  • ты собираешь SPA, лендинг или статический/динамический сайт с разного рода оптимизациями/кешированием и пр.

В общем, для меня Node.js - не просто новый фреймворк и доступ к большому количеству оперсорсных библиотек, снижающих траты на разработку (при правильном подходе и вкуренных методиках), но и, своего рода, workflow для фронтенда.

Из минусов отмечу, что периодически возникают проблемы с теми-же "сторонними" билблиотеками. Например, NoSQL дата базы (я работал с MongoDB через Mongoose), под которые удобно кодить на бэкенде и фронтенде, имеют существенные ограничения на выборку, а для некоторых задач sequalize недостаточно гибок (и асинхронный стиль кодинга под ноду тяжелее воспринимается и поддерживается, нежели привычные транзакции напрямую в БД). В общем, многое упирается в архитектуру серверного приложения на ноде и потенциал используемых зависимостей.
Ответ написан
Комментировать
А у меня вопрос - а с урлами там как? Для SEO. site.com/page-about-me ?
Ответ написан
1. Как сказали, очень круто что это один язык на фронтэнде и бэкенде. Это пожалуй самое основное и ценное преимущество перед многими другими бэкенд технологиями, если вы разрабатываете не просто вэб страничку, а динамическое вэб приложение.
И замечу, что тут даже не важно что это javascript. Именно важно переиспользование модулей и компонент по обе стороны, а также единая "экосистема". Это часто недооценивают, начинают сравнивать разные аспекты например php vs javascript, go vs javascript, но это не столь важно.
2. Ещё раз, язык который используется в ноде, можно использовать для дэсктоп приложений (nodewebkit) и мобильных приложений (phonegap).
3. NodeJS это не только серверные приложения, а также различные консольные утилиты и разные дэв. скрипты.
Ответ написан
BondDen
@BondDen
Есть еще один аспект: архитектура. В Node.Js формат работы с NPM (пакадж-менежер npmjs.com) стимулирует к инкапсуляции конкретного функционала в конкретные модули. Это, конечно, не Java и не C#, но сама амосфера сообщества стимулирует к разработке грамотной модульной архитектуры, пожалуй лучше, чем умные книги по "классике" Java и C++.
Ответ написан
Комментировать
saintbyte
@saintbyte
Django developer
Сила она в С, и гигах памяти, и ядрах процессора - так что хочешь супер силу пиши модули по nginx =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы