custom-elements-everywhere
yhtml
custom-elements-everywhere | yhtml | |
---|---|---|
19 | 3 | |
1,135 | 101 | |
0.5% | - | |
8.9 | 3.1 | |
6 days ago | 9 months ago | |
JavaScript | HTML | |
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.
custom-elements-everywhere
-
Unlocking the frontend – a call for standardizing component APIs pt.2
With React (it seems) finally moving to support everything needed (they are the last major framework lagging behind substantially), too, we might be moving to a world post-framework discussions, and real interoperability on a technical level. I think Jake Lazaroff motivates this beautifully with his articles “Web Components Eliminate JavaScript Framework Lock-in” and “The Web Component Success Story”.
-
Use web components for what they’re good at
Seems it doesn’t work in React, everything is sent as a string. There was a link in the article that shows how well web components work with various frameworks.
https://custom-elements-everywhere.com/
You can see how React fares for itself.
-
If Web Components are so great, why am I not using them?
React supports Web Components, just some quirks to be aware of: https://custom-elements-everywhere.com/
-
[AskJS] Asking advice on monorepo setup with multiple frameworks
You could wrap each component as a Web Component and then import them for each repo. Web Components are not native to frameworks, so the support for them could vary when passing props. Or you could wrap the render method of each framework as a function and then use the receiving frameworks life cycle method and inject it onto the page. If you use frameworks like Svelte or Lit that are "Web Component" based, then you'd need to see if the receiving framework supports Web Components inorder to import the seamlessly.
-
Am I the only one that thinks that the direction of React is wrong?
Check compatibility of React with web components: https://custom-elements-everywhere.com/ It's not directly because of jsx, but because of synthetic "let's make it up" approach of React.
-
Regarding converting svelte file into pure js file
I have been using this approach recently as well, working great thus far ! Some things to consider though: - I would recommend checking if the other frameworks you intend to use have good web components support (looking at you, react): https://custom-elements-everywhere.com/ - There are ways to do so without web components, but I wouldn't recommend them unless your framework has poor web components support.
-
HTML with Superpowers: An Introduction to Web Components
VueJS actually fails some advanced tests for WebComponents: https://custom-elements-everywhere.com/
So, VueJS docs are actually incorrect when they say it scores 100%. The actual score is 90%.
I had reported this 8 months ago.
-
Building Web Components 101 - Part 1
Since Web Components are supported natively by browsers, they can be used in any libraries and frameworks either directly or with configurations. https://custom-elements-everywhere.com/ is a great site to check custom elements support status by different libraries and frameworks.
- Check if a library/framework supports the usage of custom elements
- custom-elements-everywhere.com: Check if a library/framework supports the usage of custom elements
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
What are some alternatives?
stencil - A toolchain for building scalable, enterprise-ready component systems on top of TypeScript and Web Component standards. Stencil components can be distributed natively to React, Angular, Vue, and traditional web developers from a single, framework-agnostic codebase.
fastdom - Eliminates layout thrashing by batching DOM measurement and mutation tasks
details-dialog-element - A modal dialog that's opened with <details>.
custom-elements - Using custom elements
hybrids - Extraordinary JavaScript UI framework with unique declarative and functional architecture
img-comparison-slider - Image comparison slider. Compare images before and after. Supports React, Vue, Angular.
feelback-integrations - Feelback SDKs, integrations libraries and samples
systemjs - Dynamic ES module loader
astro - The web framework for content-driven websites. ⭐️ Star to support our work!
proposal-import-attributes - Proposal for syntax to import ES modules with assertions
web-vitals - Essential metrics for a healthy site.
FunPizzaShop