- From: Joe Pea <notifications@github.com>
- Date: Mon, 20 Aug 2018 09:39:30 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/758/414382370@github.com>
Extendung from option 3, could the following help with performance?
*Option 4:* `static` list of features.
What if elements could specify specific features to use in a static prop, so the engine doesn't unnecessarily have to pass every single feature into a callback even if an element won't use each feature?
F.e.
```js
class Foo extends HTMLElement {
static get observedAttributes() { ... }
static get features() { return [ ... ] }
}
```
Then the features could do what they want: specify new callbacks, or provide certain instance props, etc.
Either it would be up to the feature how it is exposed, or perhaps they all get injected into a standard callback like option 3's `createdCallback` (though I think a different name would be better because we already have `constructor`).
As for the static list of features, if they were strings it would be easiest, but with the problem of name clashing (suppose we let anyone provide features, not built-in features):
```js
static get features() { return [ BuiltinFeature, UserFeature ] }
```
References would avoid name clashing, and not require a registry:
But then, this seems like mixins!
*Option 5:* class-factory mixins
Could mixins do the trick?
```js
class Foo extends BuiltinFeature( UserFeature( HTMLElement ) ) {
```
The features if the web component library [SkateJS](http://skatejs.netlify.com) are consumable as mixins, for example, which works great.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/758#issuecomment-414382370
Received on Monday, 20 August 2018 16:39:52 UTC