150 likes | 304 Views
Node.js – niskopoziomowe środowisko implementujące JavaScript po stronie serwera. Na podstawie: Tilkov , S., Vinoski , S., Node.js : Using JavaScript to Build High-Performance Network Programs [W:] Internet Computing , IEEE, 2010, t. 14, nr 6, s. 80-83. Łukasz Przywarty 171018
E N D
Node.js – niskopoziomowe środowisko implementujące JavaScript po stronie serwera Na podstawie: Tilkov, S., Vinoski, S., Node.js: UsingJavaScript to Build High-Performance Network Programs [W:] Internet Computing, IEEE, 2010, t. 14, nr 6, s. 80-83. Łukasz Przywarty 171018 Mariusz Kacała 171058
Ramowy plan prezentacji • Node.js - informacje wstępne • Po co programistom node.js? • Właściwości node.js • Prosty serwer HTTP • Manager pakietów npm • Wielowątkowość a node.js • Kiedy korzystać, a kiedy nie korzystać z node.js 3/16
Node.js– informacje wstępne • Data utworzenia: 2009 r. • Niskopoziomowa implementacja silnika V8 JavaScript’u po stronie serwera. • Napisany w języku C/C++ (8000 linii) oraz JavaScript (2000 linii), obsługuje programy napisane w JavaScript. 4/16
Node.js– informacje wstępne c.d. • Obsługiwany zdarzeniami. • Nieblokujące i asynchroniczne operacje I/O oraz zapytania do bazy danych • Zalety: wydajność w obsłudze zdarzeń generowanych przez dużą liczbę użytkowników, małe zużycie pamięci. • Własny manager pakietów npm; liczne frameworki. 5/16
Po co programistom node.js? • Apache i wątki - można łatwiej i wydajniej. • Zbyt skomplikowane rozwiązania: • Ruby Event Machine, • Python Twisted/Tornado, • Erlang (Facebook Chat). • Przewaga: dużo lepsza dostępność (JavaScript)i społeczność. 6/16
Sterowanie zdarzeniami • Zdarzenie zamiast wątku. • Event-loop. 7/16
Asynchroniczne operacje I/O • Nie wyjątek, a reguła. • Ważne dla programowania zdarzeniowego. • Powodują problemy. • W sytuacjach szczególnych (np. zmiana nazwy pliku) istnieją wyjątki od asynchroniczności. 8/16
JavaScript po stronie serwera • Kolejny krok w stronę kompleksowego rozwiązania (ten sam język programowania dla frontend’u i backend’u) • JavaScript w zgodzie z filozofiąnode.js – wsparcie funkcji zwrotnych zdarzeń (eventcallback) 9/16
Wielowątkowość z node.js • Jedennode.js – jeden proces. • Rozwiązanie: wiele instancji serwera node.js komunikujących się poprzez współdzielone gniazdkow systemie operacyjnym (200 linii kodu JavaScript) 10/16
Prosty serwer HTTP varsys = require(“sys”), http = require(“http”), url = require(“url”), path = require(“path”), fs = require(“fs”); http.createServer(function(request, response) { varuri = url.parse(request.url).pathname; varfilename = path.join(process.cwd(), uri); path.exists(filename, function(exists) { if(exists) { fs.readFile(filename, function(err, data) { response.writeHead(200); response.end(data); }); } else { response.writeHead(404); response.end(); } }); }).listen(8080); sys.log(“Server runningat http://localhost:8080/”); 11/16
Manager pakietów npm • Bogaty ekosystem framework’ów. • Ponad 16 300 pakietów. • Najpopularniejsze: • ExpressJs – framework dla aplikacji webowych, • Socket.io – serwer WebSocket dla node.js (aplikacje czasu rzeczywistego), • Redis – serwer ‘struktur danych’, • Coffee – język kompliowany do JavaScript. 12/16
Interesujące pakiety w npm • Nodecopter – biblioteka do sterowania modelem śmigłowca. • Noduino – framework obsługujący podstawowe podzespoły Ardunio przez sieć. 13/16
Kiedy korzystać z node.js? • Deweloper znający język JavaScript. • Aplikacje czasu rzeczywistego (np. Twitter, relacjez wydarzeń sportowych etc.). • JSON/ Rest API dla aplikacji sieciowych. • Aplikacje składające się ‘jednej podstrony' (np. Gmail). • Przesyłanie danych. 14/16
Kiedy nie korzystać z node.js? • Aplikacje korzystające z dużej ilości zasobów CPU. • Proste aplikacje typu CRUD. • Gdy istnieje potrzeba skorzystania z bibliotekiw konkretnym języku. 15/16
Node.js – niskopoziomowe środowisko implementujące JavaScript po stronie serwera Na podstawie: Tilkov, S., Vinoski, S., Node.js: UsingJavaScript to Build High-Performance Network Programs [W:] Internet Computing, IEEE, 2010, t. 14, nr 6, s. 80-83. Łukasz Przywarty 171018