LessJS 的 docs 站和 UI 包现在仍使用 lit 编写组件,但 core 的长期合同应该是
DSD-first renderer + framework adapters,而不是把 Lit 写进框架本体。Lit 是成熟、可靠的 Web
Components 工具库;问题不在于它“不好”,而在于 LessJS 不应该把它变成唯一道路。
当前需要面对的是:Lit-authored islands 的运行时代价、adapter 的 SSR/style extraction 复杂度、 旧 Lit SSR 语境遗留的 hydration 术语漂移,以及 tagged template literals 在 Deno fmt 上的 上游兼容问题。
引入可选的 .less 文件格式。编译器在 build time 将它转换成 vanilla Custom
Elements,让这类组件做到 0 KB framework runtime。 Lit 继续作为 adapter 存在,不作为 v0.7–v0.10
的阻塞项,也不在 v0.x 被草率移除。
| Layer | Before (Lit adapter) | After (.less compiler) |
|---|---|---|
| Runtime | Lit runtime for Lit-authored islands | 0 KB framework runtime for compiled Custom Elements |
| SSR | adapter-mediated rendering | LessJS DSD renderer / template strings |
| Upgrade | Custom Element upgrade | Custom Element upgrade |
| Build | esbuild + Lit semantics | standard TS/JS output |
| Tests | adapter tests required | compiler fixture tests required |
The route scanner already maps app/routes/*.ts to URL paths. Extend it to also
scan .less files. Page .less files render directly (template is the page). Island .less files
get lazy chunk treatment.
可能的配置形态是 compiler: 'lit' | 'kiss' | 'auto'。其中
auto 表示 .less 文件走编译器,.ts 组件继续走现有
adapter。v0.11.0 只应把它作为 alpha 能力引入;v1.0 是否默认启用仍是开放决策。
详见 ADR 0006。