Skip to content

模板能力矩阵

指令支持矩阵

指令状态典型转换行为主要限制
v-if / ...支持生成条件表达式/分支节点v-else(-if) 必须紧邻有效分支
v-for支持生成 mapObject.entries(...).map(...)源表达式需可分析
v-on / @支持映射到 React 事件属性-
v-model支持生成值绑定 + React 事件不同元素/组件语义需校验
v-show支持生成 style 显隐表达式与原 style 合并时需关注覆盖顺序
v-html支持转为 dangerouslySetInnerHTML需自行保证内容安全
v-text支持转为文本节点输出-
v-slot / #部分支持生成 children 或回调 slot动态 slot key/prop 可能降级
v-memo / v-once支持生成 useMemo 路径-
is / :is支持动态组件走 Component 适配动态值需可分析
pre不支持-无法从解析器得到该节点

组件支持矩阵

类型状态备注
Transition支持子节点结构有规则校验
TransitionGroup支持需配合 key 使用,但编译器会自动注入
KeepAlive支持依赖 runtime 适配
Teleport支持依赖 runtime 适配
Suspense支持依赖 runtime 适配
Component支持动态组件,依赖 runtime 适配
RouterLink / RouterView支持与路由工程接入共同生效

告警与降级清单

  1. 未知指令:会告警
  2. 出现不可分析的 Vue $xxx 运行时变量:会报错
  3. 动态键与动态 slot 场景:可能降级为保守输出
  4. Transition 结构不符合预期:会告警或报错

推荐写法 vs 高风险写法

推荐:

vue
<button @click="increment">+1</button>
<div v-if="visible">A</div>
<div v-else>B</div>

高风险:

vue
<div v-else>orphan else</div>
<slot :[dynamicKey]="value"></slot>

实操建议

  • 优先显式、可读、可分析的模板表达式
  • 把所有模板告警当成发布前阻塞项
  • 路由相关模板问题联动查看 路由适配

Released under the MIT License