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:

Pico Colors Beispiel

Infos zur Verwendung: https://github.com/alexeyraspopov/picocolors

Alternativen:

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:

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:

Link-Sammlung zu JavaScript („Awesome List“): https://github.com/sorrycc/awesome-javascript