yhtml
stencil
yhtml | stencil | |
---|---|---|
3 | 55 | |
101 | 12,325 | |
- | 0.7% | |
3.1 | 9.9 | |
10 months ago | 1 day ago | |
HTML | TypeScript | |
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
yhtml
-
If Web Components are so great, why am I not using them?
The main reason is that they're too low-level to use directly.
They do a lot, but stop just short of being useful without something of a framework on top. I tried hard to use them directly, but found that it was untenable without sensible template interpolation, and without helpers for event binding.
Here's my shot at the smallest possible "framework" atop Web Components that make them workable (and even enjoyable) as an application developer:
https://github.com/dchester/yhtml
It's just ~10 SLOC, admittedly dense, but which make a world of difference in terms of usability. With that in place, now you can write markup in a style not too dissimilar from React or Vue, like...
${this.count}
-
Modern SPAs without bundlers, CDNs, or Node.js
I also sometimes enjoy this approach of starting from absolutely nothing.
Instead of taking the path of starting with DOM manipulation and then going to a framework as necessary, I've kept really trying to make raw web components work, but kept finding that I wanted just a little bit more.
I managed to get the more I wanted -- sensible template interpolation with event binding -- boiled down to a tag function in 481 bytes / 12 lines of (dense) source code, which I feel like is small enough that you can copy/paste it around and not feel to bad about it. It's here if anyone cares to look: https://github.com/dchester/yhtml
- Bytes HTML tag function for rendering Web Component templates
stencil
- Ajout de l'auto-complétion sur les Web Components avec Stencil
-
Making Web Component properties behave closer to the platform
First a disclosure: I never actually used Stencil, only played with it a bit locally in a hello-world project while writing this post.
-
Plasmic.app – the visual builder for your tech stack
This is my main concern too.
I don't understand why tools like this "pick a winner" with a specific framework instead of rendering to Web Components with a framework wrapper, or using something like Stencil[1] that can render to any framework.
[1] https://stenciljs.com/
-
Design Systems with Web Components
I was recently able to sit down with some of the core members of Ionic, who also created Stencil a toolchain for building Design Systems and Progressive Web Apps. We talked at great length how typically companies are approaching Ionic from a Design Team and need help building components. As a developer I wanted to talk about the Web Components that are used within the Design System first. There was a decent amount of surprise, so I thought I would break down what a Design System is and why it doesn't matter which end you start with, as long as you have both your Design and Development teams working together to build your Design System.
- Nue: A React/Vue/Vite/Astro Alternative
-
If Web Components are so great, why am I not using them?
Examples like this bug me. The React example is using a high level abstraction, the web component is directly using the API. A more accurate example would show how those React calls eventually boil down to document.createElement()
I don’t think the Web Components API was meant to be used directly all the time. You can use a framework like StencilJS:
https://stenciljs.com/
- Use Stencil / the ionic framework with emberjs [video]
-
World Wide Web Wars
You might say that this is the same vicious cycle as JavaScript frameworks. That's wrong, because Web Components are interoperable by design. Choosing Stencil or Lit or any other library is a development convenience that has little to do with the interoperability of the resulting components.
-
React Component in vue/angular
Not sure about Vue but you can in Angular, though my experience with React components in Angular has not been pleasant. Libraries such as Stencil allow you to create native Web Componets from React components.
-
Is there a plugin that abstracts registering web components with React?
I guess my problem is more specific to my overall architecture. I have components that when are placed in the DOM, have props rendered on them by their parent elements. I'm using stencil to do this.
What are some alternatives?
fastdom - Eliminates layout thrashing by batching DOM measurement and mutation tasks
lit - Lit is a simple library for building fast, lightweight web components.
custom-elements - Using custom elements
Svelte - Cybernetically enhanced web apps
img-comparison-slider - Image comparison slider. Compare images before and after. Supports React, Vue, Angular.
vite-ssg - Static site generation for Vue 3 on Vite
systemjs - Dynamic ES module loader
css-modules - Documentation about css-modules
custom-elements-everywhere - Custom Element + Framework Interoperability Tests.
catalyst - Catalyst is a set of patterns and techniques for developing components within a complex application.
proposal-import-attributes - Proposal for syntax to import ES modules with assertions
shoelace-css - A collection of professionally designed, every day UI components built on Web standards. SHOELACE IS BECOMING WEB AWESOME 👇👇👇