Node.js для простых сайтов. Стоит ли забивать на PHP?

Сразу с кажу, что PHP знаю поверхностно, а Node.js, совсем не знаю, но знаю JS. Так или иначе нужно будет углубляться в серверные технологии. Стоит ли сразу начать с ноды и использовать ее для простых сайтов (50–150 т.р. с соответствующими требованиями)?

За ноду:
+ Виртуальные хостинги для нее уже есть, тут особых проблем не будет.
+ Пока все приложения, которые пишу, не работают под высокими нагрузками, но если такое случится, придется так или иначе переходить либо на нее либо на подобную технологию.
+ Асинхронную концепцию давно усвоил.
+ Возможно, в серверной части будет не так много асинхронных задач, как во фронтэнде и не будет такой лапши из колбеков.

Против:
— Ненавижу лапшу из колбеков. Не представляю как можно писать что-либо серьезное на JS не используя Фреймворки, которые хоть как-то имитируют синхронность. На худой конец jQuery. Если node.js близок к нативному JS, будет сложнее. Либо придется искать фреймворк для него.
— ПХП нравится за кучу встроенных функций (работы с массивами, строками, БД, обработкой картинок и т.д.). Если в ноде функционал уровня ES4 и тупо нет библиотеки, чтобы ужать картинку на сервере не будет ли это слишком плачевным?
— Так ли страшен черт как его малюют. Понятно зачем нужна асинхронность на клиенте. Но на сервере? Только БД и связь с другими серверами (если такое встречается в реальной жизни). Может быть есть способы оптимизировать это и без асинхронности? Может быть ПХПшники через пол года придумают?
  • Вопрос задан
  • 50006 просмотров
Пригласить эксперта
Ответы на вопрос 17
@kxyu
— Ненавижу лапшу из колбеков. Не представляю как можно писать что-либо серьезное на JS не используя Фреймворки, которые хоть как-то имитируют синхронность. На худой конец jQuery. Если node.js близок к нативному JS, будет сложнее. Либо придется искать фреймворк для него.


Чтобы не было лапши из колбеков, в простых случаях достаточно просто использовать именованные, а не анонимные колбеки. В сложных случаях — async. Node.js близок к нативному JS. Но на всякий случай есть 30000 пакетов в npm.

+ Возможно, в серверной части будет не так много асинхронных задач, как во фронтэнде и не будет такой лапши из колбеков.


Если у вас будет много синхронных задач, то Node.js не лучший выбор.

— ПХП нравится за кучу встроенных функций (работы с массивами, строками, БД, обработкой картинок и т.д.). Если в ноде в
функционал уровня ES4 и тупо нет библиотеки, чтобы ужать картинку на сервере не будет ли это слишком плачевным?


В ноде нет ничего. В npm есть все. ES5.

— Так ли страшен черт как его малюют. Понятно зачем нужна асинхронность на клиенте. Но на сервере? Только БД и связь с другими серверами (если такое встречается в реальной жизни). Может быть есть способы оптимизировать это и без асинхронности? Может быть ПХПшники через пол года придумают?


А что еще, собственно, делает бэкэнд веб-приложения? Число пи до миллиардного знака расчитывает?

Вывод — все в порядке, используете node.js.
Ответ написан
@xtremespb
Я разрабатываю свою CMS на Node.js. На данный момент можно делать вполне шустро работающие сайты-визитки, как минимум. Вот: https://taracot.org, демка: https://demo.taracot.org, https://demo.taracot.org/cp/ (admin/admin).
Ответ написан
@pman
Ни кто не мешает поиграться — попробуйте написать простое приложение на Node.js, посмотрите. Ещё, для упрощения лапши коллбеков и некоторых полезных плюшек очень рекомендую CoffeeScript, благо Node.js вполне хорошо с ним работает без дополнительных танцев с бубном.
Ответ написан
jdponomarev
@jdponomarev
Я бы Вам не рекомендовал использовать ноду для простых проектов.
Нода хороша при хайлоаде и задач где нужен реалтайм.
А вот с наличием модулей для простых сайтов уровня joomla туговато, как и с хостингом.
Хотя, конечно, за нодой будущее, ИМХО.
Ответ написан
Ненавижу лапшу из колбеков.

Скорее надуманная проблема и дело привычки. Можно структурировать код и без лапши.

Так ли страшен черт как его малюют.

