Entwicklungsgeschichte der Node.js Plattform. Kurzer Überblick über die aktuell unterstützten Features. Entwicklungsmuster für asynchrone Operationen wie Promises, Streams und RxJS
noch diskutiert, um einen möglichst störungsfreien Übergang zu schaffen. Eine gewisse Zeit lang sollen CommonJS-Module und ES2015-Module parallel unterstützt werden.
bindings import $ from 'jquery'; // import the default export of a module import { $ } from 'jquery'; // import a named export of a module import { $ as jQuery } from 'jquery'; // import a named export to a different name export var x = 42; // export a named variable export function foo() {}; // export a named function export default 42; // export the default export export default function foo() {}; // export the default export as a function export { encrypt }; // export an existing variable export { decrypt as dec }; // export a variable as a new name export { encrypt as en } from 'crypto'; // export an export from another module export * from 'crypto'; // export all exports from another module // (except the default export) import * as crypto from 'crypto'; // import an entire module instance object
von Node.js. Installation, Update und Removal von Paketen. Das zentrale Repo liegt unter npmjs.org. Aktuell gibt es > 250k Pakete. Jeder kann Pakete veröffentlichen. Jedes Paket löst seine eigenen Abhängigkeiten auf.
einem node_modules-Verzeichnis auf. Sämtliche Pakete liegen in einem node_modules- Verzeichnis. Nur bei Versionskonflikten gibt es noch Unterverzeichnisse. Flache Pfade sind gut für Windows.
Azer unpublished kik und 272 weitere Pakete (unter anderem left-pad). Es funktionieren reihenweise Pakete nicht mehr wegen fehlender Abhängigkeiten. module.exports = leftpad; function leftpad (str, len, ch) { //convert the `str` to String str = str +''; //needn't to pad len = len - str.length; if (len <= 0) return str; //convert the `ch` to String if (!ch && ch !== 0) ch = ' '; ch = ch + ''; var pad = ''; while (true) { if (len & 1) pad += ch; len >>= 1; if (len) ch += ch; else break; } return pad + str; }
und einer Open Source Community entwickelt wird. ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. http://reactivex.io/intro.html
Operation verarbeitet 2. Observable definieren: Asynchrone Operation definieren 3. Observer auf das Observable subscriben 4. Der Observer wird aufgerufen, sobald das Observable etwas sendet
observer.onCompleted(); }); var source2 = Rx.Observable.range(0, 10); var source3 = RxNode.fromReadableStream(process.stdin); Neue Observables erstellen
seine Observer sendet. Viele Operatoren akzeptieren einen Scheduler z.B. Rx.Observable.range(start, count, [scheduler]) Rx.Observable.from(iterable, [mapFn], [thisArg], [scheduler])
einer Warteschlange angeordnet • Rx.Scheduler.asap: Aufgabe wird zum nächstmöglichen Zeitpunkt ausgeführt • Rx.Scheduler.async: Asynchrone Ausführung • requestAnimationFrame: in RxJS-DOM
console.log('just before subscribe'); source.subscribe( (x) => { console.log('value ', x) }); console.log('just after subscribe'); // before subscribe // after subscribe // value 1 // value 2 // value 3
$ pm2 list ┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │ ├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ │ index │ 0 │ fork │ 20049 │ online │ 0 │ 4s │ 25.109 MB │ disabled │ └──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app