Обновить
128K+

Node.JS *

Среда для запуска JavaScript-приложений

27,89
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Node.js — руководство по убеждению начальства

Время на прочтение5 мин
Охват и читатели24K
От переводчика: Я только начинаю присматриваться к Node.js, и, обнаружив это руководство, сильно пожалел, что оно не попалось мне на глаза раньше. Надеюсь, что этот перевод поможет многим разобраться, что же такое Node, и с чем его едят.

У вас уже чешутся руки попробовать Node.js и пора начинать обрабатывать начальство? Не торопитесь! Для некоторых компаний, которые я консультировал на предмет того, подходит ли им Node.js, правильный ответ был — «Нет!»

Это руководство — набор основанных на моём личном опыте советов для тех, кто хочет узнать, имеет ли смысл применять Node у себя в компании, и, если да, то как убедить в этом начальство.
Читать дальше →

Node.js и эра JavaScript

Время на прочтение2 мин
Охват и читатели13K
Три месяца назад мы решили отказаться от использования Django на нашем сайте и переписать все с нуля на серверном JavaScript под Node.js (уж если бывает в жизни стартапа время, когда можно серьёзно менять инфраструктуру, так это в самом начале пути — когда есть наибольшая свобода маневра).

Что заставило нас принять такое решение? Одна простая мысль — стек LAMP мёртв. За два десятилетия, прошедшие со времени его рождения, произошли фундаментальные изменения в протоколах, контенте, серверах и клиентах, на которых построен Веб. Можно выделить три эры развития паутины:
Читать дальше →

Поддержка протокола SPDY в Node.JS

Время на прочтение1 мин
Охват и читатели1.6K
donnerjack13589 анонсировал новый модуль для Node.JS, — node-spdy, который добавляет поддержку протокола SPDY, который был предложен компанией Google и внедрен в Chromium/Google Chrome и на сайтах компании Google (подробнее...).

Напомню, что основной целью при создании протокола SPDY было снижение задержек при доставке контента.

Пример использования модуля node-spdy:
var options = {
  key: fs.readFileSync(__dirname + '/../keys/spdy-key.pem'),
  cert: fs.readFileSync(__dirname + '/../keys/spdy-cert.pem'),
  ca: fs.readFileSync(__dirname + '/../keys/spdy-csr.pem'),
  NPNProtocols: ['spdy/2']
};

spdy.createServer(options, function(req, res) {
  res.writeHead(200);
  res.end('hello world!');
});


Приветствуется помощь сообщества в разработке.

Ожидание нескольких событий в nodejs

Время на прочтение6 мин
Охват и читатели14K
Наверное, каждый, кто начинает изучать nodejs, испытывает трудности с переходом на событийно-ориентированное программирование. Все просто, пока мы можем выполнять действия последовательно: начинать следующее, дождавшись завершающего события от предыдущего. Но что делать, если таких действий много и они продолжительны во времени? А если мы не можем продолжать, пока не дождемся завершения каждого из них?

Почитать рассуждения новичка

node-sync — псевдо-синхронное программирование на nodejs с использованием fibers

Время на прочтение6 мин
Охват и читатели21K
Надавно была опубликована библиотека node-fibers, вносящая в nodejs и v8 поддержку замечательного fiber/coroutine — тоесть, возможность использовать yield.
Параллельно, на nodejs groups прошел целый ряд обсуждений на тему всевозможных вариантов упрощения асинхронного синтаксиса.

Вдохновившись возможностями, которые дают «волокна», я написал библиотеку node-sync, которая делает разработку в асинхронном окружении nodejs значительно удобнее, а код — нагляднее.

Синопсис

// Обычная асинхронная функция, вызывает callback с результатом через 1 сек
function someAsyncFunction(a, b, callback) {
    setTimeout(function(){
        callback(null, a + b);
    }, 1000)
}
// Вызываем эту функцию синхронно, используя Function.prototype.sync(),
// работающий по тому же принципу, что и call()
// на этом моменте текуший поток "зависнет" на секунду, пока функция не вернет значение
var result = someAsyncFunction.sync(null, 2, 3);
console.log(result); // "5" через 1 секунду

Читать дальше →

Удаленная отладка Node.js приложений и кода на WebKit браузерах

Время на прочтение2 мин
Охват и читатели22K
В статье пойдет речь о Must Have тулзе для удаленной отладки Node.js приложений либо кода на WebKit браузерах node-inspector.

Для отладки кода в браузере, впринципе удаленная отладка и не нужна, не считая мобильных устройств, где она фактически не возможна потому что крайне не удобна. Совсем другое дело с серверным JavaScript. Node.js имеет несколько отладчиков, восновном продвигают ndb Node Debugger — консольная утилита для дебага Node.js приложений. Подходит только для фанатов консоли либо для мазохистов. Работать не удобно, отлаживать долго, по сравнению с отладкой кода в том же FireBug.

