EKON 2017: Node.js - Vielseitig und Schlagkräftig

EKON 2017: Node.js - Vielseitig und Schlagkräftig

Slides zu meinem Vortrag am 24.10.2017 auf der EKON 2017 zu Node.js

Ebeb5d8fd081058ba8df73d378bf83d7?s=128

Sebastian P.R. Gingter

October 24, 2017
Tweet

Transcript

  1. Node.js – Vielseitig und Schlagkräftig EKON 21 Sebastian Gingter @PhoenixHawk

    | sebastian.gingter@thinktecture.com Software Architect
  2. Kuck mal, wer da spricht Sebastian Gingter Software Architect &

    Erklärbär bei der Thinktecture AG E-Mail: sebastian.gingter@thinktecture.com Twitter: @PhoenixHawk Blog: https://gingter.org Delphi-PRAXiS: Phoenix Node.js - Vielseitig und Schlagkräftig EKON 2017
  3. Node.js - Vielseitig und Schlagkräftig EKON 2017

  4. Node.js • Vorstellung • Theorie • Praxis Node.js - Vielseitig

    und Schlagkräftig EKON 2017 Unser Thema
  5. Was ist es? • REPL für JavaScript • (Read-eval-print-loop) •

    Laufzeitumgebung für JavaScript • Googles V8 Engine • Experimentell: Microsofts ChakraCore Engine (Edge) • Software-Plattform, Framework & Ecosystem • Mit Hilfe von npm Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  6. Woher kommt es? • In 2009 von Ryan Dahl gestartet

    • Hat durch das Arbeiten an Nginx-Modulen den Vorteil von non-blocking I/O schätzen gelernt • Node.js primär bei Joyent entwickelt (aber aus Deutschland heraus) • Bis ca. 2012 aktiv im Projekt • Open source und unter der MIT Lizenz • https://github.com/nodejs/node Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js – Theorie
  7. Und was kann es? • JavaScript ausführen, ohne Browser •

    Asynchron und Event-getrieben • Single-Threaded (mehr oder weniger) • Daher geringer Memory-Footprint • Massiv weniger Thread-Contextwechsel • Durch (native) Module mit dem OS interagieren Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  8. Was kann es nicht? • Sehr CPU-Intensive Aufgaben • Da

    sie den einen Thread zu lange belegen Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  9. Wirklich Single-threaded? • Die Main-Loop ist immer nur ein Thread

    • Es existiert ein (unsichtbarer) Thread-Pool im Hintergrund • Blocking I/O Operationen auf dem Betriebssystem werden durch diese Threads ausgeführt • Ergebnisse der synchronen Operationen werden durch die Threadpool-Threads an den einzelnen Main-Thread als ein Event zurück gegeben Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js – Wie funktioniert es?
  10. Interne Architektur Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js

    – Wie funktioniert es? Node.js API Node.js Bindings C / C++ Addons V8 LibUv c-ares http parser OpenSSL zlib
  11. Arbeitsweise Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js –

    Wie funktioniert es? Anwendungs-Code (Javascript) Node.js Bindings (Node API) V8 (Javascript Engine) LibUv (Asynchrones I/O) OS Operation Event Queue Worker Threads Event Loop Blocking operation Execute Callback
  12. Die eingebaute API • process & os • events •

    path & fs • streams & buffers • dns & url • http(s) • crypto & zip Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  13. Was ist npm? • Package registry: npmjs.org • Package manager:

    npm • Und Tool um Projekte / Pakete auszuführen Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  14. Was sollte ich sonst noch kennen? • Dokumentation • https://nodejs.org/api/

    • NVM • Node Version Manager • Für *NIX & Mac, alternative Version (leicht anders) für Windows Node.js - Vielseitig und Schlagkräftig EKON 2017 Node.js
  15. Konkrete Anwendungsfälle von Node.js • REPL • Server-Plattform • Aber

    bitte! nicht! ohne richtigen Webserver davor betreiben (Node hinter IIS, Apache, Nginx) Node.js - Vielseitig und Schlagkräftig EKON 2017 Und was bringt mir das?
  16. Konkrete Anwendungsfälle von Node.js • Entwicklungs-Tooling • Globale Helferlein (z.B.

    rimraf) • Lokaler Dev-Webserver (z.B. lite-server) • Build-Tool (Grunt / Gulp) • Dokumentation (Gitbook) • Desktop-Anwendungen (Electron) • Cloud-Funktionen • Azure Functions • Amazon Lambdas • Alexa Skills… Node.js - Vielseitig und Schlagkräftig EKON 2017 Und was bringt mir das?
  17. Restify Pipeline und Middlewares: req, res, next() Node.js - Vielseitig

    und Schlagkräftig EKON 2017 Node.js auf dem Server Middleware Middleware Middleware req res Logging Authentication … // Logic Log(req); next(); // more // logic // Logic Auth(req); next(); // more // logic // Logic res = …; // more // logic • npm Paket für Web APIs • Client & Server Komponenten • Routing • Plugins verfügbar • Weit verbreitet • Middlewares
  18. • Adapter / Connectoren für vielen Dankenbanken • NoSQL •

    Mongo, CouchDB, … • Relationale Datenbanken • MS SQL, PostgreSQL, MySQL, SQLite, … • TypeORM als ein Typsicheres ORM, aber Achtung: Alpha-Software • Mehrere Datenbanken, Transaktionen, Migrationen, Query API • Alternative: Sequelize • Schon reifer, aber gewöhnungsbedürftige API Node.js - Vielseitig und Schlagkräftig EKON 2017 Datenbanken in Node.js
  19. Warum TypeScript? • Von Anders Hejlsberg entworfen • C# •

    Delphi • JavaScript + Typen • Typen sind rein optional, bieten aber Meta-Informationen für Tools • Statische Code Analyse • Refactorings • Linting • IntelliSense / Code Completion Node.js - Vielseitig und Schlagkräftig EKON 2017 TypeScript in Node.js
  20. Mit Open Source & kostenlos geht’s los… • nvm –

    Node Version Manager • macOS / Linux: https://github.com/creationix/nvm#installation • Windows: https://github.com/coreybutler/nvm-windows#node-version-manager-nvm-for-windows • Visual Studio Code • Alle Plattformen: https://code.visualstudio.com/ • Optional: Vernünftige Shell • macOS: bash oder (oh-my-)zsh • Windows: Cmder Node.js - Vielseitig und Schlagkräftig EKON 2017 Wie starte ich bzw. was brauche ich?
  21. Mit Open Source & kostenlos geht’s los… Auf der Kommandozeile:

    Node.js - Vielseitig und Schlagkräftig EKON 2017 Wie starte ich bzw. was brauche ich? > nvm install 8.2.1 > nvm use 8.2.1 > md demo > cd demo > npm init > code .
  22. Demo Node.js - Vielseitig und Schlagkräftig EKON 2017 Etwas Code…

  23. • Node.js: https://nodejs.org • NVM for Windows: https://github.com/coreybutler/nvm-windows • Visual

    Studio Code: https://code.visualstudio.com/ • Thinktecture: https://thinktecture.com/ • Repo zu dieser Session: https://github.com/thinktecture/ekon-2017-nodejs • Slides zu dieser Session: https://speakerdeck.com/phoenixhawk/ekon21-node-dot-js Node.js - Vielseitig und Schlagkräftig EKON 2017 Ressourcen / Links
  24. Fragen? Antworten! Node.js - Vielseitig und Schlagkräftig EKON 2017 Vielen

    Dank