1 Node.js – Serverside JavascriptMaciej Jastrzębski Kraków, 8 października 2011 nazwisko
2 Czym jest Node.js Into the code Asynchroniczne I/O i Event Driven server Wydajność?! Node.js vs obecne rozwiązania
3 PaaS SaaS IaaS Client sidecross-platform & cross-device Client side PaaS SaaS Kim jestem czym się zajmuje w kontekcie nowego onetu +Rysunek chmury +Amazon +Standardy +od 2012 – ruszamy +server brzegowy IaaS
4 PaaS SaaS IaaS Client sidecross-platform & cross-device Client side PaaS SaaS Kim jestem czym się zajmuje w kontekcie nowego onetu +Rysunek chmury +Amazon +Standardy +od 2012 – ruszamy +server brzegowy IaaS
5 Czym jest Node.js? Wprowadzenie do node.js co to jest OpensourceKiedy ruszyl projekt – 2009 Ryan Dahl Bazuje na Google v8 CommonJs Moduły
6 Czym jest Node.js V8 Wprowadzenie do node.js co to jestBazuje na Google v8 – wiecej o v8 i o wojnie silników (z czego mamy bonus w postaci predkosci) V8
7 V8 runtime (EcmaScript5) Event Driven i Asynchroniczne I/O Środowisko Node.js V8 runtime (EcmaScript5) Event Driven i Asynchroniczne I/O process zamiast window! System modułów i require (CommonJS) Zestaw modułów natywnych Wsparcie dla dodatków opartych o C/C++ Co dostajemy Brak Window!!!! – w tym DOM za to mamy process Require i moduły – idea CommonJS Moduły natywne
8 var content = fs.readFileSync('example.txt'); //asynchronicznie File system var fs = require('fs'); //synchronicznie var content = fs.readFileSync('example.txt'); //asynchronicznie fs.readFile('example.txt', function (err, data) { if (err) throw err; console.log(data); }); Przykład asynchroniczne io – filesystem Przykład modułu
9 Server var http = require('http'); var url = require('url');var status = "none"; http.createServer(function (req, res) { //ustawiamy nowy status var params = url.parse(req.url, true); if(params.hasOwnProperty('set_status')){ status = params['set_status']; } //zwracamy aktualny status res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(status); }).listen(80, " "); EventDriven IO - serverside
10 setTimeout – raz jeszcze.setTimeout(function(){ //pobierz dane z miejsca A }, 3000); //pobierz dane z miejsca B }, 8000); EventDriven IO - serverside
11 Nowy wymiar asynchroniczności Javascript.Asynchroniczność JS i środowisko backendowe Event driven programing Asynchroniczne IO Jeden wątek – podkreślić znaczenie Konkurencja Asynchroniczność ważniejsza niż kiedykolwiek - operacje blokujące - to jakby nagle w przeglądarce pojawiło się 1000 niezaleznych kursorów i wszystkie zaczeły klikać Nowy wymiar asynchroniczności Javascript.
12 Server Asynchroniczne I/O GET http://example.com/index.htmlNode.js Server Rysunek Kolejka Exec
13 Asynchroniczne I/O Node.js Server Rysunek Kolejka Exec
14 Asynchroniczne I/O Node.js Server Rysunek Kolejka Exec
15 Asynchroniczne I/O Node.js Server Rysunek Kolejka Exec
16 Asynchroniczne I/O HTTP/ OK Node.js Server Rysunek Kolejka Exec
17 Asynchroniczne I/O Node.js Server Rysunek Kolejka Exec
18 Asynchroniczne I/O HTTP/ OK Node.js Server Rysunek Kolejka Exec
19 Nowy wymiar asynchroniczności Javascript.to jakby nagle w przeglądarce pojawiło się 1000 niezaleznych kursorów i wszystkie zaczeły klikać
20 Wydajność! Wydajność – test/wykresTest – Strona z datą (apache php/ apache python/ node.js) Fibonacci (node 4sec, pypy 6sec, py 64sec, php 110sec)
21 Komercyjne zastosowanie i duże projekty.Node.js i Enterprise (krytyka) Abstrachowanie od samej składni JS i zastosowań w projektach wielo osobowych Brak kompleksowych rozwiązań jak np. dla J2EE Tylko podstawowe narzędzia do pracy z OS Średnia jakość api (subiektywne)
22 Ale… npmjs.org Ale Aktualnie w npmie mamy 4261 total packagesW tym ciekawe z perspektywy frontend JSDOM czy node-yui Dodać logotypy!!!!
23 Blog: http://it.blog.onet.pl/Zapraszamy! Blog: Blog Współpraca
24 Dziękuję za uwagę. hr