Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sebastian Gingter

October 24, 2017
Tweet

More Decks by Sebastian Gingter

Other Decks in Programming

Transcript

  1. Kuck mal, wer da spricht Sebastian Gingter Software Architect &

    Erklärbär bei der Thinktecture AG E-Mail: [email protected] Twitter: @PhoenixHawk Blog: https://gingter.org Delphi-PRAXiS: Phoenix Node.js - Vielseitig und Schlagkräftig EKON 2017
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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?
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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?
  13. 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?
  14. 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
  15. • 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
  16. 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
  17. 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?
  18. 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 .
  19. • 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