Re: [WICG/webcomponents] Explain the relationship of DOM Parts to XHTML (Issue #1028)

One of the reasons to not use `<` is to allow parts where those characters are not allowed, such as unquoted attribute values and inside an opening tag. Using `<` would require a different syntax for those.

Here are the places we would like to allow parts:

| Location | Example |
|---|---|
| Child node with no content | `<div>{{}}</div>` |
| Child node with content | `<div>{{#}}<p>default content</p>{{/}}</div>` |
| Unquoted attribute value | `<div foo={{}}>` |
| Quoted attribute value | `<div foo="{{}} and {{}}">` |
| Element | `<div {{}}>` |

There is a related requirement that I would like to preserve, which is that you can make a valid parts-containing template HTML string from author-provided template strings without having to parse the author-provided strings. This is possible if we can join the author-provided template strings with a single joiner string.

This makes building a declarative HTML template system in JS very easy:

```ts
const html = (strings, ...values) => {html: strings.join('{{}}'), strings, values};

const example = html`<div ${behaviorA()} foo=${valueB}>${children}</div>`;
example.html; // <div {{}} foo={{}}>{{}}</div>
```

-- 
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1028#issuecomment-1723894673
You are receiving this because you are subscribed to this thread.

Message ID: <WICG/webcomponents/issues/1028/1723894673@github.com>

Received on Monday, 18 September 2023 16:29:23 UTC