Lesson 06 · 路由与窗口
「为什么我进不去这个页面」「为什么点了弹确认框」——答案都在这一课。
前四课都在讲「一个页面内部」。这一课讲页面之间:谁能进、怎么进、进的时候被拦了什么。
排在第 6 位是因为它是排障的第二大来源 —— 用户报的问题里,「打不开」「点了没反应」有相当一部分根本不是业务逻辑,是守卫或窗口的事。
ConstantRouterMap(登录页等,静态)vs
DynamicRouterMap(业务页,登录后注册),src/router/index.ts
generateRoutes() 到底做了什么。src/store/modules/permission.ts:37-56 —— 只是 clone
一遍加个
404,零权限过滤。为什么「菜单看不见」≠「进不去」
meta.showMenu(components/Menu/src/Menu.vue:47)和
meta.hidden(Menu/src/helper.ts:25)分别由谁消费 —— 为什么所有
*_edit 路由两个都写了
src/permission.ts 的
beforeEach:多窗口分流 docView()、CONFIRM_ROUTES
拦截、_edit 页离开确认、token 检查
next() 重复调用问题。needConfirm 分支调完 next(false) 没有
return,后面继续跑
create-smallWin(views/GameEditor/Expert/index.vue:238)→ 主进程
createSmallWindow() → 会话靠
transfer-session-data IPC 传过去 → 小窗里的守卫走
docView() 分支
smallWindow 变量被覆写(❌)、小窗
setWindowOpenHandler 解构错字段(❌)
src/router/index.ts,找到
/game 那一段,数一下有多少个 *_edit 路由 ——
它们都同时写着 showMenu: true 和 hidden: true
#/base/baseHome),观察你能进去 ——
这就是零权限过滤的直接证据
/expert/* 之间跳转到表编辑页,观察确认框弹出来src/permission.ts,把
beforeEach 整个读一遍,画出它的分支