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