openElement 的长期方向是 WC SSR/SSG 渲染内核和组件包协议。公共 registry hub 只有在本地索引、 manifest、验证产物和安全治理成熟后才应该出现。
openElement 可以成为 Web Components 的 SSR/SSG 渲染内核和包协议,但不能承诺任意 Web Component 都能被自动 SSR、自动注册和自动水合。所谓"自动"必须来自 manifest,而不是运行时猜测。
| 参考 | openElement 如何使用 | 不做什么 |
|---|---|---|
| WHATWG HTML / DSD | 跟随 shadowrootmode 等 template 属性,作为 SSR 输出基础。 | 不输出私有 hydration 标记替代平台语义。 |
| Custom Elements Manifest | 作为 tag、attribute、property、event、slot、part、CSS token 的元数据基础。 | 不重新发明一套完全不兼容的组件文档格式。 |
| Open UI | 借鉴 parts、states、behavior、a11y、form semantics 的组件契约词汇。 | 不把 openElement 变成 OpenWC 模板或 Open UI 实现库。 |
| OpenWC | 学习测试、lint、demo、发布的历史经验。 | 不把旧测试栈、Rollup preset 或项目模板作为主路线。 |
| Lit / FAST | 作为 WC 作者体验和 adapter 输入。 | 不把任一作者库绑定成 openElement 的定义。 |
| Scoped Custom Element Registries | 跟踪未来多版本和同名 tag 隔离能力。 | 不在浏览器支持和协议稳定前把它写成当前依赖。 |
| CSS Houdini | 作为未来样式扩展和 worklet 方向观察。 | 不把 Houdini 写入当前渲染核心承诺。 |
| 能力 | 可行条件 | 失败时行为 |
|---|---|---|
| 一键安装 | 包声明 manifest,schema 通过,来源和版本可记录。 | 只输出 dry-run diff,不修改配置。 |
| 自动注册 | manifest 声明 tag、module、export 和注册策略。 | 跳过重复 define,报告版本冲突。 |
| 自动渲染 | 组件声明 ssr.renderable: true,并有可用 adapter。 | 降级为 host 元素或 pure island,并记录 diagnostics。 |
| 自动水合 | 声明 hydrate strategy、events、selectors 和 cleanup。 | 保留静态 DSD HTML,不绑定未知事件。 |
| Hub 展示 | 消费 manifest、SSR/SSG 快照、bundle cost、测试和 a11y 备注。 | 隐藏未验证字段,不相信 README 营销文本。 |
v0.16 不应该直接冻结完整生态协议,但应先定义可验证字段: package、version、components、tag、module、export、ssr、dsd、hydrate、events、slots、 parts、states、tokens、diagnostics、validation。
这个方向有差异化,但不是主流 React/Vue 应用框架替代品。最适合的用户是设计系统作者、 Web Components 包作者、文档/产品站团队、Deno/Edge 团队,以及需要内部组件索引和质量审计的组织。
PackageIslandMeta 扩展为 CEM-compatible 的包 manifest 草案。less validate-manifest,再做 open add。