Полезные инструменты, туториалы и ресурсы

Original author: Luca Degasperi
  • Translation
Созданый Райаном Далем в 2009 году, Node.js — относительно новая технология, завоевавшая в последнее время большую популярность среди веб-разработчиков. Однако, до сих пор не каждый знает, что на самом деле Node.js это серверная JavaScript среда, использующая асинхронную событийную модель. Что это означает? Все просто: это среда, которая предназначена для написания масштабируемых, высокопроизводительных приложений. Почти как Ruby’s Event Machine или Python’s Twisted, но гораздо глубже — JavaScript реализовывает цикл событий, на уровне самого языка, а не как отдельная библиотека.



И это еще не все: то, что действительно круто в Node.js — это тысячи модулей, доступных для любых целей, а также активниешее сообщество этого молодого проекта. В этом обзоре вы найдете самые полезные ресурсы по Node.js, от просто удобных инструментов и подробных руководств, до углубленных статей и ресурсов о этой перспективной технологии. Используете ли вы Node.js? Поделитесь опытом в комментариях к этотому посту!

Полезные инструменты Node.js




Node Express Boilerplate

Node Express Boilerplate позволяет начать проект с чистого листа, но при этом сразу же обеспечивает решение всех тех рутинных задач, которые зачастую могут сорвать проект еще до того, как он начат.


Socket.IO

Socket.IO — это кросс-браузерный веб сокет, который позволяет разрабатывать real-time приложения, доступные в любом браузере и мобильном устройстве, сводя к нулю различия между механизмами транспорта. Это беззаботный реалтайм, в рамках JavaScript.


Mastering Node

С помощью Mastering Node вы можете разрабатывать высоконагруженные веб-сервера, используя модульность CommonJS, библиотеки ядра Node.js и модули сторонних разработчиков.


Log.io

Ваша инфраструктура имеет сотни логов, распределенных по десяткам машин? Чтобы помочь вам контролировать развертывания и устранения неполадок и создан Log.io. Он позволяет мгновенно увидеть агрегированые потоки сообщений логов в едином пользовательском интерфейсе.


Formaline

Formaline является низкоуровневым, полнофункциональным модулем для обработки запросов (HTTP POST и PUT), а также для быстрого парсинга загруженных файлов. Кроме того, он из коробки готов к использованию вместе с, например, Connect.


LDAPjs

LDAPjs — разработанный с нуля JavaScript фреймворк для реализации LDAP клиентов и серверов в Node.js. Он предназначен для разработчиков, которые используют Node.js и Express для взаимодействия с HTTP-сервисами.


Node Supervisor

Node Supervisor это небольшой управляющий скрипт для Node.js. Он запускает ваш код и следит за изменениями кода, так что вы можете использовать горячую замену кода, не беспокоясь об утечках памяти или об очистке межмодульных зависимостей, а главное можно не париться про логику тех самых зависимостей.


Stylus: Расширеный CSS для Node.js

Stylus создает впечатление удобного языка, который может быть преобразован в CSS. Компилятор написан на Node.js.


Jade

Jade – шаблонизатор для Node.js приложений. Он сочетает в себе кучу возможностей и гибкость, завернутые в красивый синтаксис.


Express

Это Sinatra-подобный веб-фреймворк для Node.js: быстро, гибко и сексуально (примечание переводчика: боюсь предположить, чем вызван такой набор эпитетов — решил переводить дословно «fast, flexible and sexy», дальше фантазируем самостоятельно). Cпасибо markPnk за наводку на русские доки.


Hook.io

hook.io создает распределенные Node.js EventEmitter, которые работают кросс-процессорно / кросс-платформенно / кросс-браузерно / кросс-офигительно (имхо переводчика). Представьте себе шину событий, которая работает везде, ну действительно везде, где поддерживается JavaScript.


Node Package Manager

NPM — менеджер пакетов для Node.js. Используйте его, для установки и публикации своего кода. Он управляет зависимостями и выполняет другие полезные функции.


Node-QRcode

Просто генератор QR-кодов.


NWM

NWM представляет собой динамический менеджер окон для X, который был написан на NodeKO 2011 года. Он использует libev для взаимодействия с X11, и это позволяет вам оперировать окнами из Node.js.


Bricks.js

Bricks.js является передовым модульным веб фрэймворком на Node.js, обладающим высокой гибкостью. Bricks.js может быть использован как одиночный статический веб-сервер, как маршрутизатор или как многоуровневая Apache-подобная система маршрутизации, и он является достаточно модульным, чтобы иметь возможность полностью управлять маршрутизацией.


Node.js Modules

Список почти всех самых известных модулей Node.js, организованый по категориям. Этот список точно достоен вашего внимания (примечание переводчика: и моего отдельного обзора).


90 Node.js модулей с открытым исходным кодом

