Bardzo szybkie wprowadzenie do Node.js

Transkrypt

Bardzo szybkie wprowadzenie do Node.js
Bardzo szybkie wprowadzenie do Node.js
Technologie zarządzania treścią
dr inż. Robert Perliński
[email protected]
Politechnika Częstochowska
Instytut Informatyki Teoretycznej i Stosowanej
Bardzo szybkie wprowadzenie do Node.js
4 października 2016
1/16
Bazy NoSQL
Czerty bazy NoSQL:
Redis - baza klucz-wartość,
MongoDB - baza dokumentów,
Cassandra - baza rodziny kolumn,
neo4j - baza grafowa.
Bardzo szybkie wprowadzenie do Node.js
2/16
MEAN Stack
Bardzo szybkie wprowadzenie do Node.js
3/16
Node.js
https://nodejs.org/en/
platforma działająca po stronie serwera na bazie silnika Google Chrome V8,
zaprojektowany przez Ryana Dahl w 2009 roku,
ma służyć prostemu tworzeniu szybkich i skalowalnych aplikacji
internetowych,
open source,
całkowicie darmowe,
aplikacje napisane w Node.js działają na OS X, MS Windows i Linux’ie,
używane przez tysiące programistów na całym świecie.
/* Program Hello World w Node.js */
console.log("Hello World!");
Bardzo szybkie wprowadzenie do Node.js
4/16
Pełna lista modułów Node.js
Dokumentacja Node.js, v5.10.0
Assertion Testing
Child Processes
Console
DNS
Events
HTTP
Net
Process
Readline
String Decoder
TTY
Utilities
Bardzo szybkie wprowadzenie do Node.js
Buffer
Cluster
Crypto
Domain
File System
HTTPS
OS
Punycode
REPL
Timers
UDP/Datagram
V8
C/C++ Addons
Command Line Options
Debugger
Errors
Globals
Modules
Path
Query Strings
Stream
TLS/SSL
URL
VM
ZLIB
5/16
Użyteczne moduły w Node.js
Najbardziej powszechnie i często używane moduły Node.js:
moduł os (Operating System) - podstawowe infomacje związane z systemem operacyjnym
(pamięć, procesor, ...)
moduł path - przechowywanie i przetwarzanie ścieżek plików i katalogów,
moduł net - pozwala na tworzenie zarówno serwerów jak i klientów, łączenie się,
przesyłanie informacji w postaci strumieniowej,
moduł dns - pozwala na obsługę DNS (sprawdanie adresów, różne typy adresów DNS,
kody błędów),
moduł domain - pozwala na wychwytywanie nieobsłużonych błędów.
var os = require("os");
console.log('endianness : ' + os.endianness());
console.log('type : ' + os.type());
console.log('platform : ' + os.platform());
console.log('total memory : ' + os.totalmem() + " bytes.");
console.log('free memory : ' + os.freemem() + " bytes.");
endianness : LE
type : Linux
platform : linux
total memory : 8110882816 bytes.
free memory : 4815204352 bytes.
Bardzo szybkie wprowadzenie do Node.js
6/16
REPL Terminal
Read Eval Print Loop (REPL) - środowisko komputerowe, np. Linux Shell, w którym
polecenia są automatycznie przetwarzane i wyniki są wyświetlane w trybi interakcyjnym.
Node.js też ma takie środowisko:
Read - wczytuje dane od użytkownika, parsuje do struktur JavaScript i
przechowuje w pamięci,
Eval - bierze wprowadzone dane i je oblicza, wyznacza wartości,
Print - wyświetla wyniki,
Loop - trzy powyższe przetwarza w pęltli aż do dwukrotnego nacieśnięcia Ctrl+c.
$ node
> 1 + ( 2 * 3 ) - 4
3
> a = 12 // zachowane w zmiennej i wyswietlone
12
> var b = 12 // zachowane w zmiennej ale nie wyswietlone (var)
undefined
> (a+b)*2
48
> console.log(a+b)
24
undefined
Bardzo szybkie wprowadzenie do Node.js
7/16
REPL Terminal - wiele linii i
mamy możliwość pisania wyrażeń składających się z wielu linii,
symbol podkreślenia ( ) zwraca ostatni wynik:
> x = 5
5
> while(x>0) {
... --x;
... console.log(x);
... }
4
3
2
1
0
undefined
> x+8
8
> _
8
Bardzo szybkie wprowadzenie do Node.js
8/16
REPL Terminal - polecenia
Ctrl+c - przerywanie aktualnego polecenia,
Ctrl+c dwa razy - zamykanie Node REPL,
Ctrl+d - zamykanie Node REPL,
Klawisze Góra/Dół - historia polecenie, potrzednie/następne polecenie,
klawisz Tab - lista aktualnych komend,
.help - lista wszystkich komend,
.break albo .clear - wyjście z wieloliniowego wyrażenia,
.save nazwaPliku - zapis sesji Node REPL do pliku,
.load nazwaPliku - wczytanie zawartości pliku do bieżącej sesji.
Bardzo szybkie wprowadzenie do Node.js
9/16
npm
npm - menadżer pakietów dla node.js (dla JavaScript).
zbiór pakietów/modułów dla Node.js dostępnych online:
https://www.npmjs.com/
narzędzie do instalacji pakietów Node.js, zarządza wersjami i
zależnościami pakietów Node.js
dokumnetacja - https://docs.npmjs.com/
najczęściej instalowane pakiety: npm, express, less, browserify, pm2, ...
$
$
$
$
npm --version
sudo npm install npm -g
npm install <Nazwa Modułu>
npm install express
Bardzo szybkie wprowadzenie do Node.js
10/16
Tworzenie pakietu
Tworzenie pakietu: npm init
polecenie pyta o najważniejsze dane pakietu (proponując domyślne wartości),
tworzony jest plik package.json, np.:
{
"name": "rest",
"version": "1.0.0",
"description": "hello world restfull api",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"restfull"
],
"author": "rperlinski",
"license": "ISC"
}
Bardzo szybkie wprowadzenie do Node.js
11/16
Tworzenie pakietu, instalacja
Instalacja pakietów
mkdir rest; cd rest
npm init - inicjalizacja, tworzy plik package.json
npm install express, albo lepiej
npm install --save express - dodaje zależności do pliku
package.json:
...
"license": "ISC",
"dependencies": {
"express": "^4.13.4"
}
}
Bardzo szybkie wprowadzenie do Node.js
12/16
Wywołania zwrotne - odczyt z pliku, przykład
wywołanie synchroniczne
var fs = require("fs");
var data = fs.readFileSync('dane.txt');
console.log(data.toString());
console.log("Koniec programu");
Litwo, Ojczyzno moja! ty jesteś jak zdrowie;
Ile cię trzeba cenić, ten tylko się dowie, ...
Koniec programu
wywołanie asynchroniczne
var fs = require("fs");
fs.readFile('dane.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("Koniec programu");
Koniec programu
Litwo, Ojczyzno moja! ty jesteś jak zdrowie;
Ile cię trzeba cenić, ten tylko się dowie, ...
Bardzo szybkie wprowadzenie do Node.js
13/16
Pierwszy projekt w Node.js
Większość aplikacji Node.js składa się z 3 części:
import wymaganych modułów - używa się dyrektywy require,
utworzenie serwera - serwer będzie oczekiwał na żadania klientów i zwracał
odpowiedzi,
odczytywanie żądań i zwracanie odpowiedzi - podstawowe działanie serwera.
var http = require("http");
var server = http.createServer(function (request, response) {
// Wysyłanie nagłówków protokołu HTTP
// Status HTTP: 200 : OK, Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// Wysyłanie ciała odpowiedzi, niezależnie od rodzaju żądania
response.end('Pierwszy projekt w Node.js\n');
});
server.listen(5000);
console.log('Server działa na http://127.0.0.1:5000/');
Bardzo szybkie wprowadzenie do Node.js
14/16
Express
http://expressjs.com/
Express to szybki, elastyczny (nie wymuszający konkretnych rozwiązań),
minimalistyczny szablon aplikacji internetowych i mobilnych dla Node.js.
Instalacja:
$ npm install express --save
Bardzo szybkie wprowadzenie do Node.js
15/16
Express, Hello World
hello.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World');
})
var server = app.listen(5000, function () {
var host = server.address().address
var port = server.address().port
console.log("Przykładowa aplikacja nasłuchuje na http://%s:%s", host, port)
})
Wynik:
$ node hello.js
Otwieramy w przeglądarce: http://localhost:5000/
Przykładowa aplikacja nasłuchuje na http://0.0.0.0:5000
Express używa funkcji zwrotnych z argumentami req i res (obiekty request
i response), które zawierają bardzo dużo informacji i żądaniu i odpowiedzi.
Bardzo szybkie wprowadzenie do Node.js
16/16

Podobne dokumenty