In Sciter it is not. @event there is not calling Element.addEventListener but declares event handlers as static table associated with class.
Essentially components are attached to DOM elements by calling Object.setPrototypeOf(element, MyComponent) - no memory allocation is happening (modulo code in componentDidMount) - very fast and lightweight.
Yet, in your sample, you've missed the call of customElements.define(), that alone is limiting use cases quite a lot.
> custom elements don't cost $310 for an indie license.
Sciter is free, as browsers too, components in SDK, hundreds of them, are free too.
You will need to pay $310 only if you need source code of Sciter Engine itself.
Sciter is like a browser in that respect, try to request source of MS Edge or Google Chrome for any money - good luck with that.
The web components in Chrome and Edge are both implemented in the open source Chromium project. So, it is free for all to read, use and modify as they wish (in accordance with the terms of the license https://chromium.googlesource.com/chromium/src/+/master/LICE...)
Holding open source hostage to a $100,000 goal doesn't sound like "real" open source to me either. And you're still going to offer it under either GPL or paid commercial licenses. Chromium is released under a BSD license which is a lot more permissive.
It's totally fine to make money but when people have valid critiques you shouldn't turn around and try shaming competitors about something that you're not even doing.
The good thing about this mechanism is that you just need CSS in order to declare your components.
The script will run only if you have elements with matching selectors. So you may have component libraries. Browser will instantiate only used components.
Sure, by returning to basics.
Let's assume that Web Component is a DOM element with a code associated with it + lifecycle events.
Here is how Components are done in Sciter ( https://sciter.com )
1. CSS has got `prototype` property:
where MyComponent is the name of class in JS, url (optional) is an URL where this MyComponent can be found.2. In script that custom component is usually represented by ES6 class (+ decorators)
and that's it. Sciter lives with this schema more than 10 years - proven to be very convenient and flexible.Yet simple: one property `prototype` + simple wiring of lifecycle events.