Avatar von Gast (13032)
  • Gast (13032)

3 Beiträge seit 13.05.2015

Re: Erfahrung mit Web Components

Mir kommt vor, dass deine Probleme eher mit lit-elements zu tun haben und nicht mit Web Component Standards. Ich hab recht viel mit Stencil (https://stenciljs.com/docs/introduction) gearbeitet und hab deine ersten 2 Probleme nicht gehabt.

1. Ein <slot> das mehr als nur 1 Element akzeptiert ist kein Problem mit Stencil.

2. Properties werden automatisch von Stencil mit Attribute verdrahtet (auch mit der typischen lowerCamelCase zu snake-case Konvertierung), sind aber nicht auf Strings beschränkt. Von außerhalb des Stencil Projekts kann man so ein Property einfach per JavaScript setzten:

document.querySelector("my-component").myProperty = {some: "object"};

Innerhalb des Stencil Projektes, falls man <my-component> als Sub-Komponente in einer anderen nutz, kann man mittels JSX so ein Property aber auch per Attribut übergeben:

<my-component my-property={ {some: "object"} } />

3. Stencil unterstützt Component-Vererbung gar nicht, wahrscheinlich weil das viel Komplexität mit sich zieht. Interfaces können aber schon implementiert werden. Man kann geteilten Code in Service/Utility-Klassen bzw. geteilte Styles in eine globales Style-Sheet platzieren, oder Komponenten so gestalten, dass sie von anderen als Sub-Komponenten genutzt werden können. Wenn man solche Komponenten und deren geteilten Code in 1 Bundle kompiliert, dann muss der Client den Code auch nur 1 mal runterladen.

Trotzdem, deinem Fazit stimme ich überein. Web Components sind kein Ersatz für Frameworks. Obwohl ich gute Erfahrungen mit Stencil gemacht habe, würde ich es nicht einfach so zum Spaß einsetzten. Ich nutze Web Components in folgenden Fällen:

- Um Komponenten zu entwickeln, die in mehreren Applikationen mit unterschiedlichen Frameworks integriert werden sollen. (Bei mir in der Arbeit ist das der Fall.)
- Um Komponenten für Applikationen mit uralten Frameworks zu entwickeln. Bei mir gibt es z.B. ein verwüstetes AngularJS 1.5 Projekt, dass manchmal noch neue Features braucht.

Bewerten
- +