- PVSM.RU - https://www.pvsm.ru -

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

Начал изучать NodeJS. Нигде не нашел актуальный стек библиотек (технологий) применяемых в node. Поэтому решил сам составить список.

Внимание: не все из предложенных пакетов я успел испытать. Может быть опытный хабрачитатель сможет предложить варианты по лучше. Подбирал пакеты по рекомендациям в блогах. Смотрел на описания, на репозиторий в Github (stars, forks).

Инсталлятор пакетов

npm [1]
Менеджер пакетов для node. Устанавливается вместе с node (в последних версиях так точно).
Аналог в Ruby: Rubygems+Bundler. Аналог в PHP: Composer.

Поиск пакетов

Официальный регистр [1]. Не официальные: npmsearch [2], packagefinder [3], nipster [4]

Веб стек технологий

Веб-сервер

connect [5].
Connect это расширяемый HTTP сервер фреймворк для Node, с поддержкой высокопроизводительных плагинов так же известных как middleware.
Список встроенных [6] и трете сторонних [7] плагинов.
Аналог в Ruby: Rack.

Веб-фреймворк

express [8]
Express минималистичный гибкий node фреймворк для веб приложений, предоставляющий широкий набор фич для построения одно-, много- страничных и гибридных веб приложений.
Подборка материалов для изучения [9]
Аналог в Ruby: Sinatra. Аналог в PHP: Silex.

Есть еще geddy [10]. Вроде бы это аналог Rails. Но что это за зверь не знаю.

База

mongoose [11]
Элегантное объектное моделирование для mongodb для node.
Документация [12] и плагины [13]
В других ЯП обычно в этом месте встречается термин ORM (Object-relational mapping), но mongoose это ODM (Object-document mapping). Конечно такое бывает не только в node, например в Ruby есть mongoid [14].

Темплейты

Jade [15]
Jade высокопроизводительный движок темплейтов для node, сильное влияние на который оказал Haml.
Документация [16], оф. документация [17]
Аналог в Ruby: Haml.

Замена CSS

stylus [18]
Выразительный, динамичный, надежный CSS
less [19]
LESS расширяет CSS переменными, миксинами, операциями и функциями
Аналоги в Ruby: Sass, less.

Аутентификация

everyauth [20]
Аутентификация и авторизация (по паролю, через facebook и т.п.) для ваших Connect и Express приложений.
Связка для mongoose и everyauth — mongoose-auth [21].
Аналоги в Ruby: OmniAuth.

Хранение сессий

connect-mongo [22]
MongoDB в качестве хранилища сессий для Connect приложений

Email

Nodemailer [23]
Nodemailer простой в использовании модуль для отправки электронной почты с помощью node (с использованием SMTP или Sendmail или Amazon SES) и Unicode поддерживается.

Хеширование паролей

bcrypt [24]
Библиотека для хеширования паролей.

Валидация

node-validator [25]
node-validator представляет собой библиотеку для проверки, фильтрация и санитизации строк.
Связка для node-validator и Express — express-validator [26]

Логирование

winston [27]
Мулти-транспортная асинхронная библиотека для логирования

log.io [28]
Log.io позволяет просматривать потоки сообщений логов в едином пользовательский интерфейс.

Реалтайм (сокеты, pub-sub)

Сокеты

socket.io [29]
Socket.IO стремится сделать realtime приложения возможными в любом браузере и мобильном устройстве, стирая различия между разными транспортными механизмами.

Redis

node_redis [30]
Это полный клиент для Redis для node. Он поддерживает все Redis команды, в том числе многие недавно добавленные команды, как EVAL из экспериментальных бранчей Redis.

Тестирование

Фреймворк для тестирования

mocha [31]
Mocha это многофункциональным тестовый JavaScript фреймворк, работающий и в node и в браузере, что делает асинхронное тестирование простым и веселым. Mocha тесты выполняются последовательно, обеспечивая гибкую и точную отчетность, обрабатывает не перехваченные исключения.

BDD style

should.js [32]
should — выразительный, легко читаемый, не зависzobq от тестового фреймворка assertion библиотека для node.

HTTP моки

nock [33]
Nock — библиотека HTTP моков и ожиданий(expectations) для node

Моки

sinonjs [34]
Автономные тест «шпионы», заглушки и моки для JavaScript.

Покрытие

blanket [35]
Плавное покрытия кода для JavaScript
Аналог Ruby: RCov

Симулирование браузера

zombie [36]
Zombie.js легкий фреймворк для тестирования клиентского JavaScript кода в симулированной среде. Браузер не нужен.
Аналог Ruby: Capybara

Разработка

Дебаг

node-inspector [37]
Node Inspector интерфейс отладчика для nodeJS использующий WebKit Web Inspector. Статья на Хабре [38]

Горячая перезагрузка кода

