1unitedpower: Best practice für JS-Bibliotheken

Beitrag lesen

Ich finde es aktuell sehr unglücklich, dass viele gute Node-JS Bibliotheken nicht so ohne weiteres im Browser genutzt werden können. Zumindest ist es mein Verständnis, dass die klassischen var x = require('nodename-module') nicht funktioniert bzw. wenn dann nur über hässliche Umwege.

Ja. Das JavaScript-Ökosystem ist in diesem Punkt sehr fragmentiert. Da es lange keine Standard-Lösung für das Problem gab, haben viele Köche ihr eigenes Süppchen kochen müssen und wir wissen ja wozu das führt.

Und ziemlich unschön ist es, dass nun ES6 einen eigenen import/export Syntax eingeführt hat, der nicht kompatibel zu dem export/require von Node.js passt.

EcmaScript-Module sind der Versuch das Ökosystem zu defragmentieren, indem man eine vereinheitlichte Standard-Lösung anstrebt.

Gibt es einen Weg, eine JS Bibliothek so zu schreiben, dass diese sowohl vom Brwoser als auch bei Node eingesetzt werden kann?

Die grundsätzliche Idee ist, dass man die Library erstmal im EcmaScript-Stil entwickeltn und dann Bindings für alle zu unterstütztenden Module-Systeme drumherum baut. In der Praxis hat man meistens sowieso schon ein Buildsytem, wie Babel oder TypeScript, im Einsatz, da kann man dann extra Build-Schritte konfigurieren, um Bindings für diverse Zielplattformen zu erzeugen.

Hier ist das beispielhaft für TypeScript erklärt: https://www.typescriptlang.org/docs/handbook/2/modules.html#typescripts-module-output-options