Pull to refresh

Полный набор пакетов для разработки с помощью NodeJS

Reading time 5 min
Views 53K
Начал изучать 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.

Замена 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 приложений

Email


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 и браузера, которая может быть использована с любым тестовым фреймворком.

should.js — выразительная, легко читаемая, не зависищая от тестового фреймворка 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, но лучше.

underscore это невероятно удобная JavaScript библиотека, этакий швейцарский нож для js-разработчика, набор функций-утилит, которые так привычны любителям Prototype.js (или Ruby). Однако, в отличие, от Prototype.js, underscore не модифицирует прототипы встроенных объектов JavaScript.

Монитор процесса


forever — простой инструмент для обеспечения того, чтобы данный скрипт работает непрерывно (т.е. вечно).

HTTP клиент


request самый простой способ делать HTTP-запросы.

Работа с изображениями


gm — GraphicsMagick для node

Построение консольных приложений


Цвета в консоли


colors — цвета и стили в консоли для вашего node приложения.

Для написания консольных приложений


commander.js. Полноценное решение для командной строки для node приложений

node-optimist — библиотека для парсинга опций

Coffescript


coffee-script. Удобно будет разрабатывать вместе с nodemon

Немного магии вместо послесловия


Не могу не упомянуть про meteor
Метеор — платформа с открытым исходным кодом для построения высококачественных веб приложений в мгновения ока, независимо от того опытный вы разработчик или только начинаете.
Обязательно посмотрите скринкасты: 1, 2. Или почитайте, что пишут про метеор на Хабре.
Ближайшие конкуренты: derby, socketstream

UPD Нашел на Хабре другой пост с набором пакетов
Tags:
Hubs:
+73
Comments 45
Comments Comments 45

Articles