nodemon [39]
nodemon будет следить за изменениями файлов в каталоге, в котором nodemon был запущен, и если они изменятся, он будет автоматически рестартовать node приложение.
Альтернатива: supervisor [40]

Дебаг + Горячая перезагрузка кода

nodev [41]
Помогает с запуском и отладкой node приложений при разработке. nodev запускает node-inspector вместе с вашим приложением, и будет все перезагружать при изменении файлов.
nodev — форк nodemon.

Инспектор переменных

eyes [42]
H настраиваемый инспектор значение для node
Аналог в Ruby: Awesome Print.

Утилиты

Управление потоком (Control-Flow)

step [43]
Простая библиотека для управления потоком для node. Делает параллельное и последовательное исполнение, а также обработку ошибок безболезненным.

async [44]
Async — модуль предоставляющий простые и мощные функции для работы с асинхронным JavaScript.

Сравнение популярных библиотек для управления потоками [45] и еще список новых библиотек [46]

Tools

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

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

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

HTTP клиент

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

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

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

colors [50]
colors.js — Цвета и стили в консоли для вашего node приложения.

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

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

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

Coffescript

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

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

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

Автор: kotiara

Источник [60]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/24241

Ссылки в тексте:

[1] npm: https://npmjs.org/

[2] npmsearch: https://github.com/spion/npmsearch

[3] packagefinder: http://packagefinder1-enome.dotcloud.com/

[4] nipster: http://eirikb.github.com/nipster/

[5] connect: https://github.com/senchalabs/connect

[6] встроенных: https://github.com/senchalabs/connect#middleware

[7] трете сторонних: https://github.com/senchalabs/connect/wiki

[8] express: http://expressjs.com/

[9] Подборка материалов для изучения: http://stackoverflow.com/questions/8144214/learning-express-for-node-js

[10] geddy: https://github.com/mde/geddy

[11] mongoose: http://mongoosejs.com/

[12] Документация: http://mongoosejs.com/docs/guide.html

[13] плагины: http://plugins.mongoosejs.com/

[14] mongoid: http://mongoid.org/en/mongoid/index.html

[15] Jade: http://jade-lang.com/

[16] Документация: http://naltatis.github.com/jade-syntax-docs/

[17] оф. документация: https://github.com/visionmedia/jade#readme-contents

[18] stylus: http://learnboost.github.com/stylus/

[19] less: http://lesscss.org/

[20] everyauth: https://github.com/bnoguchi/everyauth

[21] mongoose-auth: https://github.com/bnoguchi/mongoose-auth

[22] connect-mongo: https://github.com/kcbanner/connect-mongo

[23] Nodemailer: https://github.com/andris9/Nodemailer

[24] bcrypt: https://github.com/ncb000gt/node.bcrypt.js/

[25] node-validator: https://github.com/chriso/node-validator

[26] express-validator: https://github.com/ctavan/express-validator

[27] winston: https://github.com/flatiron/winston

[28] log.io: http://logio.org/

[29] socket.io: http://socket.io/

[30] node_redis: https://github.com/mranney/node_redis

[31] mocha: http://visionmedia.github.com/mocha/

[32] should.js: https://github.com/visionmedia/should.js

[33] nock: https://github.com/flatiron/nock

[34] sinonjs: http://sinonjs.org/

[35] blanket: https://github.com/Migrii/blanket

[36] zombie: http://zombie.labnotes.org/

[37] node-inspector: https://github.com/dannycoates/node-inspector

[38] Статья на Хабре: http://habrahabr.ru/post/114825/

[39] nodemon: https://github.com/remy/nodemon

[40] supervisor: https://github.com/isaacs/node-supervisor

[41] nodev: https://github.com/ericvicenti/nodev

[42] eyes: https://github.com/cloudhead/eyes.js

[43] step: https://github.com/creationix/step

[44] async: https://github.com/caolan/async

[45] Сравнение популярных библиотек для управления потоками: http://dailyjs.com/2011/11/14/popular-control-flow/

[46] список новых библиотек: http://dailyjs.com/2012/02/20/new-flow-control-libraries/

[47] underscorejs: http://underscorejs.org/

[48] forever: https://github.com/nodejitsu/forever

[49] request: https://github.com/mikeal/request

[50] colors: https://github.com/Marak/colors.js

[51] commander.js: https://github.com/visionmedia/commander.js

[52] node-optimist: https://github.com/substack/node-optimist

[53] coffee-script: https://github.com/jashkenas/coffee-script

[54] meteor: http://meteor.com/

[55] 1: http://meteor.com/screencast

[56] 2: http://meteor.com/authcast

[57] на Хабре: http://habrahabr.ru/search/?q=%5BMeteor%5D&target_type=posts

[58] derby: http://derbyjs.com/

[59] socketstream: https://github.com/socketstream/socketstream

[60] Источник: http://habrahabr.ru/post/165017/