Web-Host-Überblick

Der Wippy Web Host ist eine Vue-3-Single-Page-Anwendung, gebaut nach der Feature-Sliced-Design-Methodik und ausgeliefert von einem CDN unter https://web-host.wippy.ai. Er hostet alle benutzerseitigen Pages und UI-Komponenten einer Wippy-Anwendung. Sie bauen oder deployen ihn nicht — Sie konfigurieren ihn über das Backend-Modul wippy/facade, und er lädt automatisch.

Wippy FE architecture

Drei-Schichten-Modell

Eine laufende Wippy-Anwendung besteht aus drei ineinandergeschachtelten Schichten:

Schicht 1 — Seite, ausgeliefert von wippy/facade. Das ist Ihre backend-gerenderte HTML-Seite. Das Modul wippy/facade registriert einen statischen Dateiserver und einen /facade/config-Endpoint an Ihrem Wippy-Gateway. Wenn ein Nutzer zu Ihrer Anwendung navigiert, liefert wippy/facade eine dünne HTML-Seite aus, die den Web-Host-JS-Modul-Einstieg vom CDN lädt (module.js für Compat, managed-layout.js für Managed) und ihn mit der Konfiguration von /facade/config initialisiert. Die Seite selbst enthält weder Vue noch React — sie ist absichtlich dünn.

Schicht 2 — Web Host. Das Web-Host-Bundle lädt als JS-Modul, das die gesamte Seite und ihre Browser-History übernimmt. Ihm gehört die Wippy-Chrome: Navigations-Seitenleiste, Chat-Panel, Session-Verwaltung und die Rendering-Fläche für Pages. Er erhält seine vollständige Konfiguration aus dem Init-Aufruf der Seite und enthält im Bundle selbst niemals deploymentspezifische URLs oder Tokens. Das macht das CDN-gehostete Bundle über Deployments hinweg portabel. (Für manuelle Einbettungen ohne Facade kann derselbe Host stattdessen über den iframe.html-Einstieg in einem iframe laufen — siehe die Einstiegspunkt-Tabelle unten.)

Schicht 3 — Child-Micro-Frontends. Der Web Host bettet seinerseits benutzerdefinierte Views entweder als verschachtelte iframes (view.page-Module) oder als Web Components (view.component-Module) ein. Jedes Child läuft isoliert. Der Web Host injiziert ein Proxy-Skript, das Children Zugriff auf die Wippy-API, den Authentifizierungskontext, Theme-CSS und Kommunikationskanäle gibt — ohne dass das Child wissen muss, wo es deployed ist.

Seite (wippy/facade-HTML — lädt module.js / managed-layout.js)
  └─ Web Host (übernimmt die Seite + Browser-History)
       ├─ Chat-UI, Navigation, Seitenleiste
       └─ Child-Micro-Frontends
            ├─ view.page  → srcdoc-iframe + proxy.js
            └─ view.component → Custom Element + @wippy-fe/proxy ESM

Einstiegspunkte

Das Web-Host-CDN liefert mehrere Einstiegspunkte aus demselben versionierten Verzeichnis. Welcher der richtige ist, hängt von Ihrer Integration ab:

Jeder Einstieg wird vom CDN unter <release-tag>/<entry> ausgeliefert (z. B. /<release-tag>/module.js).

