Upload
gaidar-magdanurov
View
3.103
Download
8
Embed Size (px)
DESCRIPTION
Презентация с HTML5Camp.
Citation preview
#html5camp
JavaScript на сервере – node.js на Windows
Гайдар Магдануров
@gaidar
Руководитель направления веб-технологий, Microsoft
Содержание
JavaScript на сервереФилософия node.jsРеализация веб-сервера на node.jsРазработка для node.js на WindowsМодули node.jsОтладка node.js приложений
#html5camp
Риторический вопросJavaScript на сервере… зачем?
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, "127.0.0.1");
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=9784329)
— Шаблоны WebMatrix (tinyurl.com/cxpeufg)
#html5camp
node.js и WebMatrix
И Visual Studio!
#html5camp
Модули node.js
Реализация модуля
// файл mymodule.jsexports.helloWorld = function() { return 'Hello World!';};
// файл app.jsvar 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
Встроенный отладчик V8node.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
Гайдар Магдануров
@gaidar
Руководитель направления веб-технологий, Microsoft