Я видел много разговоров о том, насколько классным является Node.js для веб-приложений реального времени - вещи, для которых нужны сокеты, Comet, AJAX-интенсивная связь и так далее. Я знаю, что его асинхронная, управляемая событиями модель, управляемая событиями, также хороша для параллелизма с низкими издержками.
Я также видел учебники по Node.js для более простых, «традиционных» приложений не в реальном времени (например, стандартный пример блога, который кажется стандартным «Hello World» для людей, изучающих разработку приложений). И я также знаю, что node-static позволяет вам обслуживать статические ресурсы.
Мой вопрос: есть ли веская причина избегать Node.js для традиционных веб-приложений, таких как объявления, форумы, пример вышеупомянутого блога, или для того, чтобы создавать приложения CRUD для внутренних бизнес-приложений? Только потому, что он превосходит все интересные вещи в реальном времени, это противопоказано для более уравновешенного использования?
Единственное, о чем я могу подумать, это отсутствие зрелых библиотек (хотя это меняется).
(Причина, по которой я спрашиваю, заключается в том, что я рассматриваю возможность отключения PHP для Node.js, в основном, чтобы преодолеть несоответствие импеданса при переключении между языками, но также и для того, чтобы я мог повторно использовать проверочный код и еще много чего. Мой суперэго убеждает меня выбрать лучший инструмент для работы , однако у меня не так много времени, чтобы выучить пятнадцать языков и все их пользовательские библиотеки только для того, чтобы иметь полный арсенал. Также обнадеживает то, что Node.js может дать мне более простой путь оптимизации, чем PHP / Apache в будущем, когда я должен начать думать о интенсивном движении.)
[РЕДАКТИРОВАТЬ] Спасибо за ответы, ребята; Я просто хочу посмотреть, будет ли кто-нибудь еще взвешиваться, прежде чем я выберу ответ. Ответ @Raynos вроде подтверждает то, что я думаю, и ссылки от комментаторов предоставили хорошую пищу для размышлений, но я хочу посмотреть, есть ли у кого-нибудь еще какие-либо специфичные для Node ответы, такие как «НЕ ИСПОЛЬЗУЙТЕ NODE ДЛЯ ПРОБЛЕМЫ X» ». (Помимо задач с высокой загрузкой процессора; я это уже знаю :-)
источник
Ответы:
Да, если у вас есть N лет на веб-платформе X, тогда вы, очевидно, сможете быстрее разработать приложение на платформе X.
Если вы хотите сделать Y, и у платформы X есть готовое решение Y, которое делает X, то сделайте это.
Все общие причины того, почему вы должны использовать одну платформу над другой.
Да, есть другая платформа, которая позволяет вам быстрее написать универсальное приложение, на ум приходит ruby on rails.
Тем не менее, что сказал. У меня есть опыт работы с узлом, и я не могу утверждать, что выбрал бы другую платформу вместо узла, если он не предоставляет мне огромное количество функций из коробки.
В основном это простой вопрос
Нет никаких веских причин, почему node.js является неудобной платформой (кроме «я ненавижу javascript»)
источник
После нескольких недель работы с узлом я бы сказал, да, это очень круто. Но это не обязательно то, что вы хотели бы использовать, чтобы заменить свои обычные веб-приложения ... ни, я думаю, так и должно быть.
Помните, что узел - это собственный сервер. Это создает сложности, если вы хотите запустить больше, чем просто одно приложение node.js. то есть, если у вас более одного сайта / домена, размещенного на машине. Это не похоже на стек LAMP, где вы можете иметь дюжину PHP-приложений для полдюжины разных доменов, работающих на одном сервере (по крайней мере, на порту 80). Существуют платформы для узла, которые, вероятно, делают это возможным, но это добавляет сложности, которая вам просто не нужна, если вы придерживаетесь традиционных веб-платформ. (Разумеется, вы также можете настроить прокси-серверы, разместив веб-сервер перед узлом, но это лишает преимущества использования узла).
Imo, Node идеально подходит для работы в сочетании с традиционным веб-сервером. Способ, которым я сейчас все организовал, состоит в том, чтобы обслуживать статические html / js / images через apache и обрабатывать потребности в данных в режиме реального времени путем длительного опроса приложения узла.
источник
Хорошая причина, чтобы несколько секунд думать об узле, не является технической - она великолепна и удивительна в том, что она делает.
Это бизнес и, в частности, человеческий капитал, то есть программисты, которые знают это, сколько они стоят и насколько они доступны. Это не так сложно освоить, но, как и в случае с любой новой технологией, количество людей, которые хорошо ее знают (или хотят), является частью большого числа рабочих.
источник
Это очень хороший вопрос, который мы должны задать, чтобы усовершенствовать современное состояние.
Мне было очень любопытно узнать (как и Paul d'Aoust), где существуют ограничения Node.JS. К сожалению, многие ответы ПОЛНОСТЬЮ субъективного смещения и временного обоснования.
Я спросил себя: МОЖЕМ ЛИ МЫ Сфильтровать субъективную предвзятость и получить твердые ответы на этот важный вопрос?
Остальные точки кажутся:
1. NodeJS не такой зрелый, как традиционные фреймворки. Как полагает Пол д'Ауст, это только временная причина, но не для полного избегания, а для проверки и должной осмотрительности. Ожидается, что мы сделаем домашнее задание в качестве веб-профессионалов, и наша задача - определить наилучшее соответствие технологии организации, их потребностям, будущему, команде (а не нам). Зрелость - это необходимость в разъяснениях и суждении о склонности к риску, но не в уклонении.
2. NodeJS в качестве прокси-сервера. Мудрое предложение, предшествующее обсуждению, которое стоит рассмотреть и рассмотреть. Это понятие использования Node во взаимосвязи с существующими технологиями в качестве шаблона проектирования прокси интерфейсного интерфейса. Но также, это не причина избегать использования узла, а причина избежать его использования в качестве полной замены. Вместо этого выбрал следственный подход.
3. Узел отладки. В разговоре с основными разработчиками Node в Joyent есть много сложностей, связанных с отладкой и отслеживанием основной причины проблем, возникающих в ядре (на основе выполнения одного потока и неспособности увидеть прошлые потоки). Это заслуживает рассмотрения и оценки - но (опять же), вероятно, не отвращение к общему использованию только крайних случаев, которые могут раздвинуть границы. Может быть, ваши конкретные потребности попадут в эту категорию, а может и нет.
4. Человеческие ресурсы. Это лучшая причина ИЗБЕЖАТЬ использования JS на этой странице, и, по моему скромному мнению, это полная и неудобная правда. Возникает вопрос: есть ли у вашей компании подходящие талантливые профессионалы, чтобы увидеть проект в полном жизненном цикле? Если нет, то нет сомнений, что вам нужно избегать NodeJS. Или вместо этого рассмотрите A) поиск правильного таланта или B) Обучение существующему таланту.
Жалобы: Мое наблюдение за жалобами на JavaScript состоит в том, что многие из них являются результатом ошибки пользователя, а не постоянных ошибок языка. Мы опровергли множество претензий к «The Hate JavaScript Diatribe», и мы продолжим опровергать многие другие. Такие проблемы, как - документация недостаточно хороша, она недостаточно сексуальна, но людям это не нравится, это рак, это дьявол или она слишком «склонна к опечаткам» (-CRichardson), субъективны и предвзятые жалобы, которые необходимо отсеять для точного принятия корпоративных решений.
В конце концов, правильный ответ может быть - нет веских причин ИЗБЕЖАТЬ NodeJS . Может быть, поэтому он переживает быстрый рост, принятие и вклад. Но для всех нас, возможно, ответ здесь состоит в том, чтобы продолжать оценивать, исследовать и лучше понимать NodeJS - и искать конкретные отвращения. В стремлении быть открытым для понимания, где именно Node.JS незрелый - мы находим именно то, что нам нужно, чтобы сделать его лучше. И это благословение.
Хороший вопрос. Мне, например, любопытно, чтобы кто-то выдвинул более вескую причину избегать NodeJS, чем эти.
источник
Есть ли преимущество использования узла над X для приложений не в реальном времени:
Преимущество использования X over Node для приложений не в реальном времени:
Мой ответ определенно не будет действителен в 2015 году. В 2014 году пропустите Node для веб-приложений не в реальном времени, но следите за ним.
Каждый веб-фреймворк имеет сильную сторону. Вы будете счастливы, пока используете его для этого момента. Веб-приложения не в реальном времени не являются сильной стороной веб-фреймворков Node.
источник
Node.js - очень популярная платформа, и у нее много интересных функций, но использование инструмента - это личное предпочтение. Я дал Node.js четыре раза, и мне это не понравилось. Вот мои причины. Пожалуйста, имейте в виду, что некоторые из этих причин являются устаревшими или просто личными: P
источник
HTTP не имеет состояния, поэтому на самом деле не существует такого понятия, как веб-приложение не в реальном времени, и поэтому нет причин, по которым вы не можете использовать узел для всего.
Тем не менее, узел лучше подходит для конкретного типа архитектуры приложения. PHP это HTML-файлы, содержащие немного кода. Узел - это код, необязательно содержащий немного HTML.
Это означает, что если ваше приложение представляет собой стандартную HTML-форму без какого-либо скрипта на стороне клиента, PHP будет проще. В Node есть шаблоны, но, очевидно, они не такие зрелые, как PHP.
Если у вас много сценариев на стороне клиента и вы сохраняете данные с помощью ajax, вы получаете статический HTML-клиент, вызывающий функции на сервере. Это именно то, в чем хорош узел. Хотя CRUD-приложения обычно создаются не так, вы можете создать что-то довольно красивое с помощью подходящей среды.
источник