cami.js
custom-elements
cami.js | custom-elements | |
---|---|---|
8 | 2 | |
366 | 226 | |
- | 2.7% | |
9.5 | 3.5 | |
6 days ago | 12 months ago | |
HTML | JavaScript | |
MIT License | ISC License |
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.
cami.js
-
HTML Web Components
Preact requires a build step otherwise you don't get JSX and you have to build applications a la mithril.js mode:
> const app = h('h1', null, 'Hello World!');
With Web Components no build step is required and you're still able to build JSX'ish code. See the code below this section: https://github.com/kennyfrc/cami.js#key-concepts--api
- Cami.js - A No Build, Web Component Based UI Framework
-
Show HN: Cami.js – A No Build, Web Component Based Reactive Framework
Yes, the lib's great!
Unfortunately I haven't thought much yet about interoperability with other web components libraries like lit. I imagined folks would choose just one web component library over the other.
That said, you can initialize reactive properties(1), but property bindings won't work if there's a parent LitElement (as my reactive properties need to be called with either a .value method or an .update method for getting and setting respectively).
As of the moment, what's possible is interop with other cami elements using a store, and in a future version, i'm considering a richer event system for external javascript code to listen to.
---
(1) Initializing is possible with observerableAttr: https://github.com/kennyfrc/cami.js/blob/master/examples/008...
-
Leaders Are Tool Builders: Why I Wrote My Own JavaScript UI Framework
The author is getting a bit of heat, and I think rightfully so. Here is the "tool" he's all bragging about: https://github.com/kennyfrc/cami.js/blob/master/src/cami.js
The whole thing is 250 Loc half of which is comments. And not to discount on that (Redux itself is not that big, though the ecosystem is). But this tool/project could be just a few blog posts where the author explains the patterns/libraries he is using.
It also doesn't help that his blog post/tool has the highest concentration of buzzword language you can expect. Please don't do that.
custom-elements
-
HTML Web Components
There is a polyfill for customiziing built-ins on Safari.
https://github.com/ungap/custom-elements
-
Misadventures in web components
The reason for the hand-rolled functionality is because Safari doesn't support customized built-ins, nor do they intend to anytime soon1. I will probably swap out my custom data attribute solution for a polyfill that supports the native is attribute when implementing in production because this is not implemented to spec.
What are some alternatives?
select2 - Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
webcomponents - Web Components specifications
ElementsJS - A lightweight DOM Manipulation library for VanillaJS
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.
formio - A Form and Data Management Platform for Progressive Web Applications.
marimo - A reactive notebook for Python — run reproducible experiments, execute as a script, deploy as an app, and version with git.
mini-van - Mini-Van: A minimalist template engine for DOM generation and manipulation, working for both client-side and server-side rendering (SSR)
WHATWG HTML Standard - HTML Standard
Immer - Create the next immutable state by mutating the current one
webcomponents-blog-examples
SanKEY.js - A JavaScript library for visualizing huge Sankey diagrams.