- From: James Browning <notifications@github.com>
- Date: Thu, 21 Sep 2017 05:07:51 +0000 (UTC)
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/658/331052272@github.com>
@wiredearp XSLT is very heavyweight from what I've seen of it, realistically I'd rather just a minimal tool for choosing names e.g.: ```html <import src="./my-web-component.???" as="my-component-name" /> <!-- my-component-name would be strictly scoped to this document not other documents (not even shadow roots) that way we can be certain that there's never any name collisions There'd probably be a `document.customElements.define` or something like that for scoping elements to a specific document in this idea --> <my-component-name>...</my-component-name> ``` With that sort've approach I don't see any reason you couldn't permit hyphen-less names as well (as long as they're document scoped): ```html <import src="./my-progress-component.???" as="progress" /> <!--- The import would shadow the outer progress but only this document can actually observe that, before upgrading it'd probably just appear as a regular progress element --> <progress>My progress content</progress> ``` Of course this idea has the wider issue that there's no canonical way to distribute a Custom Element (given that WebKit doesn't want to implement `<link rel="import"...`) so that would need to be added for this to even make sense. Maybe something like (yes this idea is basically just ES import/export in HTML instead): ```html <template id="content"> <link rel="stylesheet" href="./fizz-buzz.css"> ... </template> <!-- Basically just `<script type="module"` except that it's obviously assigned extra meaning in the context of custom elements --> <script type="export"> export default class MyElement extends HTMLElement { constructor() { super() // ... Clone template[id="content"].content etc here } } </script> <!-- And in another file --> <import src="./my-element.html" as="foo" /> <foo></foo> ``` --- This would arguably be even nicer with the proposed [html modules](https://github.com/w3c/webcomponents/issues/645) from that issue e.g.: ```js // component.js import content from "./content.html" as DocumentFragment // Given that Custom Elements *require* JavaScript to define them why // not make that what's imported to register them: export default class MyElement extends HTMLElement { constructor() { super() const shadowRoot = this.attachShadow({ mode: 'open' }) } } ``` ```html <import src="./component.js" as="my-component-name" /> // component.js would be `import`-ed then `document.customElements.define` // would be called on the resulting module ``` -- 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/658#issuecomment-331052272
Received on Thursday, 21 September 2017 05:08:26 UTC