Плюс nodejs в поддержке множества соединений без особых накладных расходов. Для http (без сокетов) не очень важно. Для меседжеров, игр, какого-то специфичного интерактивного функционала маст хев.
Ответ написан
@XimikS
Посмотрите-ка на Ruby On Rails:)
habrahabr.ru/qa/29965/#answer_119243
Ответ написан
Я — за. Сам недавно сделал небольшой проект на ноде — впечатление отличное.
Ответ написан
@D3xteR_svsk

Виртуальные хостинги для нее уже есть, тут особых проблем не будет.

-А я бы советовал не заморачиваться с выбором виртуального хостинга, а смотрел в сторону VPS со всеми вытекающими плюсами, благо сервисов много и цены не так кусаются, ну и знания, полученные при настройке, будут полезны.

Ответ написан
dizballanze
@dizballanze
Software developer at Yandex
— Для решения проблемы с лапшей используйте модуль async.
— Есть огромное количество модулей в репозитории npm.
— Асинхронность нужна для того чтобы сервер не ждал io.
Ответ написан
tamtakoe
@tamtakoe Автор вопроса
Да-да! Обеими руками поддерживаю KISS! А Comet-сервер встанет на недорогой виртуальный хостинг? Тут ведь дело в чем. Буду писать простой сайт, разумеется как можно проще и быстрее, но, например, если там будет внутренняя почта захочу превратить ее в нормальный реал-тайм чат. Просто в целях обучения и чтобы потом, если понадобится, не делать. А потом еще какую-то функцию написать по-нормальному. Таким образом хочу на простых сайтах подойти к написанию сложных.
Ответ написан
@rozhik
Я рекомендовал бы использовать и одно и другое.
Поставить спереди nginx, который форвардит запросы PHP + node и отдаёт статику (это решение лишь незначительно нагружает сервер, но если у Вас хотя бы 10% статики — то только выиграете). В дальнейшем писать на чем удобнее для конкретной задачи. К примеру у меня nginx который форвардит к erlang, node, php.
Ответ написан
Homchenkokostya
@Homchenkokostya
Однозначно NodeJs. Соглашусь с предыдущим комментарием, VDS, и нефиг парится )
Ответ написан
ajaxtelamonid
@ajaxtelamonid
Laravel
Конечно же для простых сайтов используйте php, о чем тут еще думать.
Нужны реалтаймовые обновления на странице — юзайте comet-сервер, от dklab например (http://dklab.ru/lib/dklab_realplexor/). Нужна полная асинхронность — phpDaemin или Reactphp. Хотя конкретно по этим решениям есть свои траблы типа утечек памяти. Лучше тогда уж взять erlang и использовать новый N2O (http://synrc.com/framework/web/), который быстрее всего, что можно придумать, включая ноду.

Нода, (как и монга, кстати) — это прикольные на первый взгляд вещи, которые при столкновением с грубой реальностью становятся проблемой для разработчика. java.dzone.com/articles/f-mongodb-f-nodejs-and-f-you
Ответ написан
JekaRu
@JekaRu
Кстати вот интересная CMS на node.js — Apostrophe 2 apostrophenow.org/

Сам я пока за PHP, он ведь тоже на месте не стоит, развивается.
Да и заказчик как правило предпочтет PHP.
Ответ написан
@kaichou
Понятия «node.js» и «первый серверный язык» не совместимы.
Ответ написан
xytop
@xytop
PHP/RoR web dev & tech lead
А где эти простые сайты на node.js будут хоститься?

В любом случае лучше PHP.
Очень много готового материала для разработки простого сайта за считанные часы.

Там выше говорят про Ruby и Github/Twitter — ну так посмотрите на Facebook/Vkontakte, которые на PHP. или на Google, использующий Python.
Думаю, никто не будет спорить, что на любом из вышеперечисленных сервисов эти технологии в чистом виде не используются. Везде дополнительные самописные кешеры, оптимизированные библиотеки, пулы серверов и куча балансировщиков.
Все зависит от прямоты рук и грамотного использования доступных технологий, язык/фреймворк — это уже во вторую очередь.
Каждый инструмент хорош в своей области.
Не нужно думать, что сайты-визитки и местячковые интернет-магазины мгновенно станут посещаемыми и сервера лягут потому что использовался не тот язык. Это глупо. Гораздо важнее, чтобы эти сайты было удобно поддерживать и не нужно было месяцы искать человека, знакомого с node.js чтобы поправить какую-то небольшую багу.
Ответ написан
Что решили? А то тоже мучаюсь с выбором nodejs из-за его меньшей доступности для массового потребителя (создания типовых сайтов)
Ответ написан
Ваш ответ на вопрос

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

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