Недавно Browserling выложил для разработчиков более 90 Node.js модулей с открытым исходным кодом. Некоторые из них являются небольшими и, честно говоря, странноватыми, но многие могут оказаться очень полезными для вашего следующего проекта на Node.js.


Calipso

Calipso — это система управления контентом (CMS) на базе сервера NodeJS.


PDFKit

PDFKit — библиотека для для генерации PDF документов, позволяющая легко создавать сложные, многостраничные, готовые к печати документы. Написан на чистом CoffeeScript, но вы можете использовать богатый JavaScript API. API включает в себя как функции низкого уровня, так и более высокоуровневые абстракции.


Forever

Простейшая тулзень для командной строки, превращающая скрипт в нечто среднее между запускаемым по крону и демоном.


Введение в Node.js



Node.js — шаг за шагом

Node.js — удивительная новая технология, но даже если вы — опытный разработчик JavaScript, процесс ознакомления с ней может быстро надоесть. Если вы хотите узнать, как использовать Node.js, этот набор статей и видеороликов точно поможет.



Что такое Node.js?

Еще одна интересная дискуссия на StackOverflow о том, на что способен и не способен Node.js. Рекомендуется для тех, кто взглянул на Node.js в первый раз.



Cпасибо ivansergeev за то что указал на
Руководства по Node.js
Это перевод руководств, опубликованных Felix Geisendörfer. Включает руководство для новичков, руководство по стилю кода, информацию о сообществе Node.js и много другой очень полезной информации.




На сегодня, пожалуй, все. В следующей части обязательно выложу дополненый своими загажниками перевод подборки узкотехнических статей и руководств по Node.js

