发现于 #3965 的实施(PR #3998),不在该 PR 处理 —— 那一单改的是警告的去重和 catalog 内容,这一条是废弃本身的作用域问题。
现象
kind: 'html' 作者面(ADR-0080)把 JSX 标签名原样当成组件 type:
packages/sdui-parser/src/parse.ts:85 —— const node: SchemaElement = { type: tag, ...props }
packages/sdui-parser/src/index.ts:33 —— const allowedTags = new Set(Object.keys(manifest.components))
packages/components/src/renderers/layout/page.tsx:438-470 —— 白名单来自 ComponentRegistry.getKnownTypes(),裸 div 在内(所以 div 标签是合法的)
packages/components/src/renderers/basic/html-elements.tsx:15,36 —— 该模块的 TAGS 列表故意排除 div,注释写明「div / span / table / code / label 和语义分节标签已在别处注册」
于是一个 kind: 'html' 页面里写一个 div 标签 —— 完全合法、有意支持的写法 —— 编译出的就是 { "type": "div" },落到 basic/div.tsx 的废弃渲染器上,dev 构建下报一条「The div component is deprecated, use card / flex / container / stack / grid instead」。
作者对此无能为力:那几个替代类型没有一个是 html tier 里能写的等价标签,而且这条建议本身是给 JSON 作者面的。同族的 span 同理(basic/span.tsx)。
为什么归为 observation-class
参考位置
关联:#3965 / PR #3998(发现于此)
发现于 #3965 的实施(PR #3998),不在该 PR 处理 —— 那一单改的是警告的去重和 catalog 内容,这一条是废弃本身的作用域问题。
现象
kind: 'html'作者面(ADR-0080)把 JSX 标签名原样当成组件 type:packages/sdui-parser/src/parse.ts:85——const node: SchemaElement = { type: tag, ...props }packages/sdui-parser/src/index.ts:33——const allowedTags = new Set(Object.keys(manifest.components))packages/components/src/renderers/layout/page.tsx:438-470—— 白名单来自ComponentRegistry.getKnownTypes(),裸div在内(所以 div 标签是合法的)packages/components/src/renderers/basic/html-elements.tsx:15,36—— 该模块的 TAGS 列表故意排除 div,注释写明「div / span / table / code / label 和语义分节标签已在别处注册」于是一个
kind: 'html'页面里写一个 div 标签 —— 完全合法、有意支持的写法 —— 编译出的就是{ "type": "div" },落到basic/div.tsx的废弃渲染器上,dev 构建下报一条「The div component is deprecated, use card / flex / container / stack / grid instead」。作者对此无能为力:那几个替代类型没有一个是 html tier 里能写的等价标签,而且这条建议本身是给 JSON 作者面的。同族的
span同理(basic/span.tsx)。为什么归为 observation-class
console.warn,今天没有用户会撞到;PR fix(components): div 废弃提示每次模块加载只报一次;catalog 换类型那一半升级待定夺 (#3965) #3998 落地去重后,一页最多一条,连噪声都算不上了。div组件类型,docs 站每张缩略图都刷一条 deprecation warning #3965 第一半卡住的直接原因):既然 html tier 必须保留 div 作为词表成员,「全仓零div」永远不可能成为一条不变量,div也不可能真正退休。examples/schema-catalog: 48 个示例仍用已废弃的div组件类型,docs 站每张缩略图都刷一条 deprecation warning #3965 的 catalog sweep 因此需要先有一个决定 —— 补一个中性容器类型(如box)、还是收窄这条废弃承认残余div合法。三选项与两轴分析见 PR fix(components): div 废弃提示每次模块加载只报一次;catalog 换类型那一半升级待定夺 (#3965) #3998 正文。参考位置
packages/components/src/renderers/basic/div.tsx(废弃警告;PR fix(components): div 废弃提示每次模块加载只报一次;catalog 换类型那一半升级待定夺 (#3965) #3998 已加去重,作用域未改)packages/components/src/renderers/basic/span.tsx(同族)@objectstack/spec的element:*词表里既没有div也没有box——div是 objectui 本地ui命名空间的类型,所以这是本仓自己的公共契约取舍,不是 spec 层的。关联:#3965 / PR #3998(发现于此)