#html5camp JavaScript на сервере – node.js на Windows Гайдар Руководитель направления веб-технологий, Microsoft
Содержание JavaScript на сервере Философия node.js Реализация веб-сервера на node.js Разработка для node.js на Windows Модули node.js Отладка node.js приложений
#html5camp Риторический вопрос JavaScript на сервере… зачем?
JavaScript популярен Низкий порог входа Сложность пропорциональна навыкам Много client-side разработчиков Множество доступных библиотек
#html5camp Философия node.js В чем сила, брат?..
Философия node.js Масштабируемые веб-приложения Отсутствие блокирующих вызовов Простота развертывания и поддержки
Блокирующий код var data = file.read('filename'); // блокировка на время чтения processFileData(data);
Отсутствие блокировки file.read('filename', // функция с обратным вызовом function(data) { processFileData(data); } );
Реализация node.js Один основной рабочий поток JavaScript движок Google V8 Неблокирующие функции стандартных библиотек Разработка на основе callback-функций Модульная расширяемость
#html5camp Реализация веб-сервера HTTP
Веб-сервер var http = require('http'); http.createServer(function (req, res){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8080, " ");
Tcp-сервер var net = require('net'); var server = net.createServer(function (c) { console.log('connected'); c.on('end', function (){ console.log('disconnected'); }); c.write('hello\r\n'); c.pipe(c); }); server.listen(8888);
#html5camp Сервер на node.js HTTP и TCP
#html5camp Инструменты node.js Разработка на Windows
Инструменты node.js Любой текстовый редактор Visual Studio "Родная" поддержка в WebMatrix WebMatrix (microsoft.com/web/webmatrix) Node.js (nodejs.org/#download) iisnode модуль (go.microsoft.com/?linkid= ) Шаблоны WebMatrix (tinyurl.com/cxpeufg)
#html5camp node.js и WebMatrix И Visual Studio!
#html5camp Модули node.js
Реализация модуля // файл mymodule.js exports.helloWorld = function() { return 'Hello World!'; }; // файл app.js var mymod = require('./mymodule'); console.log(mymod.helloWorld());
Модули для node.js github.com/joyent/node/wiki/modules
Установка модулей - NPM Командный файл npm.cmd Необходимы права администратора Установка модулей npm install express Список установленных модулей npm ls
#html5camp Установка модулей github.com/joyent/node/wiki/modules
Отладка node.js Встроенный отладчик V8 node.exe debug app.js Точка останова – инструкция debugger; Команды run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb), watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
#html5camp Отладка debug
#html5camp Сценарии использования
Приложения "реального времени" Онлайн игры Сервисы обмена сообщениями Чаты "Умный" прокси для статики Отсутствие длительных вычислений Разработчики - фанаты JavaScript
#html5camp Пример приложения Чат на node.js
#html5camp JavaScript на сервере – node.js на Windows Гайдар Руководитель направления веб-технологий, Microsoft