Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen...

42
Node.js Einführung Manuel Hart Seite 1

Transcript of Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen...

Page 1: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung

Manuel Hart

Seite 1

Page 2: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 2

Inhalt

1. Node.js - Grundlagen

2. Serverseitiges JavaScript

3. Express.js

4. Websockets

5. Kleines Projekt

Page 3: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 3

1. Node.js Grundlagen

„Node.js is a JavaScript runtime [environment] built

on Chrome's V8 JavaScript engine.“ [nodejs.org]

Also eine Software die JavaScript Code Verstehen

und Ausführen kann.

Page 4: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 4

Orientierung

Source: F.J.Behr

Page 5: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 5

1. Node.js GrundlagenLizenz

Node.js ist Open Source und unter der MIT-Lizenz

(Massachusetts Institute of Technology) lizensiert.

(https://raw.githubusercontent.com/nodejs/node/master/LICENSE)

https://github.com/nodejs/node

https://nodejs.org

Page 6: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 6

1. Node.js GrundlagenHistorisches

Mai 2009Ryan Dahl sponsored by Joyent

io.js

Node.js

Dez. 2014 Sep. 2015

4.0 7.1LTS 6.9.1

Dez. 20163.3

0.12

Page 7: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 7

1. Node.js GrundlagenJavaScript

JavaScript ist eine objektorientierte Skriptsprache die von allen modernen Web-Browsern verstanden und ausgeführt werden kann.

Standardisierter Sprachkern: ECMAScript

JavaScriptEngine

(Im Browser eingebaut)

Bytecode

Page 8: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 8

1. Node.js GrundlagenJavaScript

<div id="demo"></div>

<script>var demo = document.getElementById("demo");

</script>

HTML DOM Element

Get the DOM ElementjavaScript

Page 9: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 9

1. Node.js GrundlagenECMAScript

Standardisiert als ECMA-262 und ISO-IEC 16262

Ist der Sprachkern von JavaScript.

ECMAScriptFirst edition1997

…..ECMAScript4Abandoned

ECMAScript 52009

ECMAScript 62015

ECMAScript 7Juni 2016

Implementation ECMAScript edition

V8 (Google Chrome, Node.js) 6

JavaScriptCore (Nitro) Safari 6

Jscript (InternetExplorer) 5.1

Page 10: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 10

1. Node.js GrundlagenJavaScript

JavaScript ermöglicht Ereignis basierte Programmierung.

synchron

asynchron

functionsaufruf(wert1, 'wert2', function(data){

/*do something with the data.*/var t2 = 'Ich bin als naechstes dran. [t2]';console.log(t2);

});

var t1 = 'Ich bin als naechstes dran. [t1]';console.log(t1);

Page 11: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 11

1. Node.js GrundlagenVergleich mit php

https://www.sitepoint.com/sitepoint-smackdown-php-vs-node-js/

10 rounds competition

PHP• Typisches Client-Server Modell• Routing wird vom Webserver gesteuert• Blockierend• Sehr weit verbreitet

Node.js • Sockets, HTTP,…• Routing wird von der Node Anwendung

gesteuert• Nicht Blockierend

Page 12: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 12

1. Node.js GrundlagenInstallation

1. Download von https://nodejs.org/en/download/

• Windows Installer• Macintosh Installer• Linux Binaries (x86/x64 & ARM)

2. Installieren

3. (PATH Variable setzen)

Page 13: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 13

1. Node.js GrundlagenBuild-in Module

node.js ist ideal für Netzwerkanwendungen.

Integrierte Module für:

• File System• HTTP(S)• OS• Path• URL• …

Page 14: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 14

1. Node.js Grundlagennpm

Weitere externe Module können über npm (node package

manager) geladen werden. (Artistic License 2.0)

~ 250.000 open source packages

--g installiert Global

npm install packagename –-save

Page 15: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 15

1. Node.js Grundlagennpm – package.json

Enthält Informationen über das node.js Programm und

die erforderlichen Abhängigkeiten.

Page 16: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 16

1. Node.js GrundlagenErweiterungen

• Express.js / Socket.io

• moment.js

• bower

• jsdoc

• nodemon

• Yeoman

• proj4js

Page 17: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 17

2. Serverseitiges JavaScriptÜbersicht

• Einfachste Node.js Anwendung

• Was wollen wir eigentlich?

• Node.js Server Anwendung

• Debugging

Page 18: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 18

2. Serverseitiges JavaScriptStarten des Servers

Node.js wird über die Kommandozeile ausgeführt.

1. Schritt Prüfen ob Node.js korrekt installiert wurden.

2. Schritt Prüfen ob npm korrekt installiert wurden.

node -v

npm -v

Page 19: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 19

2. Serverseitiges JavaScriptDie erste Applikation

Erste Node.js Applikation erstellen.

Speichern als app.js.

//Dies ist unsere erste Applikation (Programm)console.log('running');

Page 20: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 20

2. Serverseitiges JavaScriptDie erste Applikation

Erste Node.js Applikation starten.

Kommandozeile:

node app.js

start

ausgeführt

stop

Page 21: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 21

2. Serverseitiges JavaScriptWas wollen wir eigentlich?

• Daten bereitstellen• Website bereitstellen• Dienste(Services) bereitstellen• Web-Applikation bereitstellen

Anwendungsfall Software (Beispiel)

Daten bereitstellen Apache (\htdocs) / php (Datenbank)

Website bereitstellen Apache (\htdocs)

Dienste(Services) bereitstellen

Tomcat Java Servlet / php

Page 22: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Client

Node.js Einführung | Manuel Hart

Seite 22

2. Serverseitiges JavaScriptServer Erreichbarkeit

Server

Client

Network, Cloud

Client

IP-Adresse:Port

Page 23: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 23

2. Serverseitiges JavaScriptEin Server der „weiterläuft“.

Server soll auf Anfragen reagieren können.

JavaScript – Ereignis gesteuert.

server.listen(3001, function(){

console.log("Server listening on: http://localhost:„ + port);

});

Page 24: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 24

2. Serverseitiges JavaScriptErste Server-Applikation

Server-Port

CreateServer

StartServer

RequestFunktion

Page 25: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 25

2. Serverseitiges JavaScriptZugriff auf Server

http://localhost:3001/Hallo

Web-Browser:

Ausgabe (Browser):

Request URL: http://localhost:3001/Hallo

Page 26: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 26

2. Serverseitiges JavaScriptRequest auf Clientseite

Web-Browser Debugging(F12):

Page 27: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 27

2. Serverseitiges JavaScriptDebugging

Fehler im Code finden und beheben.

Page 28: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 28

2. Serverseitiges JavaScriptDebugging

node debug app.js

next

cont debugger;

help

Page 29: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 29

2. Serverseitiges JavaScriptDebugging

node –-inspect app.js

Page 30: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 30

2. Serverseitiges JavaScriptErweiterungen

var server = require('server');server.start(3001, function(request, response){…});

Page 31: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 31

3. Express.jsDas Framework - Übersicht

„Schnelles, offenes, unkompliziertes Web-Framework

für Node.js“ http://expressjs.com/de/ (MIT Lizenz)

1. Einfacher Server

2. HTTP Methods

3. Router

4. Middlewares

5. Statische Daten und Ordner

Page 32: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 32

3. Express.jsNachfolger?

Page 33: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 33

3. Express.jsEinfacher Server

Page 34: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 34

3. Express.jsHTTP Methods

2. HTTP GET und POST + Routing HTTP-GET

HTTP-POST

Page 35: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 35

3. Express.jsRouter

Router Objekte

URL Einstellung

Route1/

Route2/

Route2/Anfrage

Page 36: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 36

3. Express.jsMiddlewares

GET Request

MiddlewareFür Alle

MiddlewareFür „/“

Page 37: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 37

3. Express.jsStatische Daten

Um komplette Verzeichnisse bereitzustellen.

Page 38: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 38

4. Websockets

Bi-direktionale Web-Verbindung

Der Server kann dem Client Nachrichten senden sobald eine

Socket-Verbindung besteht.

Framework: Socket.io

Page 39: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 39

4. Websocketssocket.io

Web-Socket Framework (MIT Lizenz)

Bestehend aus eine Server Komponente

und einer Client Komponente.

Page 40: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 40

4. Websocketssocket.io - Beispiel

Auf Server Seite

Page 41: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 41

4. Websocketssocket.io - Beispiel

Auf Client Seite

Page 42: Node.js Einführung - fossgis.de · Node.js Einführung | Manuel Hart Seite 5 1. Node.js Grundlagen Lizenz Node.js ist Open Source und unter der MIT-Lizenz (Massachusetts Institute

Node.js Einführung | Manuel Hart

Seite 42

5. Kleines Projekt