Начал изучать NodeJS. Нигде не нашел актуальный стек мейнстримных библиотек (технологий) применяемых в node. Поэтому решил сам составить список.
Внимание: не все из предложенных пакетов я успел испытать. Может быть опытный хабрачитатель сможет предложить варианты по лучше. Подбирал пакеты по рекомендациям в блогах. Смотрел на описания, на репозиторий в Github (stars, forks).
npm — менеджер пакетов для node. Устанавливается вместе с node (в последних версиях так точно).
Аналог в Ruby: Rubygems+Bundler. Аналог в PHP: Composer.
Официальный регистр. Не официальные: npmsearch, packagefinder, nipster
connect это расширяемый HTTP сервер фреймворк для Node, с поддержкой высокопроизводительных плагинов так же известных как middleware.
Список встроенных и трете сторонних плагинов.
Аналог в Ruby: Rack.
express минималистичный гибкий node фреймворк для веб приложений, предоставляющий широкий набор фич для построения одно-, много- страничных и гибридных веб приложений.
Подборка материалов для изучения. Русская документация.
Аналог в Ruby: Sinatra. Аналог в PHP: Silex.
Есть еще geddy. Вроде бы это аналог Rails. Но что это за зверь не знаю.
mongoose. Элегантное объектное моделирование для mongodb для node.
Документация и плагины
В других ЯП обычно в этом месте встречается термин ORM (Object-relational mapping), но mongoose это ODM (Object-document mapping). Конечно такое бывает не только в node, например в Ruby есть mongoid.
Jade высокопроизводительный движок темплейтов для node, сильное влияние на который оказал Haml.
Документация, оф. документация
Аналог в Ruby: Slim (akzhan), Haml.
stylus. Выразительный, динамичный, надежный CSS
less. LESS расширяет CSS переменными, миксинами, операциями и функциями
Аналоги в Ruby: Sass, less.
everyauth. Аутентификация и авторизация (по паролю, через facebook и т.п.) для ваших Connect и Express приложений.
Связка для mongoose и everyauth — mongoose-auth.
Аналоги в Ruby: OmniAuth.
Sirian советует passportjs. Passport это middleware для node. Очень гибкое и модулярное решение. Passport без проблем может быть подключен к любому Express приложению.
connect-mongo. MongoDB в качестве хранилища сессий для Connect приложений
Email
Nodemailer простой в использовании модуль для отправки электронной почты с помощью node (с использованием SMTP или Sendmail или Amazon SES) и Unicode поддерживается.
bcrypt. Библиотека для хеширования паролей.
node-validator представляет собой библиотеку для проверки, фильтрация и санитизации строк.
Связка для node-validator и Express — express-validator
i18n-node легковесный простой модуль для интернационализации с динамическим json хранилищем. (Спасибо maxatwork)
winston. Мульти-транспортная асинхронная библиотека для логирования
log.io позволяет просматривать потоки сообщений логов в едином пользовательский интерфейс.
grunt утилита для командной строки, для исполнения тасков. Наподобие make, rake. Изначально заточена под фронтенд разработку (таски для минификаци, запуск тестов в браузере и т.п.).
Список плагинов.
socket.io стремится сделать realtime приложения возможными в любом браузере и мобильном устройстве, стирая различия между разными транспортными механизмами.
АХТУНГ: все не так гладко, есть баги висящие больше года. Некоторые советуют использовать SockJs
node_redis. Это полный клиент для Redis для node. Он поддерживает все Redis команды, в том числе многие недавно добавленные команды, как EVAL из экспериментальных бранчей Redis.
mocha это многофункциональный тестовый JavaScript фреймворк, работающий и в node и в браузере, что делает асинхронное тестирование простым и веселым. Mocha тесты выполняются последовательно, обеспечивая гибкую и точную отчетность, обрабатывает не перехваченные исключения.
meettya порекомендовал chai. Это BDD / TDD assertion библиотека для node и браузера, которая может быть использована с любым тестовым фреймворком.
should.js — выразительная, легко читаемая, не зависищая от тестового фреймворка assertion библиотека для node.
nock — библиотека HTTP моков и ожиданий(expectations) для node
sinonjs. Автономные тест «шпионы», заглушки и моки для JavaScript.
blanket Плавное покрытия кода для JavaScript
Аналог Ruby: RCov
zombie легкий фреймворк для тестирования клиентского JavaScript кода в симулированной среде. Браузер не нужен.
Аналог Ruby: Capybara
node-inspector интерфейс отладчика для node использующий WebKit Web Inspector. Статья на Хабре
nodemon будет следить за изменениями файлов в каталоге, в котором nodemon был запущен, и если они изменятся, он будет автоматически рестартовать node приложение.
Альтернатива: supervisor
nodev помогает с запуском и отладкой node приложений при разработке. nodev запускает node-inspector вместе с вашим приложением, и будет все перезагружать при изменении файлов.
nodev — форк nodemon.
eyes — настраиваемый инспектор значение для node
Аналог в Ruby: Awesome Print.
step. Простая библиотека для управления потоком для node. Делает параллельное и последовательное исполнение, а также обработку ошибок безболезненным.
async — модуль предоставляющий простые и мощные функции для работы с асинхронным JavaScript.
Сравнение популярных библиотек для управления потоками и еще список новых библиотек
meettya напомнил про lodash. Он как underscore, но лучше.
underscore это невероятно удобная JavaScript библиотека, этакий швейцарский нож для js-разработчика, набор функций-утилит, которые так привычны любителям Prototype.js (или Ruby). Однако, в отличие, от Prototype.js, underscore не модифицирует прототипы встроенных объектов JavaScript.
forever — простой инструмент для обеспечения того, чтобы данный скрипт работает непрерывно (т.е. вечно).
request самый простой способ делать HTTP-запросы.
gm — GraphicsMagick для node
colors — цвета и стили в консоли для вашего node приложения.
commander.js. Полноценное решение для командной строки для node приложений
node-optimist — библиотека для парсинга опций
coffee-script. Удобно будет разрабатывать вместе с nodemon
Не могу не упомянуть про meteor
Метеор — платформа с открытым исходным кодом для построения высококачественных веб приложений в мгновения ока, независимо от того опытный вы разработчик или только начинаете.
Обязательно посмотрите скринкасты: 1, 2. Или почитайте, что пишут про метеор на Хабре.
Ближайшие конкуренты: derby, socketstream
UPD Нашел на Хабре другой пост с набором пакетов
Внимание: не все из предложенных пакетов я успел испытать. Может быть опытный хабрачитатель сможет предложить варианты по лучше. Подбирал пакеты по рекомендациям в блогах. Смотрел на описания, на репозиторий в Github (stars, forks).
Инсталлятор пакетов
npm — менеджер пакетов для node. Устанавливается вместе с node (в последних версиях так точно).
Аналог в Ruby: Rubygems+Bundler. Аналог в PHP: Composer.
Поиск пакетов
Официальный регистр. Не официальные: npmsearch, packagefinder, nipster
Веб стек технологий
Веб-сервер
connect это расширяемый HTTP сервер фреймворк для Node, с поддержкой высокопроизводительных плагинов так же известных как middleware.
Список встроенных и трете сторонних плагинов.
Аналог в Ruby: Rack.
Веб-фреймворк
express минималистичный гибкий node фреймворк для веб приложений, предоставляющий широкий набор фич для построения одно-, много- страничных и гибридных веб приложений.
Подборка материалов для изучения. Русская документация.
Аналог в Ruby: Sinatra. Аналог в PHP: Silex.
Есть еще geddy. Вроде бы это аналог Rails. Но что это за зверь не знаю.
База
mongoose. Элегантное объектное моделирование для mongodb для node.
Документация и плагины
В других ЯП обычно в этом месте встречается термин ORM (Object-relational mapping), но mongoose это ODM (Object-document mapping). Конечно такое бывает не только в node, например в Ruby есть mongoid.
Темплейты
Jade высокопроизводительный движок темплейтов для node, сильное влияние на который оказал Haml.
Документация, оф. документация
Аналог в Ruby: Slim (akzhan), Haml.
Замена CSS
stylus. Выразительный, динамичный, надежный CSS
less. LESS расширяет CSS переменными, миксинами, операциями и функциями
Аналоги в Ruby: Sass, less.
Аутентификация
everyauth. Аутентификация и авторизация (по паролю, через facebook и т.п.) для ваших Connect и Express приложений.
Связка для mongoose и everyauth — mongoose-auth.
Аналоги в Ruby: OmniAuth.
Sirian советует passportjs. Passport это middleware для node. Очень гибкое и модулярное решение. Passport без проблем может быть подключен к любому Express приложению.
Хранение сессий
connect-mongo. MongoDB в качестве хранилища сессий для Connect приложений
Nodemailer простой в использовании модуль для отправки электронной почты с помощью node (с использованием SMTP или Sendmail или Amazon SES) и Unicode поддерживается.
Хеширование паролей
bcrypt. Библиотека для хеширования паролей.
Валидация
node-validator представляет собой библиотеку для проверки, фильтрация и санитизации строк.
Связка для node-validator и Express — express-validator
i18n
i18n-node легковесный простой модуль для интернационализации с динамическим json хранилищем. (Спасибо maxatwork)
Логирование
winston. Мульти-транспортная асинхронная библиотека для логирования
log.io позволяет просматривать потоки сообщений логов в едином пользовательский интерфейс.
Выполнение тасков
grunt утилита для командной строки, для исполнения тасков. Наподобие make, rake. Изначально заточена под фронтенд разработку (таски для минификаци, запуск тестов в браузере и т.п.).
Список плагинов.
Реалтайм (сокеты, pub-sub)
Сокеты
socket.io стремится сделать realtime приложения возможными в любом браузере и мобильном устройстве, стирая различия между разными транспортными механизмами.
АХТУНГ: все не так гладко, есть баги висящие больше года. Некоторые советуют использовать SockJs
Redis
node_redis. Это полный клиент для Redis для node. Он поддерживает все Redis команды, в том числе многие недавно добавленные команды, как EVAL из экспериментальных бранчей Redis.
Тестирование
Фреймворк для тестирования
mocha это многофункциональный тестовый JavaScript фреймворк, работающий и в node и в браузере, что делает асинхронное тестирование простым и веселым. Mocha тесты выполняются последовательно, обеспечивая гибкую и точную отчетность, обрабатывает не перехваченные исключения.
BDD style
meettya порекомендовал chai. Это BDD / TDD assertion библиотека для node и браузера, которая может быть использована с любым тестовым фреймворком.
HTTP моки
nock — библиотека HTTP моков и ожиданий(expectations) для node
Моки
sinonjs. Автономные тест «шпионы», заглушки и моки для JavaScript.
Покрытие
blanket Плавное покрытия кода для JavaScript
Аналог Ruby: RCov
Симулирование браузера
zombie легкий фреймворк для тестирования клиентского JavaScript кода в симулированной среде. Браузер не нужен.
Аналог Ruby: Capybara
Разработка
Дебаг
node-inspector интерфейс отладчика для node использующий WebKit Web Inspector. Статья на Хабре
Горячая перезагрузка кода
nodemon будет следить за изменениями файлов в каталоге, в котором nodemon был запущен, и если они изменятся, он будет автоматически рестартовать node приложение.
Альтернатива: supervisor
Дебаг + Горячая перезагрузка кода
nodev помогает с запуском и отладкой node приложений при разработке. nodev запускает node-inspector вместе с вашим приложением, и будет все перезагружать при изменении файлов.
nodev — форк nodemon.
Инспектор переменных
eyes — настраиваемый инспектор значение для node
Аналог в Ruby: Awesome Print.
Утилиты
Управление потоком (Control-Flow)
step. Простая библиотека для управления потоком для node. Делает параллельное и последовательное исполнение, а также обработку ошибок безболезненным.
async — модуль предоставляющий простые и мощные функции для работы с асинхронным JavaScript.
Сравнение популярных библиотек для управления потоками и еще список новых библиотек
Tools
meettya напомнил про lodash. Он как underscore, но лучше.
Монитор процесса
forever — простой инструмент для обеспечения того, чтобы данный скрипт работает непрерывно (т.е. вечно).
HTTP клиент
request самый простой способ делать HTTP-запросы.
Работа с изображениями
gm — GraphicsMagick для node
Построение консольных приложений
Цвета в консоли
colors — цвета и стили в консоли для вашего node приложения.
Для написания консольных приложений
commander.js. Полноценное решение для командной строки для node приложений
node-optimist — библиотека для парсинга опций
Coffescript
coffee-script. Удобно будет разрабатывать вместе с nodemon
Немного магии вместо послесловия
Не могу не упомянуть про meteor
Метеор — платформа с открытым исходным кодом для построения высококачественных веб приложений в мгновения ока, независимо от того опытный вы разработчик или только начинаете.
Обязательно посмотрите скринкасты: 1, 2. Или почитайте, что пишут про метеор на Хабре.
Ближайшие конкуренты: derby, socketstream
UPD Нашел на Хабре другой пост с набором пакетов