6. Посторонись, пресловутый PHP! Долой Java!25-26.05 Харьков
Старичок Perl, тебе так вообще давно пора на пенсию.
И как же вы уже достали, попсовые Ruby и Python!
(c) xakep
http://www.xakep.ru/post/53583/ @dmytromindra #agilebc
10. 25-26.05 Харьков
HELLO WORLD
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
@dmytromindra #agilebc
11. 25-26.05 Харьков
ПОЧЕМУ NODE.JS?
Цель Node.JS - Event Driven
обеспечение
простого способа Все асинхронно
создания Работает на Google V8
масштабируемых Официально поддерживается
сетевых программ. компанией Microsoft
Хорошо параллелится (при работе
с вводом/выводом)
@dmytromindra #agilebc
13. 25-26.05 Харьков
СЛАБЫЕ СТОРОНЫ
У Node.JS есть Плохо справляется с
слабые стороны, о тяжелыми вычислительными
которых надо задачами
помнить. Использует только одно ядро
процессора (есть утилита
Cluster)
@dmytromindra #agilebc
14. 25-26.05 Харьков
Спагетти код
var fs = require('fs')
, path = require('path')
, file1 = "file1.txt“
, file2 = "file2.txt";
// Check if file1 exists, write to file2,
// then display new file2 contents.
path.exists(file1, function (exists) {
if (!exists) throw new Error("No file!");
fs.readFile(file1, function (err, data) {
if (err) throw err; fs.writeFile(file2, data, function (err) {
if (err) throw err; fs.readFile(file2, function (err, data) {
if (err) throw err; console.log(data.toString());
...
});
});
});
});
@dmytromindra #agilebc
20. 25-26.05 Харьков
Что в меню ?
JavaScript везде. И Express (сервер)
на сервере, и на Jade (сервер)
клиенте. Некоторые Mustache (сервер , клиент)
библиотеки Sammy.js (клиент)
используются jQuery (клиент)
одновременно и на
сервере и на
клиенте.
@dmytromindra #agilebc
21. 25-26.05 Харьков
ПРОСТОЕ WEB ПРИЛОЖЕНИЕ
Постараемся построить простое
веб приложение при помощи
Express, Jade и пары заготовок.
@dmytromindra #agilebc
22. 25-26.05 Харьков
SPA* – приложение-страница
Приложение, состоящее из одной
веб страницы и обилия скриптов.
Асинхронно общается с сервером.
Не перегружается.
*http://en.wikipedia.org/wiki/Single_Page_Application
@dmytromindra #agilebc
24. 25-26.05 Харьков
WebSockets
Постоянное подключение к
серверу.
Часть стандарта HTML5
Предназначен для
построения Real-Time
приложений.
http://tools.ietf.org/html/rfc6455 @dmytromindra #agilebc
25. 25-26.05 Харьков
Что такое SOCKET.IO?
Больше, чем просто Виды транспорта:
WebSockets. WebSocket
Имеет Flash Socket
альтернативные виды
транспорта.
AJAX long-polling
AJAX multipart streaming
Поставляется с
клиентской IFrame
библиотектой. JSONP polling
@dmytromindra #agilebc
26. 25-26.05 Харьков
Время действовать
Напишем В нашем случае этим
приложение, работа приложением будет обмен
ющее в реальном мгновенными сообщениями.
времени.
@dmytromindra #agilebc
28. 25-26.05 Харьков
Мои аргументы:
1. JavaScript невероятно популярен. На рынке много
программистов.
2. JavaScript будет единым языком и на сервере и
на клиенте. Никакого дублирования кода.
3. Асинхронная событийная модель.
@dmytromindra #agilebc
29. 25-26.05 Харьков
Внеклассное чтение
Как убедить босса?
http://nodeguide.com/convincing_the_boss.html
Выбор правильного стиля
http://stackoverflow.com/questions/5495984/coding-style-guide-for-node-js-apps
Что такое Node?
http://stackoverflow.com/questions/1884724/what-is-node-js
@dmytromindra #agilebc
30. 25-26.05 Харьков
Мои исходники доступны по ссылке:
https://github.com/DmytroMindra/NodeJS-AgileBaseCamp-2012
Это стоит попробовать!
СПАСИБО !
Dmytro.Mindra@gmail.com
@dmytromindra #agilebc