Matti Mäkitalo: HTML und Javascript OOP

Beitrag lesen

Hallo,

was du machst klingt für mich stark nach dem Ansatz, den react.js verfolgt. Warum wechselst du nicht einfach dahin?

Der wesentliche Unterschied ist, dass das Template auf client-seite gehalten wird statt im Server zu liegen - da du aber sowieso noch behaviour binden musst (deine Event-Listener) ist der Code eh abhängig vom Template. Auf dieses Feature (dynamische Templates) würde ich im Zweifel eher verzichten. Nicht, dass es mit react unmöglich wäre - nur ungewöhnlich.

Ansonsten: zu deiner Frage 1: ja, Template und Daten an einer Stelle zu halten ist nicht unüblich. Meist sind die JS-Frameworks Komponenten-basiert. Das, was du beschreibst, wird darin üblicherweise Controller genannt.

Frage 2: die Idee ist es meistens, einen zentralen Datenservice zu haben, auf den die Controller referenzieren. Entweder, weil die Controller nur Referenzen nutzen oder in dem du die Controller als Event-Listener auf Updates beim Daten-Service einträgst. Gibt noch andere Methoden, aber das wären zumindest bei weitverteilten Komponenten (also insb. nicht welche in Kind-/Eltern-Beziehungen) üblich. Andere Methoden sind über Event-Listening/-Publishing (würde ich meist von abraten) oder über Attribute (wenn du einen Ansatz machst, in dem die Kind-Komponenten als WebComponents [wie bei react.js, angular sind die Komponenten neue HTML-Elemente] einbindest.

Viele Grüße Matti