А вы уже используете Node.js? Что было бы интерестно прочитать в следующих статьях, и на чем сделать акцент?
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 70

    0
    Спасибо огромное!) как раз думаю активно изучать node.js
      0
      Пожалуйста =) Этого материала точно хватит для начала — проверено на себе. К продолжению уже будете готовы, как минимум, теоретически.
    • UFO just landed and posted this here
        +1
        Господа, был найден клад! Спасибо.
        • UFO just landed and posted this here
          +1
          Я распарсил этот список, добавил статистику по watchers и forks, получилось вот так: modules.node-js.ru
          • UFO just landed and posted this here
            • UFO just landed and posted this here
                0
                Список обновляется каждую ночь. Сквозную сортировку конечно надо сделать тоже, а также тренды недели (сортировать по приросту вотчеров за неделю, скажем) — так можно будет отследить что-то новое и интересное. Сделаю обязательно, как будет свободная минутка.
                • UFO just landed and posted this here
            0
            Изучаю Node.js около полугода, пишу в основном анализаторы текстовых файлов и качалки информации с сайтов. Нехватало работы с окнами, спасибо за наводку на nwm буду изучать.
              +2
              Народ, поделитесь практическим опытом использования Node.js. не ссылками на обсуждения в инете, а сугубо личным. особо интересуют такие вопросы:

              1. Какие задачи решаете с его помощью?
              2. почему выбрали именно его, по какому критерию?
              3. грабли, танцы с бубнами, эффективные заклинания?
              4. чем для *ваших* задач он лучше? (перекликается с 2, но иногда сначала выбирают, а потом приходит понимание)

              Спасибо.
                0
                Уже использую в связке с редисом для реализации автокомплита на высоконагруженом сайте — если интерестно — напишу отдельный топик. Плюс используем для быстрого доступа клиентского джиэса к серверному кешу (редис и мэмкеш)
                  0
                  да интересно. просто, я пробовал его пощупать и либо я дурак, либо оно не о чем.

                  Тоесть единственный как бы «плюс» это то что он написан на JS. Все остальное и архитектурно и концептуально настолько ммммммм странно, что я даже не понял зачем оно надо.

                  Но смотря на то сколько народу пытается чтото на нем делать, у меня шевилится мысль, что я уже старый сильно и чего то не догоняю
                    0
                    Далее оффтоп. 34 — старый? =) Не согласен на корню.
                      0
                      пока еще 33 :) но тем не менее при взгляде на ноду мне кажется что это шаг назад, который многим вылезет боком. но наличие такого количества энтузиастов, наталкивает на мысль, что я чтото пропустил
                        0
                        Когда я в студенчестве увидел Prolog впервые, я подумал — как на этом можно писать?! Оказалось что просто надо иначе думать. Тут типа то же самое: думаешь асинхронно и уже нет никакой каши ни в голове, ни в коде. Но надо руку набить сперва, как и везде, в общем-то, будь то руби или скала.
                          0
                          я про поддерживаемость кода, а не про трудность его написания
                            0
                            Эти понятия идут рука об руку, иначе вопрос о многоэтажности колбэков вообще не возник бы: написал и ладно. Я как раз про то, как лучше написать так, чтоб потом не было мучительно больно через пару месяцов читать код.
                      +2
                      Я правильно понял что основная проблема это асинхронность нода? Если так, то я в принципе согласен что для многих задач это преждевременная оптимизация. Поэтому я написал Common Node который позволяет мне писать код в синхронном стиле не теряя преимуществ нода (низкий объем памяти, скорость и JavaScript).
                        0
                        Главная проблема, на мой взгляд, это колбэки и то с какой скоростью превращается код их использующий в кашу.

                        + Если к этому добавить «родовые травмы» JS — динамическую типизацию, неявный вывод типов и нестрогий синтаксисом, то большие проекты хз как сопровождать. Ниже, человек написал что у них 100к слоков на js — я натурально в осадок выпал. У меня был опыть питоновского проекта гдетона на 70к и 7 разработчиков — это быстро стало адом.

                        js отличный скриптовый язык но тянуть его на сервер — не могу этого понять. учитавая что есть эланг и прочие функциональные языки.
                          +2
                          Я и имел в виду проблемы с кучей колбэков под асинхронностью. Мой проект решает эти проблемы.

                          По поводу языка, я не согласен. Используя модули и packages, очень даже удобно работать с большими проектами. JavaScript благодаря его динамичности очень компактный а прототипы позволяют писать код в разных стилях начиная с процедурного вплоть до функционального.
                            +1
                            Используйте github.com/caolan/async, разбивайте код на модули — вложенности глубиной больше 3-4 нигде не будет.
                              0
                              Проблема не только в глубине но и в отсутствии контекста и лишнего «boilerplate» кода.
                              –1
                              человек написал что у них 100к слоков на js
                              Разрешите узнать, что Вы имели в виду, говоря «слоков».
                      +2
                      1) Используем для управления облачным хостингом — справляется на ура!
                      2) Две причины: javascript очень гибок и удобен, наш хостинг для node.js приложений
                      3) Стараемся обходится без грабель, все «недостатки» решаются созданием pull request для node с фиксом ошибок или с усовершенствованием API
                      4) см. 2
                        0
                        сколько разработчиков в проекте, сколько строк кода, хотябы примерно, в той части что под ноду?

                        спасибо
                          +1
                          11 человек, > 100к как минимум.
                            0
                            100 000 строк яваскрипт кода??? офигеть. а можете рассказать как организована работа с ним? поддержка, рефакторинг, тестирование?

                            сервис сильно нагружен? сегментейшен фолт часто бывает?

                            Спасибо.
                            • UFO just landed and posted this here
                                0
                                мы оба говорим о коде под node.js?
                                • UFO just landed and posted this here
                                    0
                                    Боевого кода привести не могу, но во время моих экпериментов, месяца 3 назад, регулярно валилось при работе с мускулом.

                                    гугленье тогда показало что сегфолт, в разных ситуациях ловят почти все. в том числе были релизы, которые просто при установке высыпались.

                                    + была серьезная проблема с поддержкой кирилицы (не utf8). как сейчас не знаю.

                                    вчера через личку пообщались с хорошим человеком, по его мнению в последнем релизе сегфолтов стало значительно меньше.
                                    • UFO just landed and posted this here
                                        +1
                                        Ну вот в ваш pure-js код, приходит строка кирилицы в win1251 и гдето внутри ноды что-то сыплется и в результате имеем сегфолт. это чьих кривых рук дело?

                                        вот, пример нагуглил ошибка в регэкспе приводит к сегфолту.

                                0
                                Все разбито на модули, в каждом до 5 тысяч строк.
                                Segfaults бывает только если C расширения неправильно обрабатывают память, в моей практике не встречались. (Только когда сам писал C расширения и ошибался)

                                Пока нагрузка относительно небольшая, но все решается горизонтальным маштабированием.
                          • UFO just landed and posted this here
                            0
                            В одном старом проекте заменил сервис, который раздавал события клиентским приложениям с реализации на Delphi на реализацию на NodeJS. Ну там вообще вся серверная часть переползла под линукс. Старый сервис уже использовал JS (движок от Microsoft) так что на NodeJS надо было только реализовать такую же глобальную область видимости ( с такими же функциями и объектами), а старые все скрипты просто подхватились.
                            В новых проектах (у меня это не сайты) для Web интерфейса использую NodeJS + NowJS — основное преимущество это использование одного языка в клиенте и сервере ну и RPC «без напряга» (фишка NowJS — возможность легко вызвать функцию на другой стороне (с клиента на сервере и наоборот) и получить обратно callback).
                            Еще одно применение у меня это создание сетевых сервисов для разных железяк, которые работают по Serial интерфейсу. Например, когда несколько устройств сидит на RS-485 (разные датчики или реле) и надо с ними общаться другим программам по сети. Асинхронность и сетевые возможности NodeJS приходятся очень кстати.
                              0
                              Да и у меня есть парочка своих модулей для NodeJS.
                            +2
                            Почему именно нода?
                            Чуваки, одумайтесь.
                            JS — классная вещь, но нода — это не то, ради чего стоит потратить лучшие годы жизни.

                            Три с половиной человека, делающие протоипы сайтов — это стандарт, а сотни, с нуля поднимающие платформу — это уже явление.

                            Сам чуть не попался на эту ловушку, отсюда и такой непозитивный комментарий.
                              +1
                              Node.js — это не только сайты. Более того, я рекомендую использовать его для создания сервисов. Для создания сайтов есть множество других популярных и намного более удобных технологий (взять хотя бы RoR).
                              Наша компания активно использует node.js, никаких нареканий нет, а если и были — сами поправили все и предложили на review авторам.
                              • UFO just landed and posted this here
                                  +1
                                  На опыте, полученном во время работы в Nodejitsu ( nodejitsu.com/ )
                                  • UFO just landed and posted this here
                                      +1
                                      • Легко модифицируется
                                      • Легко писать C расширения (v8 api обалденный просто)
                                      • Простое развертывание в облаке
                                      • Легкость организации межпрограммного/межсерверного взаимодействия (простая работа с сокетами)
                                      • UFO just landed and posted this here
                                          0
                                          Абсолютно ничем.
                                          Только про API.

                                          Мое мнение исключительно субъективно и основано только лишь на личном опыте разработки приложений на python/ruby/erlang/node.js
                                      0
                                      Вот! Проект который у вас под опенсорсом, haibu, это просто одна нода облака? То, что соединяет эти ноды вы не опенсорсили?
                                        0
                                        На данный момент — нет. Все остальное закрытые технологии.
                                0
                                Посоветуйте модуль для работы с mysql. Пытался найти самый оптимальный вариант, но возникло больше вопросов чем ответов.
                                Как-то неоднозначно ситуация с мускулем обстоит.

                                Особенно интересует кто каким модулем пользуется на боевых серверах.
                                  0
                                  http://github.com/mscdex/node-poormansmysql — асинхронный драйвер майскла для ноды, использующий мускулевую командную строку.

                                  Но лучше всего сходи сюда http://nodejsdb.org/
                                  • UFO just landed and posted this here
                                    +3
                                    Стоит дополнить из полезностей на русском для начинающих:
                                    Руководства по языку http://nodeguide.ru/doc/ (низкий поклон создателям)
                                    Блог о разном/интересном http://nodejs.ru/ (жалко редко обновляется)
                                      0
                                      Спасибо, добавил! Как то мимо них проходил…
                                      • UFO just landed and posted this here
                                          0
                                          Thanks, I've updated.
                                          • UFO just landed and posted this here
                                              0
                                              Низкий поклон тебе за труды! Очень полезное руководство.
                                              Жалко кармы недостаточно, заплюсовал бы.
                                            • UFO just landed and posted this here
                                        +1
                                        Если у вас есть вопросы по node.js, модулям — смело обращайтесь ко мне!
                                          0
                                          Забавно, как только статья вышла на Smashing Magazine, я взялся ее переводить :) Перевел только пару абзацев и решил сначала доделать перевод статьи про багрепорты :) Если бы я продолжил переводить, получилось бы нехорошо.

                                          А переводите вы очень достойно, спасибо за такое качество!
                                            +1
                                            Спасибо за лестный отзыв! Передам учителям при случае )
                                            +1
                                            Возможно глупый вопрос — можно ли и как проще всего использовать Node.js (или V8) для создания командлайновых утилиток? Типа как скрипты только на JS.
                                              0
                                              Есть модули для парсинга аргументов. Тот же же express.js поставляется со скриптом для генерации каркаса.
                                                +1
                                                Для этого написан удобный модуль Commander.js
                                                +2
                                                Добавьте в топик ссылки на сайты dailyjs.com & blog.nodejitsu.com — там частенько появляются новости и обзоры модулей для ноды.
                                                  +1
                                                  Набросал недавно рейтинг nodejs модулей: modules.node-js.ru/
                                                  Rolling on railwayjs :)
                                                    0
                                                    С помощью Mastering Node вы можете разрабатывать высоконагруженные веб-сервера, используя модульность CommonJS, библиотеки ядра Node.js и модули сторонних разработчиков.
                                                    Простите, вы хоть сами понимаете эту фразу? ;)

                                                    Руссскоязычный форум по Node.js: forum.nodejs.ru
                                                    Переведённая документация: nodejs.ru/doc/v0.4.x/index.html (fork me)

                                                    Only users with full accounts can post comments. Log in, please.