Ответы пользователя по тегу Node.js
  • Как при запуске генератора bem-stub выбрать все опции?

    qfox
    @qfox
    Ответы есть у меня
    Пробелом!

    > Как переключиться чтобы выбрать невидимые опции?

    Стрелками вверх-вниз
    Ответ написан
    1 комментарий
  • Почему не работает bem сервер?

    qfox
    @qfox
    Ответы есть у меня
    Если проблема с bem-core, bem-components (в данном случае — первое) — забыли bower install, который должен устанавливаться при npm install. Еще bem server немножко устарел и лучше использовать enb server.

    А вообще, на такие вопросы гораздо быстрее найти ответ на бем.инфо и форуме.
    Ответ написан
    Комментировать
  • Технологии для highload?

    qfox
    @qfox
    Ответы есть у меня
    Я бы ничего не менял. Возможно, попробовал бы еще tarantool для микрозадач или как замена редиса.

    Но как вариант — C# или Java, и RavenDB какой-нибудь тоже вполне вкатит под «технологии highload».

    Еще вместо обычного mongo можно попробовать drop-in замену в виде TokuMX: https://github.com/Tokutek/mongo
    Ответ написан
    Комментировать
  • Подсоветуйте фреймворк для node?

    qfox
    @qfox
    Ответы есть у меня
    Можно еще попробовать https://github.com/2gis/slot

    У них там специфичный БЭМ, изоморфность, и все такое.
    Ответ написан
    Комментировать
  • Javascript backend frameworks or vanilla js?

    qfox
    @qfox
    Ответы есть у меня
    В nodejs все немного подругому — нет, увы, но там совсем все иначе.

    Во-первых, ваше приложение будет висеть в памяти долго и параллельно обрабатывать несколько запросов, в то время как в PHP тред сдохнет после отправки ответа на запрос; во-вторых, в node.js широко практикуется микромодульность; в-третьих, на vanilla.js вы замучаетесь писать, потому что это просто ядро js — окружение nodejs вам все равно понадобится для работы с libuv и сокетами/дескрипторами, и это будет уже не vanillajs.

    Исходя из этих замечаний, пытливый читатель уже начнет догадываться, что ему нужны разные модули для:
    а) веб сервера (или нет);
    б) работы с хранилищами и абстракций над ними (моделей, клиентов дб с пуллом, или без, или руками все писать);
    в) записи в лог (или руками stdout перенаправлять);
    г) соль, перец по вкусу.

    И вопрос стоит больше не в готовом фреймворке, а в наиболее подходящих частях.

    Я бы порекоммендовал смотреть в сторону сырого https://github.com/senchalabs/connect, либо чуть более полного https://github.com/strongloop/loopback (фактически, connect с плагинами).
    Если чем-то не устраивает — можно смотреть https://www.npmjs.com/package/restify (или то, что его у себя использует: https://www.npmjs.com/browse/depended/restify).

    В качестве абстракции над моделями либо https://github.com/sequelize/sequelize (если база будет mysql/pgsql), либо https://github.com/Automattic/mongoose (если без разницы какая база) + https://github.com/Tokutek/mongo.

    Для веб логов — https://github.com/expressjs/morgan
    Для других логов — например, https://github.com/winstonjs/winston + нужные транспорты
    Для конфигов — https://github.com/flatiron/nconf, если не хватает просто require("config.json")

    И т.д.

    Главное, понять, что чем меньше модуль, тем больше вероятность, что он стабильнее работает, и что тесты написано качественно.
    Ответ написан
    Комментировать
  • Что за ошибки выдаёт NodeJS?

    qfox
    @qfox
    Ответы есть у меня
    Очевидно, /var/node/hello.js:1 — здесь у вас HTML, а должен быть javascript.
    /var/node/client.js — этот файл нужно пробрасывать на клиент каким-то образом (либо nginx, либо средствами express и мидлварем static).

    Вы явно делаете не то, что от вас ждет nodejs.
    Ответ написан
    Комментировать
  • Deploy приложений на node.js?

    qfox
    @qfox
    Ответы есть у меня
    В свое время я нашел roco ;-) Очень похож на капистрано, но уровень ниже, конечно.

    upd
    Ну и недавно появился https://github.com/pstadler/flightplan — очень активно пилится.
    Ответ написан
    Комментировать
  • Можно ли php заменить на node.js?

    qfox
    @qfox
    Ответы есть у меня
    Архитектура PHP и Node.JS разная, поэтому в общем случае — нет.

    Но в частных случаях, например, на домашних страничках или каких-то сервисных ручках — это работает на ура.

    К сожалению, пока никто не написал аналог связки apache+mod_php для node.js, чтобы можно было просто изменяя файлы тут же видеть результат в браузере, но это дело времени ;-)
    Ответ написан
    Комментировать
  • Как создать структуру Node.JS приложения?

    qfox
    @qfox
    Ответы есть у меня
    Модели лучше завернуть в абстракции, при чем, вынести общий код отдельно, код для браузера — отдельно, код для ноды — отдельно. Чтобы `require(['fs'], (fs) => fs.read)`, например, работал одинаково и в браузере, и в ноде.

    Не делать в одном файле — раскидывать по плагинам, посмотреть/попробовать пакеты architect и pym, либо использовать свой интерфейс. Еще лучше использовать какой-нибудь cluster и делать весь функционал приложения в одном потоке. Лучше много мелких, чем одно большое.
    Ответ написан
  • Не будет ли непопулярность хостингов node.js проблемой для создания попсовой CMS?

    qfox
    @qfox
    Ответы есть у меня
    Все давно перешло из разряда хостинга машины, хоть бы виртуальной, в разряд облачных сервисов.

    Не забывайте, что php это one-shot приложения, отработал и сдох, следующий придет — все заново отрабатывать. А nodejs это вполне себе долгоживущий полноценный сервис, как и java, python, ruby, etc. Платформа другая, нужен и хостинг иной.

    suse.me/apps/heroku — все решили, что можно считать CPU. На том и порешали, в общем.
    Ответ написан
  • Kind of Capistrano на Node.JS

    qfox
    @qfox
    Ответы есть у меня
    Сам капистрано хорошо справляется с задачей, но аналоги есть.

    Например, https://github.com/1602/roco
    Если будет интересно — я переписал его, чтобы его можно было пилить дальше и использовать для создания своих оберток, но остановился на тестах и процесс пока встал. Т.е. оно вроде бы работает, но без тестов МР не поставишь, а тесты были сильно завязаны на внутреннюю архитектуру, которая поменялась.
    Ну и да, кроме того, что он на nodejs, его скрипты не синхронные, как и сам nodejs, хотя таски и группы создаются аналогично.

    Сами таски описываются на coffee и очень похожи на таски capistrano.
    Ответ написан
    Комментировать
  • Какая есть альтернатива Flowy для node.js?

    qfox
    @qfox
    Ответы есть у меня
    Сходу, это Q, и Vow (именно его я чаще всего и использую, в т.ч. на клиенте).
    Еще есть менее известные then promise и bluebird
    Все это называется Промисы (обещания) или Promises/A+
    Это то, что касается промисов. Есть и другие библиотеки bit.ly/1putPFj

    Есть еще вариант использования различных библиотек для контроля потоком, которые тоже из горной лапши делают более-менее стройный код.
    В т.ч. async, более простая, но не менее эффективная обертка над стандартными колбеками.
    И другие: Step, Seq, FuturesJS.

    Кроме этого, в стандарт рано или поздно будут включены т.н. генераторы (yield) — часть harmony es6. Уже даже есть наработки в эту сторону типа koajs (замена expressjs).
    Они находятся в ветке 0.11, но требуют флага при запуске. Гарантий, что это появится в 0.12, конечно, нет, но в 0.14 или 0.16 оно появится с большой долей вероятности.
    Ответ написан
  • Как работает демонизация node.js в Ubuntu?

    qfox
    @qfox
    Ответы есть у меня
    Нам понравился supervisor. И для dev, и для production. Работает как master процесс, которые стартует и перестартует любые приложения, в т.ч. и такие, как node.js.

    supervisord.org
    OpenSource на гитхабе: https://github.com/Supervisor/supervisor
    Есть всякие web морды: https://github.com/Jahaja/supervisor-webctl
    Написан на питоне, но это ему не мешает ни сколько.

    Что умеет из коробки:
    Удобное API для работы (поэтому и есть возможность писать веб морды),
    Позволяет перенаправлять стандартные потоки IO, запускает как надо и под нужным пользователем,
    Сам перезапускает сервисы при падении,
    Позволяет проверять запущенные сервисы и удаленно, и через ctl, и через всякие third-party приложения,
    Позволяет собирать конфиг из кусочков, в т.ч. по wildcard, как апач/nginx, и тем самым дает возможность иметь отдельные конфиги для каждого приложения,
    Документация,
    Ну и проект живой, это очень важно https://github.com/Supervisor/supervisor/commits/master

    Очень удобно использовать вместе с чем-то типа капистрано.

    Единственное, что нам не понравилось — это то, что его самого (мастер процесс) приходится запускать от рута, чтобы иметь возможность запускать процессы из под других пользователей. Но это сложно обойти на уровне безопасности самого юникса, поэтому, забили.
    Ответ написан
    2 комментария