[{"data":1,"prerenderedAt":2368},["ShallowReactive",2],{"$f36w0snpoc33ft":3,"\u002Fdocs\u002Fmanual\u002Fpage\u002Fmiddleware":357,"\u002Fdocs\u002Fmanual\u002Fpage\u002Fmiddleware-surround":2363},[4,44,136,208,230,346],{"title":5,"titleTemplate":6,"icon":7,"redirect":8,"path":9,"stem":10,"children":11,"page":28},"起步指南",null,"i-lucide:rocket","\u002Fdocs\u002Fguide\u002Foverview\u002Fintroduction","\u002Fdocs\u002Fguide","docs\u002F1.guide",[12,29],{"title":13,"titleTemplate":6,"icon":14,"defaultOpen":15,"path":16,"stem":17,"children":18,"page":28},"概览","i-lucide:book-open",true,"\u002Fdocs\u002Fguide\u002Foverview","docs\u002F1.guide\u002F1.overview",[19,23],{"title":20,"path":8,"stem":21,"titleTemplate":6,"icon":22},"介绍","docs\u002F1.guide\u002F1.overview\u002F01.introduction","i-lucide:bot",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"安装","\u002Fdocs\u002Fguide\u002Foverview\u002Finstallation","docs\u002F1.guide\u002F1.overview\u002F02.installation","i-lucide:download",false,{"title":30,"titleTemplate":6,"icon":22,"path":31,"stem":32,"children":33,"page":28},"Agents","\u002Fdocs\u002Fguide\u002Fagents","docs\u002F1.guide\u002F2.agents",[34,39],{"title":35,"path":36,"stem":37,"titleTemplate":6,"icon":38},"LLMs.txt","\u002Fdocs\u002Fguide\u002Fagents\u002Fllms-txt","docs\u002F1.guide\u002F2.agents\u002F01.llms-txt","i-lucide:file-text",{"title":40,"path":41,"stem":42,"titleTemplate":6,"icon":43},"Skills","\u002Fdocs\u002Fguide\u002Fagents\u002Fskills","docs\u002F1.guide\u002F2.agents\u002F02.skills","i-lucide:sparkles",{"title":45,"path":46,"stem":47,"children":48,"titleTemplate":6,"icon":51},"使用手册","\u002Fdocs\u002Fmanual","docs\u002F2.manual\u002F00.index",[49,52,57,62,78,104,125],{"title":45,"path":46,"stem":47,"titleTemplate":50,"icon":51},"%s | Oiyo","i-lucide:book-open-check",{"title":53,"path":54,"stem":55,"titleTemplate":6,"icon":56},"工程接入","\u002Fdocs\u002Fmanual\u002Fengineering","docs\u002F2.manual\u002F01.engineering","i-lucide:plug",{"title":58,"path":59,"stem":60,"titleTemplate":6,"icon":61},"配置系统","\u002Fdocs\u002Fmanual\u002Fconfiguration","docs\u002F2.manual\u002F02.configuration","i-lucide:sliders-horizontal",{"title":63,"titleTemplate":6,"defaultOpen":15,"icon":64,"path":65,"stem":66,"children":67,"page":28},"扫描导入","i-lucide:scan-line","\u002Fdocs\u002Fmanual\u002Fscan","docs\u002F2.manual\u002F03.scan",[68,73],{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"API 导入","\u002Fdocs\u002Fmanual\u002Fscan\u002Fapi","docs\u002F2.manual\u002F03.scan\u002F01.api","i-lucide:import",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"组件注册","\u002Fdocs\u002Fmanual\u002Fscan\u002Fcomponents","docs\u002F2.manual\u002F03.scan\u002F02.components","i-lucide:blocks",{"title":79,"titleTemplate":6,"defaultOpen":15,"icon":80,"path":81,"stem":82,"children":83,"page":28},"路由系统","i-lucide:map","\u002Fdocs\u002Fmanual\u002Fpage","docs\u002F2.manual\u002F04.page",[84,89,94,99],{"title":85,"path":86,"stem":87,"titleTemplate":6,"icon":88},"页面注册","\u002Fdocs\u002Fmanual\u002Fpage\u002Fregister","docs\u002F2.manual\u002F04.page\u002F01.register","i-lucide:file-box",{"title":90,"path":91,"stem":92,"titleTemplate":6,"icon":93},"页面元信息","\u002Fdocs\u002Fmanual\u002Fpage\u002Fmeta","docs\u002F2.manual\u002F04.page\u002F02.meta","i-lucide:file-cog",{"title":95,"path":96,"stem":97,"titleTemplate":6,"icon":98},"全局页面配置","\u002Fdocs\u002Fmanual\u002Fpage\u002Fconfig","docs\u002F2.manual\u002F04.page\u002F03.config","i-lucide:palette",{"title":100,"path":101,"stem":102,"titleTemplate":6,"icon":103},"页面中间件","\u002Fdocs\u002Fmanual\u002Fpage\u002Fmiddleware","docs\u002F2.manual\u002F04.page\u002F04.middleware","i-lucide:shield-check",{"title":105,"titleTemplate":6,"defaultOpen":15,"icon":106,"path":107,"stem":108,"children":109,"page":28},"视图结构","i-lucide:panels-top-left","\u002Fdocs\u002Fmanual\u002Fshell","docs\u002F2.manual\u002F05.shell",[110,115,120],{"title":111,"path":112,"stem":113,"titleTemplate":6,"icon":114},"应用骨架","\u002Fdocs\u002Fmanual\u002Fshell\u002Fapp-shell","docs\u002F2.manual\u002F05.shell\u002F01.app-shell","i-lucide:app-window",{"title":116,"path":117,"stem":118,"titleTemplate":6,"icon":119},"根上下文","\u002Fdocs\u002Fmanual\u002Fshell\u002Froot-context","docs\u002F2.manual\u002F05.shell\u002F02.root-context","i-lucide:network",{"title":121,"path":122,"stem":123,"titleTemplate":6,"icon":124},"布局系统","\u002Fdocs\u002Fmanual\u002Fshell\u002Flayout","docs\u002F2.manual\u002F05.shell\u002F03.layout","i-lucide:layout-template",{"title":126,"titleTemplate":6,"defaultOpen":15,"icon":127,"path":128,"stem":129,"children":130,"page":28},"数据获取","i-lucide:arrow-down-up","\u002Fdocs\u002Fmanual\u002Fdata","docs\u002F2.manual\u002F06.data",[131],{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"网络请求","\u002Fdocs\u002Fmanual\u002Fdata\u002Fhttp","docs\u002F2.manual\u002F06.data\u002F01.http","i-lucide:globe",{"title":137,"path":138,"stem":139,"children":140,"titleTemplate":6,"icon":207},"项目结构","\u002Fdocs\u002Fstructure","docs\u002F3.structure\u002F0.index",[141,143,148,193,197,202],{"title":137,"path":138,"stem":139,"titleTemplate":50,"icon":142},"i-lucide-layers",{"title":144,"path":145,"stem":146,"titleTemplate":6,"icon":147},".oiyo","\u002Fdocs\u002Fstructure\u002Foiyo","docs\u002F3.structure\u002F1.oiyo","i-catppuccin:folder-temp",{"title":149,"titleTemplate":6,"defaultOpen":15,"icon":150,"path":151,"stem":152,"children":153,"page":28},"src","i-catppuccin:folder-src","\u002Fdocs\u002Fstructure\u002Fsrc","docs\u002F3.structure\u002F1.src",[154,159,164,169,174,179,184,189],{"title":155,"path":156,"stem":157,"titleTemplate":6,"icon":158},"components","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fcomponents","docs\u002F3.structure\u002F1.src\u002F1.components","i-catppuccin:folder-components",{"title":160,"path":161,"stem":162,"titleTemplate":6,"icon":163},"composables","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fcomposables","docs\u002F3.structure\u002F1.src\u002F1.composables","i-catppuccin:folder-composables",{"title":165,"path":166,"stem":167,"titleTemplate":6,"icon":168},"layouts","\u002Fdocs\u002Fstructure\u002Fsrc\u002Flayouts","docs\u002F3.structure\u002F1.src\u002F1.layouts","i-catppuccin:folder-layouts",{"title":170,"path":171,"stem":172,"titleTemplate":6,"icon":173},"packages","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpackages","docs\u002F3.structure\u002F1.src\u002F1.packages","i-catppuccin:folder-packages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"pages","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpages","docs\u002F3.structure\u002F1.src\u002F1.pages","i-catppuccin:folder-views",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"App.vue","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fapp","docs\u002F3.structure\u002F1.src\u002F2.app","i-catppuccin:vue",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"pages.config.ts","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpages-config","docs\u002F3.structure\u002F1.src\u002F3.pages-config","i-catppuccin:typescript",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":188},"manifest.config.ts","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fmanifest-config","docs\u002F3.structure\u002F1.src\u002F4.manifest-config",{"title":194,"path":195,"stem":196,"titleTemplate":6,"icon":188},"oiyo.config.ts","\u002Fdocs\u002Fstructure\u002Foiyo-config","docs\u002F3.structure\u002F3.oiyo-config",{"title":198,"path":199,"stem":200,"titleTemplate":6,"icon":201},"package.json","\u002Fdocs\u002Fstructure\u002Fpackage","docs\u002F3.structure\u002F3.package","i-catppuccin:package-json",{"title":203,"path":204,"stem":205,"titleTemplate":6,"icon":206},"tsconfig.json","\u002Fdocs\u002Fstructure\u002Ftsconfig","docs\u002F3.structure\u002F3.tsconfig","i-catppuccin:typescript-config","i-lucide:layers",{"title":209,"titleTemplate":6,"icon":210,"redirect":211,"path":212,"stem":213,"children":214,"page":28},"核心概念","i-lucide:leaf","\u002Fdocs\u002Fconcept\u002Fapp","\u002Fdocs\u002Fconcept","docs\u002F4.concept",[215,219,223,226],{"title":216,"path":211,"stem":217,"titleTemplate":6,"icon":218},"根部视图","docs\u002F4.concept\u002F01.app","i-lucide:route",{"title":220,"path":221,"stem":222,"titleTemplate":6,"icon":80},"自动路由","\u002Fdocs\u002Fconcept\u002Froute","docs\u002F4.concept\u002F02.route",{"title":121,"path":224,"stem":225,"titleTemplate":6,"icon":124},"\u002Fdocs\u002Fconcept\u002Flayout","docs\u002F4.concept\u002F03.layout",{"title":227,"path":228,"stem":229,"titleTemplate":6,"icon":64},"自动导入","\u002Fdocs\u002Fconcept\u002Fauto-imports","docs\u002F4.concept\u002F04.auto-imports",{"title":231,"path":232,"stem":233,"children":234,"titleTemplate":6,"icon":345},"API","\u002Fdocs\u002Fapi","docs\u002F5.api\u002F00.index",[235,237,255,265,295,313,327],{"title":236,"path":232,"stem":233,"titleTemplate":50},"API 参考",{"title":238,"titleTemplate":6,"defaultOpen":15,"icon":239,"path":240,"stem":241,"children":242,"page":28},"配置","i-lucide:settings","\u002Fdocs\u002Fapi\u002Fconfig","docs\u002F5.api\u002F01.config",[243,247,251],{"title":244,"path":245,"stem":246,"titleTemplate":6},"defineOiyoConfig","\u002Fdocs\u002Fapi\u002Fconfig\u002Fdefine-oiyo-config","docs\u002F5.api\u002F01.config\u002F01.define-oiyo-config",{"title":248,"path":249,"stem":250,"titleTemplate":6},"definePagesConfig","\u002Fdocs\u002Fapi\u002Fconfig\u002Fdefine-pages-config","docs\u002F5.api\u002F01.config\u002F02.define-pages-config",{"title":252,"path":253,"stem":254,"titleTemplate":6},"defineManifestConfig","\u002Fdocs\u002Fapi\u002Fconfig\u002Fdefine-manifest-config","docs\u002F5.api\u002F01.config\u002F03.define-manifest-config",{"title":256,"titleTemplate":6,"defaultOpen":15,"icon":257,"path":258,"stem":259,"children":260,"page":28},"运行时","i-lucide:shrub","\u002Fdocs\u002Fapi\u002Fruntime","docs\u002F5.api\u002F02.runtime",[261],{"title":262,"path":263,"stem":264,"titleTemplate":6},"Vue \u002F UniApp","\u002Fdocs\u002Fapi\u002Fruntime\u002Freference","docs\u002F5.api\u002F02.runtime\u002F01.reference",{"title":266,"titleTemplate":6,"defaultOpen":15,"icon":267,"path":268,"stem":269,"children":270,"page":28},"实用工具","i-lucide:wrench","\u002Fdocs\u002Fapi\u002Futils","docs\u002F5.api\u002F03.utils",[271,275,279,283,287,291],{"title":272,"path":273,"stem":274,"titleTemplate":6},"http","\u002Fdocs\u002Fapi\u002Futils\u002Fhttp","docs\u002F5.api\u002F03.utils\u002F00.http",{"title":276,"path":277,"stem":278,"titleTemplate":6},"createHttp","\u002Fdocs\u002Fapi\u002Futils\u002Fcreate-http","docs\u002F5.api\u002F03.utils\u002F01.create-http",{"title":280,"path":281,"stem":282,"titleTemplate":6},"createHttpAborter","\u002Fdocs\u002Fapi\u002Futils\u002Fcreate-http-aborter","docs\u002F5.api\u002F03.utils\u002F02.create-http-aborter",{"title":284,"path":285,"stem":286,"titleTemplate":6},"defineRouteMiddleware","\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-route-middleware","docs\u002F5.api\u002F03.utils\u002F03.define-route-middleware",{"title":288,"path":289,"stem":290,"titleTemplate":6},"goTo","\u002Fdocs\u002Fapi\u002Futils\u002Fgo-to","docs\u002F5.api\u002F03.utils\u002F04.go-to",{"title":292,"path":293,"stem":294,"titleTemplate":6},"abortNavigation","\u002Fdocs\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.api\u002F03.utils\u002F05.abort-navigation",{"title":296,"titleTemplate":6,"defaultOpen":15,"icon":297,"path":298,"stem":299,"children":300,"page":28},"宏","i-lucide:wand","\u002Fdocs\u002Fapi\u002Fmacro","docs\u002F5.api\u002F04.macro",[301,305,309],{"title":302,"path":303,"stem":304,"titleTemplate":6},"defineRootContext","\u002Fdocs\u002Fapi\u002Fmacro\u002Fdefine-root-context","docs\u002F5.api\u002F04.macro\u002F01.define-root-context",{"title":306,"path":307,"stem":308,"titleTemplate":6},"useRootContext","\u002Fdocs\u002Fapi\u002Fmacro\u002Fuse-root-context","docs\u002F5.api\u002F04.macro\u002F02.use-root-context",{"title":310,"path":311,"stem":312,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002Fapi\u002Fmacro\u002Fdefine-page-meta","docs\u002F5.api\u002F04.macro\u002F03.define-page-meta",{"title":314,"titleTemplate":6,"defaultOpen":15,"icon":315,"path":316,"stem":317,"children":318,"page":28},"组件","i-lucide:component","\u002Fdocs\u002Fapi\u002Fcomponents","docs\u002F5.api\u002F05.components",[319,323],{"title":320,"path":321,"stem":322,"titleTemplate":6},"\u003COiyoPage>","\u002Fdocs\u002Fapi\u002Fcomponents\u002Foiyo-page","docs\u002F5.api\u002F05.components\u002F01.oiyo-page",{"title":324,"path":325,"stem":326,"titleTemplate":6},"\u003COiyoLayout>","\u002Fdocs\u002Fapi\u002Fcomponents\u002Foiyo-layout","docs\u002F5.api\u002F05.components\u002F02.oiyo-layout",{"title":328,"titleTemplate":6,"defaultOpen":15,"icon":329,"path":330,"stem":331,"children":332,"page":28},"命令","i-lucide:command","\u002Fdocs\u002Fapi\u002Fcli","docs\u002F5.api\u002F06.cli",[333,337,341],{"title":334,"path":335,"stem":336,"titleTemplate":6},"oiyo prepare","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-prepare","docs\u002F5.api\u002F06.cli\u002F00.oiyo-prepare",{"title":338,"path":339,"stem":340,"titleTemplate":6},"oiyo dev","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-dev","docs\u002F5.api\u002F06.cli\u002F01.oiyo-dev",{"title":342,"path":343,"stem":344,"titleTemplate":6},"oiyo build","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-build","docs\u002F5.api\u002F06.cli\u002F02.oiyo-build","i-lucide:braces",{"title":347,"titleTemplate":6,"icon":348,"redirect":349,"path":350,"stem":351,"children":352,"page":28},"沟通交流","i-lucide:message-circle-question","\u002Fdocs\u002Fcommunity\u002Fassist","\u002Fdocs\u002Fcommunity","docs\u002F9.community",[353],{"title":354,"path":349,"stem":355,"titleTemplate":6,"icon":356},"加群互助","docs\u002F9.community\u002F01.assist","i-lucide:scan-qr-code",{"id":358,"title":100,"body":359,"description":2357,"extension":2358,"meta":2359,"navigation":2360,"path":101,"seo":2361,"stem":102,"titleTemplate":6,"__hash__":2362},"docs\u002Fdocs\u002F2.manual\u002F04.page\u002F04.middleware.md",{"type":360,"value":361,"toc":2339},"minimark",[362,370,382,386,396,407,418,546,549,563,576,579,583,590,596,807,813,816,822,1020,1026,1100,1103,1170,1181,1184,1187,1202,1205,1208,1215,1250,1253,1264,1363,1377,1381,1463,1466,1472,1475,1489,1531,1535,1541,1564,1568,1615,1621,1639,1642,1645,1656,1729,1732,1761,1772,1775,1778,1947,1950,2123,2126,2192,2195,2198,2305,2308,2322,2325,2335],[363,364,365,366,369],"p",{},"页面中间件用于在进入页面前执行登录校验、权限校验、参数检查、页面重定向等逻辑。它和页面文件、",[367,368,310],"code",{}," 配合使用：中间件负责导航判断，页面负责声明需要哪些中间件。",[371,372,373],"tip",{},[363,374,375,376,381],{},"中间件是页面导航的守卫，不是请求拦截器。需要处理接口请求前后的统一逻辑时，请使用 ",[377,378,379],"a",{"href":133},[367,380,272],{}," 提供的生命周期钩子。",[383,384,385],"h2",{"id":385},"定义中间件",[363,387,388,389,392,393,395],{},"中间件文件放在项目的 ",[367,390,391],{},"src\u002Fmiddlewares"," 目录下，并通过默认导出 ",[367,394,284],{},"。",[397,398,405],"pre",{"className":399,"code":401,"filename":402,"language":403,"meta":404},[400],"language-text","src\n└─ middlewares\n   ├─ auth.global.ts\n   └─ permission.ts\n","目录结构","text","",[367,406,401],{"__ignoreMap":404},[363,408,409,410,413,414,417],{},"中间件接收目标路由 ",[367,411,412],{},"to"," 和来源路由 ",[367,415,416],{},"from","：",[397,419,423],{"className":420,"code":421,"language":422,"meta":404,"style":404},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineRouteMiddleware((to, from) => {\n  console.log(\"目标页面：\", to.path);\n  console.log(\"当前页面：\", from.path);\n});\n","ts",[367,424,425,467,506,536],{"__ignoreMap":404},[426,427,430,434,437,441,445,448,451,454,457,460,464],"span",{"class":428,"line":429},"line",1,[426,431,433],{"class":432},"s8R28","export",[426,435,436],{"class":432}," default",[426,438,440],{"class":439},"s3cPz"," defineRouteMiddleware",[426,442,444],{"class":443},"sZSNi","(",[426,446,444],{"class":447},"sDfIl",[426,449,412],{"class":450},"s1nJG",[426,452,453],{"class":447},",",[426,455,456],{"class":450}," from",[426,458,459],{"class":447},")",[426,461,463],{"class":462},"smZ93"," =>",[426,465,466],{"class":447}," {\n",[426,468,470,473,476,479,482,485,489,491,493,496,498,501,503],{"class":428,"line":469},2,[426,471,472],{"class":443},"  console",[426,474,475],{"class":447},".",[426,477,478],{"class":439},"log",[426,480,444],{"class":481},"sRlkE",[426,483,484],{"class":447},"\"",[426,486,488],{"class":487},"sGFVr","目标页面：",[426,490,484],{"class":447},[426,492,453],{"class":447},[426,494,495],{"class":443}," to",[426,497,475],{"class":447},[426,499,500],{"class":443},"path",[426,502,459],{"class":481},[426,504,505],{"class":447},";\n",[426,507,509,511,513,515,517,519,522,524,526,528,530,532,534],{"class":428,"line":508},3,[426,510,472],{"class":443},[426,512,475],{"class":447},[426,514,478],{"class":439},[426,516,444],{"class":481},[426,518,484],{"class":447},[426,520,521],{"class":487},"当前页面：",[426,523,484],{"class":447},[426,525,453],{"class":447},[426,527,456],{"class":443},[426,529,475],{"class":447},[426,531,500],{"class":443},[426,533,459],{"class":481},[426,535,505],{"class":447},[426,537,539,542,544],{"class":428,"line":538},4,[426,540,541],{"class":447},"}",[426,543,459],{"class":443},[426,545,505],{"class":447},[363,547,548],{},"其中：",[550,551,552,558],"ul",{},[553,554,555,557],"li",{},[367,556,412],{}," 表示即将进入的目标页面；",[553,559,560,562],{},[367,561,416],{}," 表示当前页面，可用于根据来源页面决定是否放行。",[564,565,567],"callout",{"color":566,"icon":345,"to":285},"neutral",[363,568,569,571,572,575],{},[367,570,284],{}," API 参考：查看 ",[367,573,574],{},"to\u002Ffrom"," 包含的字段",[383,577,578],{"id":578},"中间件类型",[580,581,582],"h3",{"id":582},"全局中间件",[363,584,585,586,589],{},"文件名以 ",[367,587,588],{},".global"," 结尾的中间件会应用到所有页面，不需要在页面中声明：",[397,591,594],{"className":592,"code":593,"language":403,"meta":404},[400],"src\u002Fmiddlewares\u002Fauth.global.ts\n",[367,595,593],{"__ignoreMap":404},[397,597,600],{"className":420,"code":598,"filename":599,"language":422,"meta":404,"style":404},"const WHITE_LIST = [\"\u002Fpages\u002Findex\u002Findex\", \"\u002Fpages\u002Flogin\u002Flogin\"];\n\nexport default defineRouteMiddleware((to, from) => {\n  if (WHITE_LIST.includes(to.path)) {\n    return;\n  }\n\n  if (!uni.getStorageSync(\"token\")) {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", {\n      replace: true,\n    });\n  }\n});\n","src\u002Fmiddlewares\u002Fauth.global.ts",[367,601,602,638,643,667,697,705,711,716,747,767,783,793,798],{"__ignoreMap":404},[426,603,604,607,610,613,616,618,621,623,625,628,631,633,636],{"class":428,"line":429},[426,605,606],{"class":462},"const",[426,608,609],{"class":443}," WHITE_LIST ",[426,611,612],{"class":447},"=",[426,614,615],{"class":443}," [",[426,617,484],{"class":447},[426,619,620],{"class":487},"\u002Fpages\u002Findex\u002Findex",[426,622,484],{"class":447},[426,624,453],{"class":447},[426,626,627],{"class":447}," \"",[426,629,630],{"class":487},"\u002Fpages\u002Flogin\u002Flogin",[426,632,484],{"class":447},[426,634,635],{"class":443},"]",[426,637,505],{"class":447},[426,639,640],{"class":428,"line":469},[426,641,642],{"emptyLinePlaceholder":15},"\n",[426,644,645,647,649,651,653,655,657,659,661,663,665],{"class":428,"line":508},[426,646,433],{"class":432},[426,648,436],{"class":432},[426,650,440],{"class":439},[426,652,444],{"class":443},[426,654,444],{"class":447},[426,656,412],{"class":450},[426,658,453],{"class":447},[426,660,456],{"class":450},[426,662,459],{"class":447},[426,664,463],{"class":462},[426,666,466],{"class":447},[426,668,669,672,675,678,680,683,685,687,689,691,694],{"class":428,"line":538},[426,670,671],{"class":432},"  if",[426,673,674],{"class":481}," (",[426,676,677],{"class":443},"WHITE_LIST",[426,679,475],{"class":447},[426,681,682],{"class":439},"includes",[426,684,444],{"class":481},[426,686,412],{"class":443},[426,688,475],{"class":447},[426,690,500],{"class":443},[426,692,693],{"class":481},")) ",[426,695,696],{"class":447},"{\n",[426,698,700,703],{"class":428,"line":699},5,[426,701,702],{"class":432},"    return",[426,704,505],{"class":447},[426,706,708],{"class":428,"line":707},6,[426,709,710],{"class":447},"  }\n",[426,712,714],{"class":428,"line":713},7,[426,715,642],{"emptyLinePlaceholder":15},[426,717,719,721,723,726,729,731,734,736,738,741,743,745],{"class":428,"line":718},8,[426,720,671],{"class":432},[426,722,674],{"class":481},[426,724,725],{"class":447},"!",[426,727,728],{"class":443},"uni",[426,730,475],{"class":447},[426,732,733],{"class":439},"getStorageSync",[426,735,444],{"class":481},[426,737,484],{"class":447},[426,739,740],{"class":487},"token",[426,742,484],{"class":447},[426,744,693],{"class":481},[426,746,696],{"class":447},[426,748,750,752,755,757,759,761,763,765],{"class":428,"line":749},9,[426,751,702],{"class":432},[426,753,754],{"class":439}," goTo",[426,756,444],{"class":481},[426,758,484],{"class":447},[426,760,630],{"class":487},[426,762,484],{"class":447},[426,764,453],{"class":447},[426,766,466],{"class":447},[426,768,770,773,776,780],{"class":428,"line":769},10,[426,771,772],{"class":481},"      replace",[426,774,775],{"class":447},":",[426,777,779],{"class":778},"sbKd-"," true",[426,781,782],{"class":447},",\n",[426,784,786,789,791],{"class":428,"line":785},11,[426,787,788],{"class":447},"    }",[426,790,459],{"class":481},[426,792,505],{"class":447},[426,794,796],{"class":428,"line":795},12,[426,797,710],{"class":447},[426,799,801,803,805],{"class":428,"line":800},13,[426,802,541],{"class":447},[426,804,459],{"class":443},[426,806,505],{"class":447},[808,809,810],"note",{},[363,811,812],{},"全局中间件始终先于页面声明的具名中间件执行。",[580,814,815],{"id":815},"具名中间件",[363,817,818,819,417],{},"创建 ",[367,820,821],{},"src\u002Fmiddlewares\u002Fpermission.ts",[397,823,825],{"className":420,"code":824,"filename":821,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware(async (to, from) => {\n  const user = await getCurrentUser();\n\n  if (!user) {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", { replace: true });\n  }\n\n  if (!user.hasPermission && to.path.startsWith(\"\u002Fpages\u002Fadmin\u002F\")) {\n    return abortNavigation(new Error(\"没有访问权限\"));\n  }\n});\n",[367,826,827,854,876,880,896,929,933,937,979,1008,1012],{"__ignoreMap":404},[426,828,829,831,833,835,837,840,842,844,846,848,850,852],{"class":428,"line":429},[426,830,433],{"class":432},[426,832,436],{"class":432},[426,834,440],{"class":439},[426,836,444],{"class":443},[426,838,839],{"class":462},"async",[426,841,674],{"class":447},[426,843,412],{"class":450},[426,845,453],{"class":447},[426,847,456],{"class":450},[426,849,459],{"class":447},[426,851,463],{"class":462},[426,853,466],{"class":447},[426,855,856,859,862,865,868,871,874],{"class":428,"line":469},[426,857,858],{"class":462},"  const",[426,860,861],{"class":443}," user",[426,863,864],{"class":447}," =",[426,866,867],{"class":432}," await",[426,869,870],{"class":439}," getCurrentUser",[426,872,873],{"class":481},"()",[426,875,505],{"class":447},[426,877,878],{"class":428,"line":508},[426,879,642],{"emptyLinePlaceholder":15},[426,881,882,884,886,888,891,894],{"class":428,"line":538},[426,883,671],{"class":432},[426,885,674],{"class":481},[426,887,725],{"class":447},[426,889,890],{"class":443},"user",[426,892,893],{"class":481},") ",[426,895,696],{"class":447},[426,897,898,900,902,904,906,908,910,912,915,918,920,922,925,927],{"class":428,"line":699},[426,899,702],{"class":432},[426,901,754],{"class":439},[426,903,444],{"class":481},[426,905,484],{"class":447},[426,907,630],{"class":487},[426,909,484],{"class":447},[426,911,453],{"class":447},[426,913,914],{"class":447}," {",[426,916,917],{"class":481}," replace",[426,919,775],{"class":447},[426,921,779],{"class":778},[426,923,924],{"class":447}," }",[426,926,459],{"class":481},[426,928,505],{"class":447},[426,930,931],{"class":428,"line":707},[426,932,710],{"class":447},[426,934,935],{"class":428,"line":713},[426,936,642],{"emptyLinePlaceholder":15},[426,938,939,941,943,945,947,949,952,955,957,959,961,963,966,968,970,973,975,977],{"class":428,"line":718},[426,940,671],{"class":432},[426,942,674],{"class":481},[426,944,725],{"class":447},[426,946,890],{"class":443},[426,948,475],{"class":447},[426,950,951],{"class":443},"hasPermission",[426,953,954],{"class":447}," &&",[426,956,495],{"class":443},[426,958,475],{"class":447},[426,960,500],{"class":443},[426,962,475],{"class":447},[426,964,965],{"class":439},"startsWith",[426,967,444],{"class":481},[426,969,484],{"class":447},[426,971,972],{"class":487},"\u002Fpages\u002Fadmin\u002F",[426,974,484],{"class":447},[426,976,693],{"class":481},[426,978,696],{"class":447},[426,980,981,983,986,988,991,994,996,998,1001,1003,1006],{"class":428,"line":749},[426,982,702],{"class":432},[426,984,985],{"class":439}," abortNavigation",[426,987,444],{"class":481},[426,989,990],{"class":447},"new",[426,992,993],{"class":439}," Error",[426,995,444],{"class":481},[426,997,484],{"class":447},[426,999,1000],{"class":487},"没有访问权限",[426,1002,484],{"class":447},[426,1004,1005],{"class":481},"))",[426,1007,505],{"class":447},[426,1009,1010],{"class":428,"line":769},[426,1011,710],{"class":447},[426,1013,1014,1016,1018],{"class":428,"line":785},[426,1015,541],{"class":447},[426,1017,459],{"class":443},[426,1019,505],{"class":447},[363,1021,1022,1023,1025],{},"页面模块中通过 ",[367,1024,310],{}," 使用：",[397,1027,1032],{"className":1028,"code":1029,"filename":1030,"language":1031,"meta":404,"style":404},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  middleware: \"permission\",\n});\n\u003C\u002Fscript>\n","src\u002Fpages\u002Fdashboard\u002Findex.vue","vue",[367,1033,1034,1059,1067,1083,1091],{"__ignoreMap":404},[426,1035,1036,1039,1042,1045,1048,1050,1052,1054,1056],{"class":428,"line":429},[426,1037,1038],{"class":447},"\u003C",[426,1040,1041],{"class":481},"script",[426,1043,1044],{"class":462}," setup",[426,1046,1047],{"class":462}," lang",[426,1049,612],{"class":447},[426,1051,484],{"class":447},[426,1053,422],{"class":487},[426,1055,484],{"class":447},[426,1057,1058],{"class":447},">\n",[426,1060,1061,1063,1065],{"class":428,"line":469},[426,1062,310],{"class":439},[426,1064,444],{"class":443},[426,1066,696],{"class":447},[426,1068,1069,1072,1074,1076,1079,1081],{"class":428,"line":508},[426,1070,1071],{"class":481},"  middleware",[426,1073,775],{"class":447},[426,1075,627],{"class":447},[426,1077,1078],{"class":487},"permission",[426,1080,484],{"class":447},[426,1082,782],{"class":447},[426,1084,1085,1087,1089],{"class":428,"line":538},[426,1086,541],{"class":447},[426,1088,459],{"class":443},[426,1090,505],{"class":447},[426,1092,1093,1096,1098],{"class":428,"line":699},[426,1094,1095],{"class":447},"\u003C\u002F",[426,1097,1041],{"class":481},[426,1099,1058],{"class":447},[363,1101,1102],{},"多个具名中间件可以使用数组，数组中的中间件会按照声明顺序执行：",[397,1104,1106],{"className":1028,"code":1105,"language":1031,"meta":404,"style":404},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  middleware: [\"permission\"],\n});\n\u003C\u002Fscript>\n",[367,1107,1108,1128,1136,1154,1162],{"__ignoreMap":404},[426,1109,1110,1112,1114,1116,1118,1120,1122,1124,1126],{"class":428,"line":429},[426,1111,1038],{"class":447},[426,1113,1041],{"class":481},[426,1115,1044],{"class":462},[426,1117,1047],{"class":462},[426,1119,612],{"class":447},[426,1121,484],{"class":447},[426,1123,422],{"class":487},[426,1125,484],{"class":447},[426,1127,1058],{"class":447},[426,1129,1130,1132,1134],{"class":428,"line":469},[426,1131,310],{"class":439},[426,1133,444],{"class":443},[426,1135,696],{"class":447},[426,1137,1138,1140,1142,1144,1146,1148,1150,1152],{"class":428,"line":508},[426,1139,1071],{"class":481},[426,1141,775],{"class":447},[426,1143,615],{"class":443},[426,1145,484],{"class":447},[426,1147,1078],{"class":487},[426,1149,484],{"class":447},[426,1151,635],{"class":443},[426,1153,782],{"class":447},[426,1155,1156,1158,1160],{"class":428,"line":538},[426,1157,541],{"class":447},[426,1159,459],{"class":443},[426,1161,505],{"class":447},[426,1163,1164,1166,1168],{"class":428,"line":699},[426,1165,1095],{"class":447},[426,1167,1041],{"class":481},[426,1169,1058],{"class":447},[808,1171,1172,1175],{},[363,1173,1174],{},"页面中声明的是具名中间件名称；中间件名称由文件路径决定，不包含文件扩展名：",[397,1176,1179],{"className":1177,"code":1178,"language":403,"meta":404},[400],"src\u002Fmiddlewares\u002Fpermission.ts -> permission\nsrc\u002Fmiddlewares\u002Fmember\u002Frequires.ts -> member-requires\n",[367,1180,1178],{"__ignoreMap":404},[383,1182,1183],{"id":1183},"工作方式",[363,1185,1186],{},"请求进入页面时，Oiyo 会按以下顺序执行：",[1188,1189,1190,1193,1199],"ol",{},[553,1191,1192],{},"先执行所有全局中间件；",[553,1194,1195,1196,1198],{},"再按页面 ",[367,1197,310],{}," 中声明的顺序执行具名中间件；",[553,1200,1201],{},"中间件根据返回的行为，引导当前导航放行\u002F重定向\u002F中止；",[383,1203,1204],{"id":1204},"导航行为",[580,1206,1207],{"id":1207},"放行",[363,1209,1210,1211,1214],{},"不返回值或返回 ",[367,1212,1213],{},"true","，继续执行后续中间件：",[397,1216,1218],{"className":420,"code":1217,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware(() => {\n  \u002F\u002F 不返回值，放行导航\n});\n",[367,1219,1220,1236,1242],{"__ignoreMap":404},[426,1221,1222,1224,1226,1228,1230,1232,1234],{"class":428,"line":429},[426,1223,433],{"class":432},[426,1225,436],{"class":432},[426,1227,440],{"class":439},[426,1229,444],{"class":443},[426,1231,873],{"class":447},[426,1233,463],{"class":462},[426,1235,466],{"class":447},[426,1237,1238],{"class":428,"line":469},[426,1239,1241],{"class":1240},"sWuyu","  \u002F\u002F 不返回值，放行导航\n",[426,1243,1244,1246,1248],{"class":428,"line":508},[426,1245,541],{"class":447},[426,1247,459],{"class":443},[426,1249,505],{"class":447},[580,1251,1252],{"id":1252},"重定向",[363,1254,1255,1256,1259,1260,1263],{},"使用 ",[367,1257,1258],{},"goTo()"," 创建重定向结果，并通过 ",[367,1261,1262],{},"return"," 返回：",[397,1265,1267],{"className":420,"code":1266,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware((to) => {\n  if (to.path !== \"\u002Fpages\u002Flogin\u002Flogin\" && !uni.getStorageSync(\"token\")) {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\");\n  }\n});\n",[367,1268,1269,1289,1333,1351,1355],{"__ignoreMap":404},[426,1270,1271,1273,1275,1277,1279,1281,1283,1285,1287],{"class":428,"line":429},[426,1272,433],{"class":432},[426,1274,436],{"class":432},[426,1276,440],{"class":439},[426,1278,444],{"class":443},[426,1280,444],{"class":447},[426,1282,412],{"class":450},[426,1284,459],{"class":447},[426,1286,463],{"class":462},[426,1288,466],{"class":447},[426,1290,1291,1293,1295,1297,1299,1301,1304,1306,1308,1310,1312,1315,1317,1319,1321,1323,1325,1327,1329,1331],{"class":428,"line":469},[426,1292,671],{"class":432},[426,1294,674],{"class":481},[426,1296,412],{"class":443},[426,1298,475],{"class":447},[426,1300,500],{"class":443},[426,1302,1303],{"class":447}," !==",[426,1305,627],{"class":447},[426,1307,630],{"class":487},[426,1309,484],{"class":447},[426,1311,954],{"class":447},[426,1313,1314],{"class":447}," !",[426,1316,728],{"class":443},[426,1318,475],{"class":447},[426,1320,733],{"class":439},[426,1322,444],{"class":481},[426,1324,484],{"class":447},[426,1326,740],{"class":487},[426,1328,484],{"class":447},[426,1330,693],{"class":481},[426,1332,696],{"class":447},[426,1334,1335,1337,1339,1341,1343,1345,1347,1349],{"class":428,"line":508},[426,1336,702],{"class":432},[426,1338,754],{"class":439},[426,1340,444],{"class":481},[426,1342,484],{"class":447},[426,1344,630],{"class":487},[426,1346,484],{"class":447},[426,1348,459],{"class":481},[426,1350,505],{"class":447},[426,1352,1353],{"class":428,"line":538},[426,1354,710],{"class":447},[426,1356,1357,1359,1361],{"class":428,"line":699},[426,1358,541],{"class":447},[426,1360,459],{"class":443},[426,1362,505],{"class":447},[1364,1365,1366],"warning",{},[363,1367,1368,1370,1371,1373,1374,1376],{},[367,1369,1258],{}," 必须通过 ",[367,1372,1262],{}," 返回。仅调用 ",[367,1375,1258],{}," 不会触发重定向。",[1378,1379,1380],"h4",{"id":1380},"携带查询参数",[397,1382,1384],{"className":420,"code":1383,"language":422,"meta":404,"style":404},"return goTo({\n  path: \"\u002Fpages\u002Fsearch\u002Fresult\",\n  query: {\n    keyword: \"uni-app\",\n    page: 1,\n  },\n});\n",[367,1385,1386,1396,1412,1421,1437,1450,1455],{"__ignoreMap":404},[426,1387,1388,1390,1392,1394],{"class":428,"line":429},[426,1389,1262],{"class":432},[426,1391,754],{"class":439},[426,1393,444],{"class":443},[426,1395,696],{"class":447},[426,1397,1398,1401,1403,1405,1408,1410],{"class":428,"line":469},[426,1399,1400],{"class":481},"  path",[426,1402,775],{"class":447},[426,1404,627],{"class":447},[426,1406,1407],{"class":487},"\u002Fpages\u002Fsearch\u002Fresult",[426,1409,484],{"class":447},[426,1411,782],{"class":447},[426,1413,1414,1417,1419],{"class":428,"line":508},[426,1415,1416],{"class":481},"  query",[426,1418,775],{"class":447},[426,1420,466],{"class":447},[426,1422,1423,1426,1428,1430,1433,1435],{"class":428,"line":538},[426,1424,1425],{"class":481},"    keyword",[426,1427,775],{"class":447},[426,1429,627],{"class":447},[426,1431,1432],{"class":487},"uni-app",[426,1434,484],{"class":447},[426,1436,782],{"class":447},[426,1438,1439,1442,1444,1448],{"class":428,"line":699},[426,1440,1441],{"class":481},"    page",[426,1443,775],{"class":447},[426,1445,1447],{"class":1446},"sYRBq"," 1",[426,1449,782],{"class":447},[426,1451,1452],{"class":428,"line":707},[426,1453,1454],{"class":447},"  },\n",[426,1456,1457,1459,1461],{"class":428,"line":713},[426,1458,541],{"class":447},[426,1460,459],{"class":443},[426,1462,505],{"class":447},[363,1464,1465],{},"最终目标地址为：",[397,1467,1470],{"className":1468,"code":1469,"language":403,"meta":404},[400],"\u002Fpages\u002Fsearch\u002Fresult?keyword=uni-app&page=1\n",[367,1471,1469],{"__ignoreMap":404},[1378,1473,1474],{"id":1474},"替换当前页面",[363,1476,1477,1478,1481,1482,1485,1486,417],{},"普通页面默认使用 ",[367,1479,1480],{},"navigateTo","。设置 ",[367,1483,1484],{},"replace: true"," 后使用 ",[367,1487,1488],{},"redirectTo",[397,1490,1492],{"className":420,"code":1491,"language":422,"meta":404,"style":404},"return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", {\n  replace: true,\n});\n",[367,1493,1494,1512,1523],{"__ignoreMap":404},[426,1495,1496,1498,1500,1502,1504,1506,1508,1510],{"class":428,"line":429},[426,1497,1262],{"class":432},[426,1499,754],{"class":439},[426,1501,444],{"class":443},[426,1503,484],{"class":447},[426,1505,630],{"class":487},[426,1507,484],{"class":447},[426,1509,453],{"class":447},[426,1511,466],{"class":447},[426,1513,1514,1517,1519,1521],{"class":428,"line":469},[426,1515,1516],{"class":481},"  replace",[426,1518,775],{"class":447},[426,1520,779],{"class":778},[426,1522,782],{"class":447},[426,1524,1525,1527,1529],{"class":428,"line":508},[426,1526,541],{"class":447},[426,1528,459],{"class":443},[426,1530,505],{"class":447},[1378,1532,1534],{"id":1533},"tabbar-页面","TabBar 页面",[363,1536,1537,1538,417],{},"重定向到 TabBar 页面时会自动使用 ",[367,1539,1540],{},"switchTab",[397,1542,1544],{"className":420,"code":1543,"language":422,"meta":404,"style":404},"return goTo(\"\u002Fpages\u002Findex\u002Findex\");\n",[367,1545,1546],{"__ignoreMap":404},[426,1547,1548,1550,1552,1554,1556,1558,1560,1562],{"class":428,"line":429},[426,1549,1262],{"class":432},[426,1551,754],{"class":439},[426,1553,444],{"class":443},[426,1555,484],{"class":447},[426,1557,620],{"class":487},[426,1559,484],{"class":447},[426,1561,459],{"class":443},[426,1563,505],{"class":447},[1378,1565,1567],{"id":1566},"显式指定导航方式","显式指定导航方式：",[397,1569,1571],{"className":420,"code":1570,"language":422,"meta":404,"style":404},"return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", {\n  type: \"reLaunch\",\n});\n",[367,1572,1573,1591,1607],{"__ignoreMap":404},[426,1574,1575,1577,1579,1581,1583,1585,1587,1589],{"class":428,"line":429},[426,1576,1262],{"class":432},[426,1578,754],{"class":439},[426,1580,444],{"class":443},[426,1582,484],{"class":447},[426,1584,630],{"class":487},[426,1586,484],{"class":447},[426,1588,453],{"class":447},[426,1590,466],{"class":447},[426,1592,1593,1596,1598,1600,1603,1605],{"class":428,"line":469},[426,1594,1595],{"class":481},"  type",[426,1597,775],{"class":447},[426,1599,627],{"class":447},[426,1601,1602],{"class":487},"reLaunch",[426,1604,484],{"class":447},[426,1606,782],{"class":447},[426,1608,1609,1611,1613],{"class":428,"line":508},[426,1610,541],{"class":447},[426,1612,459],{"class":443},[426,1614,505],{"class":447},[363,1616,1617,1620],{},[367,1618,1619],{},"type"," 支持：",[550,1622,1623,1627,1631,1635],{},[553,1624,1625],{},[367,1626,1480],{},[553,1628,1629],{},[367,1630,1488],{},[553,1632,1633],{},[367,1634,1602],{},[553,1636,1637],{},[367,1638,1540],{},[363,1640,1641],{},"重定向目标会重新执行目标页面的中间件。",[580,1643,1644],{"id":1644},"中止",[363,1646,1647,1648,1651,1652,1655],{},"返回 ",[367,1649,1650],{},"false"," 或 ",[367,1653,1654],{},"abortNavigation()","，中止当前导航：",[397,1657,1659],{"className":420,"code":1658,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware((to) => {\n  if (to.path === \"\u002Fpages\u002Fforbidden\u002Findex\") {\n    return abortNavigation();\n  }\n});\n",[367,1660,1661,1681,1707,1717,1721],{"__ignoreMap":404},[426,1662,1663,1665,1667,1669,1671,1673,1675,1677,1679],{"class":428,"line":429},[426,1664,433],{"class":432},[426,1666,436],{"class":432},[426,1668,440],{"class":439},[426,1670,444],{"class":443},[426,1672,444],{"class":447},[426,1674,412],{"class":450},[426,1676,459],{"class":447},[426,1678,463],{"class":462},[426,1680,466],{"class":447},[426,1682,1683,1685,1687,1689,1691,1693,1696,1698,1701,1703,1705],{"class":428,"line":469},[426,1684,671],{"class":432},[426,1686,674],{"class":481},[426,1688,412],{"class":443},[426,1690,475],{"class":447},[426,1692,500],{"class":443},[426,1694,1695],{"class":447}," ===",[426,1697,627],{"class":447},[426,1699,1700],{"class":487},"\u002Fpages\u002Fforbidden\u002Findex",[426,1702,484],{"class":447},[426,1704,893],{"class":481},[426,1706,696],{"class":447},[426,1708,1709,1711,1713,1715],{"class":428,"line":508},[426,1710,702],{"class":432},[426,1712,985],{"class":439},[426,1714,873],{"class":481},[426,1716,505],{"class":447},[426,1718,1719],{"class":428,"line":538},[426,1720,710],{"class":447},[426,1722,1723,1725,1727],{"class":428,"line":699},[426,1724,541],{"class":447},[426,1726,459],{"class":443},[426,1728,505],{"class":447},[363,1730,1731],{},"可以传入中止原因：",[397,1733,1735],{"className":420,"code":1734,"language":422,"meta":404,"style":404},"return abortNavigation(new Error(\"没有访问权限\"));\n",[367,1736,1737],{"__ignoreMap":404},[426,1738,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759],{"class":428,"line":429},[426,1740,1262],{"class":432},[426,1742,985],{"class":439},[426,1744,444],{"class":443},[426,1746,990],{"class":447},[426,1748,993],{"class":439},[426,1750,444],{"class":443},[426,1752,484],{"class":447},[426,1754,1000],{"class":487},[426,1756,484],{"class":447},[426,1758,1005],{"class":443},[426,1760,505],{"class":447},[363,1762,1763,1764,1767,1768,1771],{},"中止原因会传递给导航调用的 ",[367,1765,1766],{},"fail"," 和 ",[367,1769,1770],{},"complete"," 回调。",[383,1773,1774],{"id":1774},"常见场景",[580,1776,1777],{"id":1777},"登录校验",[397,1779,1781],{"className":420,"code":1780,"filename":599,"language":422,"meta":404,"style":404},"const WHITE_LIST = [\"\u002Fpages\u002Findex\u002Findex\", \"\u002Fpages\u002Flogin\u002Flogin\"];\n\nexport default defineRouteMiddleware((to) => {\n  if (WHITE_LIST.includes(to.path)) {\n    return;\n  }\n\n  if (!uni.getStorageSync(\"token\")) {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", {\n      replace: true,\n    });\n  }\n});\n",[367,1782,1783,1811,1815,1835,1859,1865,1869,1873,1899,1917,1927,1935,1939],{"__ignoreMap":404},[426,1784,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809],{"class":428,"line":429},[426,1786,606],{"class":462},[426,1788,609],{"class":443},[426,1790,612],{"class":447},[426,1792,615],{"class":443},[426,1794,484],{"class":447},[426,1796,620],{"class":487},[426,1798,484],{"class":447},[426,1800,453],{"class":447},[426,1802,627],{"class":447},[426,1804,630],{"class":487},[426,1806,484],{"class":447},[426,1808,635],{"class":443},[426,1810,505],{"class":447},[426,1812,1813],{"class":428,"line":469},[426,1814,642],{"emptyLinePlaceholder":15},[426,1816,1817,1819,1821,1823,1825,1827,1829,1831,1833],{"class":428,"line":508},[426,1818,433],{"class":432},[426,1820,436],{"class":432},[426,1822,440],{"class":439},[426,1824,444],{"class":443},[426,1826,444],{"class":447},[426,1828,412],{"class":450},[426,1830,459],{"class":447},[426,1832,463],{"class":462},[426,1834,466],{"class":447},[426,1836,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857],{"class":428,"line":538},[426,1838,671],{"class":432},[426,1840,674],{"class":481},[426,1842,677],{"class":443},[426,1844,475],{"class":447},[426,1846,682],{"class":439},[426,1848,444],{"class":481},[426,1850,412],{"class":443},[426,1852,475],{"class":447},[426,1854,500],{"class":443},[426,1856,693],{"class":481},[426,1858,696],{"class":447},[426,1860,1861,1863],{"class":428,"line":699},[426,1862,702],{"class":432},[426,1864,505],{"class":447},[426,1866,1867],{"class":428,"line":707},[426,1868,710],{"class":447},[426,1870,1871],{"class":428,"line":713},[426,1872,642],{"emptyLinePlaceholder":15},[426,1874,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897],{"class":428,"line":718},[426,1876,671],{"class":432},[426,1878,674],{"class":481},[426,1880,725],{"class":447},[426,1882,728],{"class":443},[426,1884,475],{"class":447},[426,1886,733],{"class":439},[426,1888,444],{"class":481},[426,1890,484],{"class":447},[426,1892,740],{"class":487},[426,1894,484],{"class":447},[426,1896,693],{"class":481},[426,1898,696],{"class":447},[426,1900,1901,1903,1905,1907,1909,1911,1913,1915],{"class":428,"line":749},[426,1902,702],{"class":432},[426,1904,754],{"class":439},[426,1906,444],{"class":481},[426,1908,484],{"class":447},[426,1910,630],{"class":487},[426,1912,484],{"class":447},[426,1914,453],{"class":447},[426,1916,466],{"class":447},[426,1918,1919,1921,1923,1925],{"class":428,"line":769},[426,1920,772],{"class":481},[426,1922,775],{"class":447},[426,1924,779],{"class":778},[426,1926,782],{"class":447},[426,1928,1929,1931,1933],{"class":428,"line":785},[426,1930,788],{"class":447},[426,1932,459],{"class":481},[426,1934,505],{"class":447},[426,1936,1937],{"class":428,"line":795},[426,1938,710],{"class":447},[426,1940,1941,1943,1945],{"class":428,"line":800},[426,1942,541],{"class":447},[426,1944,459],{"class":443},[426,1946,505],{"class":447},[580,1948,1949],{"id":1949},"权限校验",[397,1951,1953],{"className":420,"code":1952,"filename":821,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware(async (to) => {\n  const user = await getCurrentUser();\n\n  if (!user) {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\", { replace: true });\n  }\n\n  if (!user.hasPermission && to.path.startsWith(\"\u002Fpages\u002Fadmin\u002F\")) {\n    return abortNavigation(new Error(\"没有访问权限\"));\n  }\n});\n",[367,1954,1955,1977,1993,1997,2011,2041,2045,2049,2087,2111,2115],{"__ignoreMap":404},[426,1956,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975],{"class":428,"line":429},[426,1958,433],{"class":432},[426,1960,436],{"class":432},[426,1962,440],{"class":439},[426,1964,444],{"class":443},[426,1966,839],{"class":462},[426,1968,674],{"class":447},[426,1970,412],{"class":450},[426,1972,459],{"class":447},[426,1974,463],{"class":462},[426,1976,466],{"class":447},[426,1978,1979,1981,1983,1985,1987,1989,1991],{"class":428,"line":469},[426,1980,858],{"class":462},[426,1982,861],{"class":443},[426,1984,864],{"class":447},[426,1986,867],{"class":432},[426,1988,870],{"class":439},[426,1990,873],{"class":481},[426,1992,505],{"class":447},[426,1994,1995],{"class":428,"line":508},[426,1996,642],{"emptyLinePlaceholder":15},[426,1998,1999,2001,2003,2005,2007,2009],{"class":428,"line":538},[426,2000,671],{"class":432},[426,2002,674],{"class":481},[426,2004,725],{"class":447},[426,2006,890],{"class":443},[426,2008,893],{"class":481},[426,2010,696],{"class":447},[426,2012,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039],{"class":428,"line":699},[426,2014,702],{"class":432},[426,2016,754],{"class":439},[426,2018,444],{"class":481},[426,2020,484],{"class":447},[426,2022,630],{"class":487},[426,2024,484],{"class":447},[426,2026,453],{"class":447},[426,2028,914],{"class":447},[426,2030,917],{"class":481},[426,2032,775],{"class":447},[426,2034,779],{"class":778},[426,2036,924],{"class":447},[426,2038,459],{"class":481},[426,2040,505],{"class":447},[426,2042,2043],{"class":428,"line":707},[426,2044,710],{"class":447},[426,2046,2047],{"class":428,"line":713},[426,2048,642],{"emptyLinePlaceholder":15},[426,2050,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085],{"class":428,"line":718},[426,2052,671],{"class":432},[426,2054,674],{"class":481},[426,2056,725],{"class":447},[426,2058,890],{"class":443},[426,2060,475],{"class":447},[426,2062,951],{"class":443},[426,2064,954],{"class":447},[426,2066,495],{"class":443},[426,2068,475],{"class":447},[426,2070,500],{"class":443},[426,2072,475],{"class":447},[426,2074,965],{"class":439},[426,2076,444],{"class":481},[426,2078,484],{"class":447},[426,2080,972],{"class":487},[426,2082,484],{"class":447},[426,2084,693],{"class":481},[426,2086,696],{"class":447},[426,2088,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109],{"class":428,"line":749},[426,2090,702],{"class":432},[426,2092,985],{"class":439},[426,2094,444],{"class":481},[426,2096,990],{"class":447},[426,2098,993],{"class":439},[426,2100,444],{"class":481},[426,2102,484],{"class":447},[426,2104,1000],{"class":487},[426,2106,484],{"class":447},[426,2108,1005],{"class":481},[426,2110,505],{"class":447},[426,2112,2113],{"class":428,"line":769},[426,2114,710],{"class":447},[426,2116,2117,2119,2121],{"class":428,"line":785},[426,2118,541],{"class":447},[426,2120,459],{"class":443},[426,2122,505],{"class":447},[363,2124,2125],{},"页面中使用：",[397,2127,2128],{"className":1028,"code":1105,"language":1031,"meta":404,"style":404},[367,2129,2130,2150,2158,2176,2184],{"__ignoreMap":404},[426,2131,2132,2134,2136,2138,2140,2142,2144,2146,2148],{"class":428,"line":429},[426,2133,1038],{"class":447},[426,2135,1041],{"class":481},[426,2137,1044],{"class":462},[426,2139,1047],{"class":462},[426,2141,612],{"class":447},[426,2143,484],{"class":447},[426,2145,422],{"class":487},[426,2147,484],{"class":447},[426,2149,1058],{"class":447},[426,2151,2152,2154,2156],{"class":428,"line":469},[426,2153,310],{"class":439},[426,2155,444],{"class":443},[426,2157,696],{"class":447},[426,2159,2160,2162,2164,2166,2168,2170,2172,2174],{"class":428,"line":508},[426,2161,1071],{"class":481},[426,2163,775],{"class":447},[426,2165,615],{"class":443},[426,2167,484],{"class":447},[426,2169,1078],{"class":487},[426,2171,484],{"class":447},[426,2173,635],{"class":443},[426,2175,782],{"class":447},[426,2177,2178,2180,2182],{"class":428,"line":538},[426,2179,541],{"class":447},[426,2181,459],{"class":443},[426,2183,505],{"class":447},[426,2185,2186,2188,2190],{"class":428,"line":699},[426,2187,1095],{"class":447},[426,2189,1041],{"class":481},[426,2191,1058],{"class":447},[580,2193,2194],{"id":2194},"异步中间件",[363,2196,2197],{},"中间件支持异步函数：",[397,2199,2201],{"className":420,"code":2200,"language":422,"meta":404,"style":404},"export default defineRouteMiddleware(async (to) => {\n  const user = await getCurrentUser();\n\n  if (!user && to.path !== \"\u002Fpages\u002Flogin\u002Flogin\") {\n    return goTo(\"\u002Fpages\u002Flogin\u002Flogin\");\n  }\n});\n",[367,2202,2203,2225,2241,2245,2275,2293,2297],{"__ignoreMap":404},[426,2204,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223],{"class":428,"line":429},[426,2206,433],{"class":432},[426,2208,436],{"class":432},[426,2210,440],{"class":439},[426,2212,444],{"class":443},[426,2214,839],{"class":462},[426,2216,674],{"class":447},[426,2218,412],{"class":450},[426,2220,459],{"class":447},[426,2222,463],{"class":462},[426,2224,466],{"class":447},[426,2226,2227,2229,2231,2233,2235,2237,2239],{"class":428,"line":469},[426,2228,858],{"class":462},[426,2230,861],{"class":443},[426,2232,864],{"class":447},[426,2234,867],{"class":432},[426,2236,870],{"class":439},[426,2238,873],{"class":481},[426,2240,505],{"class":447},[426,2242,2243],{"class":428,"line":508},[426,2244,642],{"emptyLinePlaceholder":15},[426,2246,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273],{"class":428,"line":538},[426,2248,671],{"class":432},[426,2250,674],{"class":481},[426,2252,725],{"class":447},[426,2254,890],{"class":443},[426,2256,954],{"class":447},[426,2258,495],{"class":443},[426,2260,475],{"class":447},[426,2262,500],{"class":443},[426,2264,1303],{"class":447},[426,2266,627],{"class":447},[426,2268,630],{"class":487},[426,2270,484],{"class":447},[426,2272,893],{"class":481},[426,2274,696],{"class":447},[426,2276,2277,2279,2281,2283,2285,2287,2289,2291],{"class":428,"line":699},[426,2278,702],{"class":432},[426,2280,754],{"class":439},[426,2282,444],{"class":481},[426,2284,484],{"class":447},[426,2286,630],{"class":487},[426,2288,484],{"class":447},[426,2290,459],{"class":481},[426,2292,505],{"class":447},[426,2294,2295],{"class":428,"line":707},[426,2296,710],{"class":447},[426,2298,2299,2301,2303],{"class":428,"line":713},[426,2300,541],{"class":447},[426,2302,459],{"class":443},[426,2304,505],{"class":447},[363,2306,2307],{},"常见用途包括：",[550,2309,2310,2313,2316,2319],{},[553,2311,2312],{},"获取当前用户信息；",[553,2314,2315],{},"查询用户权限；",[553,2317,2318],{},"校验页面访问条件；",[553,2320,2321],{},"获取页面进入前所需的配置。",[2323,2324],"hr",{},[564,2326,2327],{"color":566,"icon":345,"to":311},[363,2328,2329,571,2331,2334],{},[367,2330,310],{},[367,2332,2333],{},"middleware"," 字段",[2336,2337,2338],"style",{},"html pre.shiki code .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .s1nJG, html code.shiki .s1nJG{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}html pre.shiki code .sWuyu, html code.shiki .sWuyu{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":404,"searchDepth":469,"depth":469,"links":2340},[2341,2342,2346,2347,2352],{"id":385,"depth":469,"text":385},{"id":578,"depth":469,"text":578,"children":2343},[2344,2345],{"id":582,"depth":508,"text":582},{"id":815,"depth":508,"text":815},{"id":1183,"depth":469,"text":1183},{"id":1204,"depth":469,"text":1204,"children":2348},[2349,2350,2351],{"id":1207,"depth":508,"text":1207},{"id":1252,"depth":508,"text":1252},{"id":1644,"depth":508,"text":1644},{"id":1774,"depth":469,"text":1774,"children":2353},[2354,2355,2356],{"id":1777,"depth":508,"text":1777},{"id":1949,"depth":508,"text":1949},{"id":2194,"depth":508,"text":2194},"在页面进入前执行校验、重定向与导航控制","md",{},{"icon":103},{"title":100,"description":2357},"nZma5Ra57rLrWdzXD3_xQdZxDLjN_qcEceDodFb-yxA",[2364,2366],{"title":95,"path":96,"stem":97,"description":2365,"icon":98,"children":-1},"用 definePagesConfig 维护 pages.json 全局性的页面默认配置",{"title":111,"path":112,"stem":113,"description":2367,"icon":114,"children":-1},"在 App.vue 中组织应用外壳、布局入口和页面渲染入口",1790692553741]