Что же умеет node-inspector:
1. Удаленная отладка
2. Отладка в графическом интерфейсе WebKit-debugger (На клиент ничего не нужно ставить — у вас все уже есть)
3. Редактирование runtime-кода!
4. Использует WebSockets, и никакого polling'а!
5. Удаленное профилирование блоков кода c использованием v8-profiler
Читать дальше →

Разбор Wave файла на JavaScript

Время на прочтение6 мин
Охват и читатели7.8K
icon
Сделано под вдохновением этого топика.
Обычный JavaScript, к которому все привыкли, не даёт средств работы ни с файловой системой, ни с двоичными данными, поэтому все описанное ниже будет про node.js.
подробности

Анонс node 0.4 — второй стабильной ветки

Время на прочтение2 мин
Охват и читатели1K

Наглядно о потоке выполнения в Node.js

Время на прочтение3 мин
Охват и читатели12K
В комментариях к моему предыдущему топику об асинхронном программировании, коллбеках и использовании process.NextTick() в Node.js было задано немало вопросов о том, за счёт чего получается или может быть получена большая производительность при использовании неблокирующего кода. Постараюсь это наглядно показать :) Статья призвана в основном прояснить некоторые моменты работы Node.js (и libeio в его составе), которые на словах бывает трудно описать.

Пример обработки запросов сервером с блокирующим чтением:


В первую очередь прокомментирую полезность использования неблокирующего ввода/вывода. Как правило, использовать блокирующие операции в Node.js стоит лишь на этапе инициализации приложения, и то не всегда. Правильная обработка ошибок в любом случае потребует использования try/catch, так что код при использовании неблокирующих операций не будет сложнее, чем при использовании блокирующих операций.
Нужно лишь помнить, что случае, когда запросов неблокирующих операций может оказаться больше, чем потоков libeio. В этом случае новые запросы будут становиться в очередь и блокировать выполнение, однако для программиста это будет происходить прозрачно.
Преимущества неблокирующих операций и некоторые недостатки в картинках

Асинхронное программирование, коллбеки и использование process.nextTick()

Время на прочтение7 мин
Охват и читатели21K
Несмотря на то, что большинство из изучающих Node.js в какой-то мере знают JavaScript и имеют опыт использования его в контексте браузеров, при обсуждении практических моментов многие встречаются с трудностями в понимании работы стандартной библиотеки и механизмов обеспечения асинхронного выполнения кода, содержащего множество вложенных коллбеков. Также часто возникает недопонимание, Я постараюсь вкратце описать порядок работы event loop в Node.js и рассказать, на какие моменты стоит обратить внимание при написании качественного асинхронного кода. Думаю, что статья будет полезна и тем, кто занимается написанием производительных фреймворков для браузеров.

Читать дальше →

Переход Node.js под крыло Joyent, выпуск версий v0.2.5 и v0.3.1

Время на прочтение2 мин
Охват и читатели1.4K
В течении последних месяцев стало ясно, что возрастающая популярность Node требует большей и лучше организованной команды разработчиков. Действительно, чтобы Node стал более популярен, и возможно стал следующим PHP, требуются инвестиции в команду разработчиков на полной занятости. Нужна компания, поддерживающая их и позволяющая наладить отношения с большими компаниями, которые могут использовать Node в своих проектах и внести свой вклад в проект.



Основной бизнес Joyent (облачные вычисления) вполне отвечает духу свободного и открытого Node. По этим причинам я заключил соглашение с Joyent об официальной поддержке Node.js. Единственное изменение, которое коснётся разработчиков — CLA будет подписываться не со мной, а с Joyent. Node будет продолжать регулярно выходить под лицензией MIT. В рамках соглашения — в дополнение к поддержке моих разработок — мы наняли Isaac Schlueter и планируем расширить команду ещё на одного человека в ближайшее время. Скоро мы начнём сдавать в аренду наши минималистичные инстансы no.de (хостинга с поддержкой Node) и разрабатывать на заказ различные модули и дополнения для Node.

Под катом описание изменений в выпущенных вчера версиях Node.js v0.2.5 и v0.3.1.
Читать дальше →

Node.js v0.2.4 и ожидаемые улучшения в ветке v0.3.x

