Задать вопрос

А в чем минусы node.js?

Вот все говорят, что быстрый, хороший, асинхронный, а в чем его минусы? Почему реально серьезный проектов на нем очень мало?
  • Вопрос задан
  • 17236 просмотров
Подписаться 6 Оценить 2 комментария
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
В том же в чем его и плюсы.

Асинхронность... ее там нет. Там есть event loop что позволяет писать крайне эффективные программы в плане работы с I/O (что для web очень неплохо) и не париться о таких вещях как потокобезопасность, блокировки и т.д. А если еще и несколько инстансов приложения запусть - по одному на ядро скажем, то утилизация вычислительных мощностей выйдет неплохой. Но распаралелить что-то в рамках одного процесса воркера мы уже не можем. Мы не можем посчитать что-то, проанализировать, заняться обработкой жирной картинки прямо при обработке запроса потому что наш процесс воркер так же обрабатываете еще пару десятков запросов, и пока мы будем удовлетворять нужды одного простаивать будут все. Нода хороша когда у нас все состоит из элементарных операций которые не занимают много времени, все жирное надо выносить из основного процесса и разруливать очередями и т.д. Эта проблема имеет массу решений на самом деле, но все уже усложняется и нода теряет свою красоту. Лучше взять Java/c#/Python для этого (и не надо тут вспоминать про шутки с многопоточностью в CPython).

callback-hell. Собственно наличие event loop диктует так же правила о том, как должна писаться программа. Кучи колбэков, невозможность дебажить нормально и получить четкий стэктрейс из ошибки. Да, есть промисы которые решают первую проблему, да есть либы вроде zone.js которые решают вторую и частично первую проблему... но все это не тривиальное дело.

Собственно... разработка больших и сложных проектов на ноде возможна... но требует от разработчика хорошие знания и понимание того, как работает его платформа. А это увеличивает стоимость разработки в то время как можно взять более эффективные в этом плане инструменты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
kissarat
@kissarat
Node.js
JavaScript недоразвит. С приходом ECMAScript 6 все может измениться
Ответ написан
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
Node.js быстр, но существуют вещи, которые необходимо знать, чтобы использовать его правильно.
На самом деле нода, это мощная штука, специально заточенная под определенный круг задач, высоконагруженные системы и тому подобное. Любое не правильное или даже сказать не полностью правильное его использование оборачивается на больших проектах большим минусом, что собственно и спрашивалось в вопросе выше. Чтобы избежать всех таких минусов, нужно практиковаться и учиться на своих и чужих ошибках, и только со временем и опытом можно действительно понять насколько хорош этот инструмент.
Владение нодой в плюсах или минусах в большинстве случаев зависит от полноты его знания, теории, практики, владения и умения применить эту технологию в целом ко многим проектам.
Ответ написан
Комментировать
Epsil0neR
@Epsil0neR
Знаю JavaScripts, Visual Basic.NET, C#, HTML, CSS
Node.js - является JavaScript библиотекой, а JavaScript является интерпретируемым языком, а не компилируемым. Так же JavaScript не типизированный, из-за чего сложно писать большие проекты. На сколько мне известно, JavaScript является Single thread (однопоточный) - то есть использует только 1 ядро процессора.
Ответ написан
Комментировать
@lega
Как выше сказали - большой проект разрабатывать на node.js не желательно из-за сложности (сравните 2 псевдо-примера), - будете иметь больше проблем, потратите в разы больше времени.

В большинстве случаев асинхронность нужна для 0-5% от проекта, поэтому не нужно из-за этих 5%, остальные 95% делать асинхронными.
Асинхронность нужна не везде.
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Потому что он молодой и относительно медленно развивается(именно ядро)

habrahabr.ru/post/218147

Недавно вообще разделился на два проекта, так что, что будет дальше несовсем ясно
Ответ написан
на Node.js, мне кажется, сложно писать большие проекты. Ещё нет устоявшихся практик (хотя, возможно, это мне так кажется), спроектировать приложение так, чтобы его было поддерживать сложно. Асинхронность тоже может выйти боком (опять-таки в архитектурном плане). И нужна ли она типичному веб-проекту (условному бложику на вордпрессе)?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы