阅读时间:1 分钟
0 字
页面 Route
页面 Route 就是页面里的 <route lang="json"> 配置。
它决定了:
text
页面标题
是否需要登录
是否需要权限
是否挂中间件
使用哪个 layout
是否是 tabBar 页面推荐写法
vue
<route lang="json">
{
"title": "受保护页面",
"auth": true,
"permission": "system.admin"
}
</route>这就是 src/modules/*/pages/*.vue 的推荐写法。
常用字段
text
name => 页面名
path => 页面路径
module => 所属模块
title => 页面标题
auth => 是否需要登录
guestOnly => 是否仅游客可访问
middleware => 中间件名数组
permission => 权限标识或权限数组
layout => 页面布局
tabBar => 是否是 tabBar 页面
keepAlive => 是否缓存
params => 路由参数定义path / name / module 默认怎么来
如果你没有显式填写,会按文件路径自动推导。
text
src/modules/feature/pages/secure.vue默认会变成:
text
path => /pages/feature/secure
module => feature
name => feature.secure所以日常开发里通常不用重复手写这三个字段。
layout 从哪里来
text
优先用页面里显式声明的 layout
否则继承模块入口的 defaultLayoutauth / guestOnly / permission
auth
json
{
"auth": true
}表示页面需要登录。
guestOnly
json
{
"guestOnly": true
}表示登录后不应该再访问当前页,典型就是登录页。
permission
json
{
"permission": "system.admin"
}表示页面还需要额外权限校验。
middleware
如果你想显式追加模块中间件:
json
{
"middleware": ["auth", "audit"]
}运行时会把它和根据 auth / guestOnly / permission 自动推导出来的中间件一起合并后执行。
definePage 是什么
你会在自动生成的 src/pages/* 里看到:
ts
definePage({
title: '受保护页面',
auth: true,
path: 'pages/feature/secure',
module: 'feature',
name: 'feature.secure',
})它属于自动生成层的静态声明,不是业务页主要手写入口。
日常业务仍然优先写 <route lang="json">。