Время на прочтение2 мин
Охват и читатели1.6K
Прошедшие выходные могут похвастаться двумя релизами Node.js: очередной минорной версией в ветке v0.2.x и официальным релизом ветки v0.3.x.
И пусть разрабатываемая ветка всё ещё отмечена как «нестабильная», в ней ожидаются существенные улучшения производительности, переносимости и добавление новых возможностей, о которых стоит знать уже сейчас. Тем более, что эта версия уже вполне работоспособная.
Также в конце топика бонус в виде ссылок на репозитории пакетов Node.js v0.2.x и NPM (Node.js package manager).
Читать дальше →

«Spirit»: Node.js MVC Framework

Время на прочтение13 мин
Охват и читатели8.3K

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

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

Читать дальше →

Ближайшие события

node.js сокращатель ссылок

Время на прочтение6 мин
Охват и читатели8.5K

Привет, Хабр! В этой статье я пошагово рассмотрю создание простого веб-приложения — сокращателя ссылок на node.js, используя mysql-libmysqlclient, MooTools на сервере и jQuery на клиенте. Статья предполагает, что читатель уже прошёл упражнение «Hello world» и разобрался в самых основах node.js.
Читать дальше →

Node-mysql-libmysqlclient v1.0.0

Время на прочтение2 мин
Охват и читатели1.6K
Надеюсь я не надоел вам своими анонсами, но этот того стоит, так как с настоящего момента можно считать node-mysql-libmysqlclient стабильным модулем. Node-mysql-libmysqlclient добавляет поддержку работы с MySQL для Node.js, обеспечивает синхронное и асинхронное выполнение запросов к БД и имеющий API, близкое к API аналогичных коннекторов для PHP/Perl/Ruby и т.д. Все функции протестированы на ошибки и утечки памяти, если их использовать в соответствии с примерами. Имевший место крах в функции fetchAll() исправлен. По сравнению с ранее анонсированной версией стоит отдельно отметить появление примеров и документации по API.

Версия 1.0.0 и несколько комментариев по поводу Nodelint, Nodeunit и Dox.

Understanding node.js

Время на прочтение4 мин
Охват и читатели10K
Node.js обычно вызывал у людей, которым я о нём рассказывал, две различные реакции. В основном они воспринимали его «как есть», однако многие были сбиты с толку.

Если вы относитесь ко второй группе, я попробую объяснить, что же такое Node.js:
  • Это инструмент командной строки. Вы скачиваете архив, компилируете и устанавливаете его.
  • Это позволит вам выполнять программы на JavaScript, набрав 'node my_app.js' в терминале.
  • JavaScript выполняется движком V8 (тем самым, благодаря которому так быстро работает Google Chrome).
  • Node.js предоставляет API для доступа к сети и файловой системе из JavaScript.
Вам хочется чего-то большего? Тогда прошу заглянуть под кат и продолжить чтение

Node.JS — формируем результирующий документ, используя другие HTTP-источники

Время на прочтение13 мин
Охват и читатели4.7K
Часто сервера на Node.JS используются как сервисы-агрегаторы, получающие динамические данные с других HTTP-источников и формирующие на основе этих данных агрегированный ответ.

Для обработки полученных данных удобно использовать внешние процессы, обрабатывающие исходный набор файлов (например, утилиты ImageMagick или ffmpeg).

Рассмотрим это на примере HTTP-сервера, выполняющего роль backend для сервера nginx, и формирующего CSS-спрайты для набора изображений.
Читать дальше →

Поддержка MySQL в Node.js: node-mysql-libmysqlclient

Время на прочтение4 мин
Охват и читатели16K
Я довольно долго откладывал этот анонс, однако сейчас настало его время.

Встречайте: node-mysql-libmysqlclient v0.0.7, коннектор к MySQL для Node.js, поддерживающий синхронное и асинхронное выполнение запросов к БД и имеющий API, близкое к API аналогичных коннекторов для PHP/Perl/Ruby etc.

Читать об истории создания и возможностях последней версии коннектора.

Храните ваши клятвы; Отношения с Node

Время на прочтение2 мин
Охват и читатели1.3K
Клятвы могут быть прекрасны. Алексис Селлир, сыскавший славу за разработку «LESS» (и «less.js»), начинает становиться звездой Open Source, выпустив в свет Vows, — каркас для разработки на Node.JS, управляемой асинхронным поведением.

image
Читать дальше →

Node.JS: Пример HTTP-сервера в режиме prefork с использованием Web Workers

Время на прочтение2 мин
Охват и читатели8.6K
Как обещал ранее, я публикую исходный код, демонстрирующий, как построить HTTP-сервер в режиме prefork, используя Web Workers и новый API net.Server.listenFD(). Я надеюсь, что этот код будет хорошим примером того, как легко нагрузить несколько ядер сервера, комбинируя пересылку файловых дескрипторов и Web Workers.

Читать дальше →