Node.js

Transkrypt

Node.js
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
Temat projektu inżynierskiego:
Narzędzie do tworzenia stron
WWW bez znajomości HTML
metodą przeciągnij i upuść w
oparciu o szablony
Łukasz Przywarty 171018
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ń (event callback)
9/16
Wielowątkowość z node.js
• Jeden node.js – jeden proces.
• Rozwiązanie: wiele instancji serwera node.js
komunikujących się poprzez współdzielone gniazdko
w systemie operacyjnym (200 linii kodu JavaScript)
10/16
Prosty serwer HTTP
var sys = require(“sys”),
http = require(“http”),
url = require(“url”),
path = require(“path”),
fs = require(“fs”);
http.createServer(function(request, response) {
var uri = url.parse(request.url).pathname;
var filename = 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 running at 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, relacje
z 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 biblioteki
w konkretnym języku.
15/16
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

Podobne dokumenty