• 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
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
• 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?
• 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
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?
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
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
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?
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 .
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