后端菜单怎样找到页面组件
本文导航

后端菜单怎样找到页面组件
addAsyncRoutes 拿到菜单节点之后:
- 如果
meta.frameSrc有值,组件用内置 iframe,不再找 Vue 文件。 - 否则取
component,空的话用path。 - 在「框架
src/views的 glob」加上「子系统改写后的 viewModules」里做 includes,取第一个命中的加载函数,赋给route.component。
匹配是字符串包含,不是相等。/order/list/index 可以命中 /order/list/index.vue。反过来,键太短也会误伤:如果有人注册了键 /index.vue,很多路径都会先命中它。
一个对得上的例子
子系统:
viewModulesPathPrefix: "/order"
// ./views/list/index.vue → /order/list/index.vue
后端菜单(owl 的 MenuOption):
router.MenuOption{
ComponentName: "OrderList",
Path: "/order/list/index",
}
ComponentName 变成路由 name。Path 用来匹配视图。两边都写 /order/list/index 这一段。
对不上时的现象
- 路由加进去了,地址能变,页面区域空白:component 没有匹配到加载函数。
- 打开了别的页面:includes 命中了更短的键。把前缀写完整,避免多个子系统共用同一段路径。
- 控制台没有异常:匹配失败不是抛错,是组件为空。
框架核心视图的 glob 键带 /src/views。业务页不要指望用 /src/views/foo 去对子系统文件,子系统文件的键是前缀加相对路径。
评论
加载评论中…