Files

40 lines
1.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Module SpecVabMenu
module:
id: vab-menu
name: VabMenu菜单体系
type: ui
entrypoints:
- library/components/VabMenu/index.vue
- library/components/VabMenu/components/VabMenuItem.vue
- library/components/VabMenu/components/VabSubMenu.vue
public_api:
concept:
- "递归渲染菜单VabMenu 根据子路由可见性选择渲染 VabSubMenu 或 VabMenuItem"
- "点击菜单:根据 meta.target/_blank、外链/内链、同路由刷新等逻辑进行跳转或触发 reload"
usage_examples:
- "布局组件中引入 VabMenu配合路由 meta 与权限渲染导航"
dependency_closure:
runtime:
- "vue-routeruseRoute/useRouter跳转/判断当前路由)"
- "store-settingscollapse/device/theme(layout) + foldSideBar移动端点击收起"
- "plugin-vabinject('$pub')(同路由点击触发 $pub('reload-router-view')"
- "configisHashRouterModehash 模式下 _blank 打开内部路由)"
- "utils/validateisExternal外链判断"
- "i18ntranslate菜单 title"
- "Element Plusel-menu-item/el-sub-menu/el-tag"
- "VabIcon"
acceptance:
- "item.children 中存在可见子路由时渲染 VabSubMenu否则渲染 VabMenuItem"
- "meta.target === '_blank' 时按外链/内链规则在新窗口打开"
- "点击当前已激活路由时触发 $pub('reload-router-view')"
pitfalls:
- "组件内部使用 webpack require.context 自动注册子组件;迁移到非 webpack 构建器需等效替代"
- "Element Plus 关于 teleported 的历史兼容问题:弹层渲染到 body 下时需要全局样式配合(见 VabMenu/index.vue 注释)"
- "如果菜单权限依赖 ACL/指令v-permissions/hasPermission迁移时必须把相关依赖一起带走"