Einstieg Anwendungsfall
module.js Vollständige App im Compat-Modus — die Standard-Shell aus Navigations-Seitenleiste + Page-Bereich + rechtem Chat-Panel. Wird über window.initWippyApp() direkt in die Seite gemountet; übernimmt die gesamte Seite und ihre Browser-History. Diesen Einstieg liefert das aktuelle wippy/facade standardmäßig aus.
managed-layout.js Vollständige App im Managed-Modus — das deklarative Multi-Panel-Layout. Von der Facade ausgeliefert, wenn fe_mode = managed. Early Access (siehe Multi-Panel Layout).
iframe.html Vollständige App innerhalb eines iframes für Isolation oder teilweise Seiteneinbettung. Verwenden Sie sie für manuelle Einbettungen ohne Facade, bei denen Sie die Konfiguration über einen SetConfig-PostMessage-Handshake liefern. Die Facade selbst lädt die obigen JS-Modul-Einstiege, nicht diesen.
chat-iframe.html Minimale Chat-Oberfläche ohne Seitenleiste oder Pages. Nützlich, um ein fokussiertes Chat-Widget einzubetten.
chat.js Headless-ESM-Modul, das Chat-Stores und WebSocket-Client bereitstellt. Für vollständig eigene UIs.
ws.js Eigenständiger WebSocket-Dienst ohne Vue- oder Pinia-Abhängigkeit. Für Low-Level-Echtzeit-Integrationen.

Bei Standard-Deployments auf wippy/facade-Basis referenzieren Sie diese Pfade nie direkt. Die Facade liest fe_facade_url aus ihrer Konfiguration, wählt den JS-Modul-Einstieg, der zu fe_mode passt (module.js für Compat, managed-layout.js für Managed), und baut die korrekte URL automatisch.

CDN-Versionierung

Der Web Host wird per Git-Tag versioniert. Das kanonische Produktions-URL-Muster lautet:

https://web-host.wippy.ai/<release-tag>/

Dabei ist <release-tag> das Git-Release-Tag des Web Hosts — entweder ein stabiles Release oder ein Vorschau-Deploy eines Feature-Branches. Das Staging-CDN liegt unter https://web-host.staging.wippy.ai/<release-tag>/.

Normalerweise setzen Sie die Version gar nicht. Das Modul wippy/facade wird mit einer Standard-fe_facade_url ausgeliefert, die auf einen passenden Web-Host-Build zeigt, sodass die Web-Host-Version mit dem Facade-Modul wandert — ein Update von wippy/facade ist der Weg zu einem neueren Web Host. Child-Apps, die Vendor-Bibliotheken über die Import Map teilen, erhalten genau die Versionen, die dieser Build liefert.

Um eine bestimmte Web-Host-Version zu pinnen — um auf einem als gut bekannten Build zu bleiben oder ein Feature-Branch-/Early-Access-Tag zu wählen —, überschreiben Sie den Parameter fe_facade_url:

- name: fe_facade_url
  value: https://web-host.wippy.ai/<release-tag>

Das pinnt das gesamte Deployment auf diesen Build. Siehe CLI overrides für die -o- / --override-Syntax, um ihn stattdessen zur Laufzeit zu setzen.

Tech-Stack

Der Web Host ist mit Vue 3 (Composition API), PrimeVue + Tailwind CSS 3 für UI-Komponenten, Pinia für State Management, Vue Router für Navigation und Axios für HTTP gebaut. Holen Sie während der Entwicklung <fe_facade_url>/import-map.json und setzen Sie jeden Key aus dessen imports-Objekt in die Rollup-Externals, auch wenn das aktuelle Artefakt diesen Key nicht importiert. Bundeln Sie eine importierte Abhängigkeit nur, wenn ihr exakter Specifier fehlt. Holen Sie sie erneut, wenn sich das Web-Host-Tag ändert oder eine neue Abhängigkeit hinzukommt.

Siehe auch

  • Facade Entry Point — wie die Facade den Web Host an Nutzer ausliefert und wie der Konfigurationsfluss aussieht
  • Bootstrap Sequence — was im Web Host passiert, nachdem er die Konfiguration erhalten hat
  • Multi-Panel Layout — Managed-Layout-Modus für eigene Multi-Panel-Shells
  • Packages — die @wippy-fe/*-npm-Packages, die Entwicklern von Child-Apps zur Verfügung stehen
  • Facade module — Backend-Einrichtung für wippy/facade
  • Render Engines — die beiden Page-Render-Engines (srcdoc-iframe vs. Web Fragment)