Wie organisiere ich files wenn ich ein js Framework code?

1 Antwort

Arbeitet man mit modules, (...)

Ein modulbasierter Aufbau wäre ratsam, da das Framework dadurch funktional untergliedert werden kann und das Testen separater Teile einfacher fällt.

(...) startet man die einzelnen librarys dann in einer main.js (...)

Bibliotheken werden nur dort eingebunden, wo sie auch benötigt werden. Wenn eine Bibliothek wichtige Funktionen beisteuert, die für ein Framework-Setup benötigt werden, muss die main.js diese auch aufrufen.

Also ich wollte ein framework coden (...)

Ein paar Tipps dazu:

1) Definiere zuerst, worin sich das Framework auszeichnen soll. Welche Kernziele hat es, welche Key Features soll es beinhalten.

Wenn das klar ist, lässt sich auch deutlicher abschätzen, was du brauchst und wie weit das Projekt überhaupt gehen soll. Es könnte sich in die Richtung des Baus einer Game Engine entwickeln oder vielleicht merkst du, dass eine Bibliothek doch völlig ausreichend wäre.

2) Erstelle dir Skizzen / Diagramme (Component Diagram, Klassendiagramm, Dependency Graph, ...) zum Aufbau, um einen Überblick zu bekommen und die Struktur besser planen zu können.

3) Einzelne Teile/Funktionen können womöglich durch bereits existierende Bibliotheken abgedeckt werden. Für eine Game Engine (Zielplattform: Web) könnte man zum Beispiel Howler, Oimo und ThreeJS in ein Boot bringen. Dann bräuchte man nur noch Verbindungsstücke und vielleicht auch eine Facade als zusätzliche Abstraktionsebene.

4) Beschäftige dich mit Design Patterns (Abstract Factory, Builder, Chain of Responsibility, Facade, Mediator, Reactor, u.ä.). Sie können bei der Strukturierung, internen Kommunikation oder Konfiguration des Frameworks helfen.

Des Weiteren wäre es gut, wenn du dich konkret mit üblichen Strukturen beschäftigen würdest, die bei Spielen angewandt werden.

Zwei nützliche Quellen dazu (für einen Einstieg):

5) Es gibt so einige Open-Source-Projekte, die du dir anschauen kannst. Zum Beispiel Phaser oder kiwi.js.


WeissBrot965 
Fragesteller
 13.09.2023, 15:45

Danke für die ausführliche Antwort, hätte da noch eine Frage: in meinem Framework wird es dann nh Art keyboard.js geben, wird im Prinzip genauso funktionieren wie die keyboard.js library in python. Jetzt die Frage: das keyboard object wird in meinem framework source code eigentlich nirgendswo mehr verwendet, dass heisst der code darin wird niemals ausgeführt wenn ich mit modulen arbeite. Wie regel ich das dann? Wenn ich alles bundle wird eh alles in einer Datei sein, aber coden muss ich für so eine Datei das bei einem seperaten Projekt ausprobieren?

Mfg

0
regex9  13.09.2023, 17:28
@WeissBrot965

Wenn alles in einer Datei ausgeliefert werden soll, solltest du bei Bundling Tools darauf achten, dass das Modul / dessen Funktionen nicht via Tree-Shaking herausgefiltert werden. Das lässt sich in der Regel über die Konfiguration des Bundletools definieren.

Ansonsten kannst du auch einzelne Bundles anbieten, die ein Nutzer je nach Anforderung einbindet.

  • Eine all.js, wenn der Nutzer alle Module haben will
  • Einzelbundles für keyboard.js, etc., falls ein Nutzer nur bestimmte Module benötigt
0
WeissBrot965 
Fragesteller
 13.09.2023, 17:51
@regex9

Alles gut, sollte nicht das Problem sein. Habe mir vor paar Wochen einen eigenen Bundler programmiert, der eigentlich nichts anderes macht als den code aus allen Dateien zu kopieren und in eine zusammen zu fügen. Import exports werden natürlich gelöscht. Weiss nicht ob bundler so funktionieren und ob was schlecht für die Performance ist aber mir ist es eigentlich nur wichtig, dass alles dann in einer fertigen frameworkname.js ist

0