Nützliche und interessante Bibliotheken
Dauer: 30 Minuten
Ziel: Vorstellung einiger Bibliotheken, die weitere Möglichkeiten aufzeigen
Die hier vorgestellten Bibliotheken könnten für das Projekt nützlich sein und dürfen verwendet werden.
In replit.com können Bibliotheken im Bereich Packages (das Würfel-Symbol) gesucht und dem Projekt hinzugefügt werden.
In NodeJS werden Bibliotheken mit dem
Terminal-Befehl npm install
für das Projekt
installiert. Hierbei muss der Name der Bibliothek
angegeben werden, z.B. node-localstorage
für
localStorage
:
npm install node-localstorage
Fake-Daten
Faker ist eine JavaScript-Bibliothek, die zufällige Daten für verschiedene Anwendungsfälle erzeugen kann.
Ausgabe im Terminal
In der textbasierten Ausgabe im Terminal lassen sich auch Farben definieren, siehe auch die Lektion zur Ausgabe.
Mit einer Hilfsbibliothek wie z.B. PicoColors können Farben relativ leicht in der Textausgabe gesetzt werden. Dazu ein Beispiel (zuvor muss natürlich PicoColors installiert werden):
import pc from 'picocolors';
console.log(`${pc.red("Hallo")} und ${pc.green("Willkommen!")}`);
Dies ergibt die folgende Ausgabe:
Infos zur Verwendung: https://github.com/alexeyraspopov/picocolors
Alternativen:
- https://github.com/chalk/chalk
- https://github.com/lukeed/kleur
- https://github.com/Marak/colors.js
- https://github.com/jorgebucaran/colorette
- und bestimmt gibt es noch weitere…
Eingabe im Terminal
Die Eingabe mit prompt
funktioniert nur
in replit.com und nicht in Projekten, die auf
dem eigenen Rechner mit NodeJS umgesetzt werden.
Außerdem ist prompt
auf die Eingabe von
Text beschränkt.
Um für die Eingabe mehr Möglichkeiten zu erhalten, kann dem Projekt eine zusätzliche Bibliothek als Abhängigkeit hinzugefügt werden.
Synchrone prompt-Bibliotheken
Mit „synchron“ ist hier gemeint, dass der Code bei der Aufforderung zur Eingabe „anhält“. Diese Art der Programmierung ist deutlich einfacher nachzuvollziehen, als die asynchrone Vorgehensweise, die im nächsten Abschnitt beschrieben wird.
Früher haben wir in NodeJS bzw. replit.com die Bibliothek readline-sync
verwendet, die aber leider nicht mehr weiterentwickelt wird.
Die Bibliothek readline-sync
wurde leider vom Autor bei GitHub
archiviert und wird somit nicht mehr weiterentwickelt (siehe
https://github.com/anseki/readline-sync).
Es gibt aber Varianten bzw. „Forks“ dieser Bibliothek, die teilweise weiterentwickelt werden, siehe z.B. https://github.com/ThunderNetworkRaD/readline-sync
Die Bibliothek readline-sync
bietet nützliche
Erweiterungen zur Eingabe wie z.B. die Auswahl von
Menüpunkten und Default-Werte.
Außerdem kann readline-sync
besser mit
der Eingabe von Umlauten und anderen Sonderzeichen
umgehen als prompt
.
Eine Alternative zu readline-sync
könnte prompt-sync-plus
sein,
siehe dazu https://github.com/Vpet95/prompt-sync-plus. Diese Bibliothek
ist allerdings relativ neu (2022). Sie basiert auf dem Projekt
https://github.com/heapwolf/prompt-sync, das Anfang 2023 seit mehr als
3 Jahren nicht mehr weiterentwickelt wurde.
In readline-Sync
funktionieren Pfeiltasten bei der
Eingabe nicht und prompt-sync-plus
unterstützt keine
Umlaute (geprüft im Februar 2023).
Asynchrone prompt-Bibliotheken
Es gibt einige weitere Bibliotheken, um die Eingabe
in NodeJS/replit umzusetzen. Diese bieten oftmals
zusätzliche Funktionalitäten. Jedoch erfolgt der Umgang
mit diesen Bibliotheken im Code auf asynchrone Weise mit
Promises bzw.
async/await
.
Hierdurch ist die Verwendung dieser Bibliotheken eventuell
komplexer und schwerer zugänglich als der Umgang mit
den synchronen Bibliotheken readline-sync
und
prompt-sync-plus
.
Es folgen eine paar Beispiel-Projekte:
- https://github.com/terkelg/prompts
- https://github.com/SBoudrias/Inquirer.js
- https://github.com/enquirer/enquirer
- https://github.com/cronvel/terminal-kit
- https://github.com/vadimdemedes/ink
- https://github.com/vadimdemedes/pastel
- https://github.com/Yomguithereal/react-blessed
Hilfsbibliotheken in JavaScript
In JavaScript-Projekten wird sowohl in
Webanwendungen für den Browser als auch in
NodeJS häufig die Hilfsbibliothek
Lodash eingesetzt.
Mit Lodash stehen einige nützliche Funktionen
bereit, z.B. sample
um zufällige Elemente
eines Arrays zu erhalten:
import _ from "lodash";
let names = ['Alice', 'Bob', 'Charlie', 'Donna',
'Eva', 'Frank', 'Geri', 'Harry', 'John'];
let randomName = _.sample(names);
console.log(randomName);
// --> zufälliger Name wird ausgegeben
Infos zu Lodash: https://lodash.com
Es finden sich viele weitere Hilfsbibliotheken im Umfeld von JavaScript, z.B. für den Umgang mit Datumswerten:
- https://date-fns.org/
- https://moment.github.io/luxon/ (Nachfolger von momentjs, das nicht weiterentwickelt wird)
- https://day.js.org (gleiche API wie momentjs aber kompakter)
Link-Sammlung zu JavaScript („Awesome List“): https://github.com/sorrycc/awesome-javascript