[{"data":1,"prerenderedAt":3766},["ShallowReactive",2],{"$f36w0snpoc33ft":3,"\u002Fdocs\u002Fguide\u002Foverview\u002Fintroduction":357,"\u002Fdocs\u002Fguide\u002Foverview\u002Fintroduction-surround":3763},[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":20,"body":359,"description":3757,"extension":3758,"meta":3759,"navigation":3760,"path":8,"seo":3761,"stem":21,"titleTemplate":6,"__hash__":3762},"docs\u002Fdocs\u002F1.guide\u002F1.overview\u002F01.introduction.md",{"type":360,"value":361,"toc":3742},"minimark",[362,379,382,387,402,405,412,421,757,759,765,772,1125,1127,1138,1145,1311,1313,1326,1333,1757,1760,1771,1778,2140,2142,2145,2152,2398,2401,2406,2413,2676,2679,2682,2689,3670,3673,3676,3702,3706,3709,3722,3725,3739],[363,364,365,370,371,378],"p",{},[366,367,369],"code",{"color":368},"primary","oiyo"," 是基于 ",[372,373,377],"a",{"href":374,"rel":375},"https:\u002F\u002Fgithub.com\u002Fdcloudio\u002Funi-app\u002F",[376],"nofollow","UniApp"," 的增强型工程框架。你负责业务，它负责其余：自动路由、智能布局、根上下文、路由中间件、甄选依赖、工程约定与一站式团队服务。",[363,380,381],{},"以「融合AI协作 · 提升开发体验 · 降低心智成本」为三大理念，支持个人、公司、企业免费商用，让每一位开发者都能最大程度地平权体验、开发、发布！",[383,384,386],"h2",{"id":385},"符合-ai-时代的约定式框架","符合 AI 时代的约定式框架",[388,389,390],"tip",{},[363,391,392,393,397,398,401],{},"用",[394,395,396],"strong",{},"约定","替代记忆，用",[394,399,400],{},"生成","替代手动，让你只写业务代码。",[403,404,220],"h3",{"id":220},[363,406,407,408,411],{},"基于文件系统，页面文件即路由。",[366,409,410],{},"pages.json"," 由扫描自动生成，跳转 API 还带类型提示。",[413,414,415],"blockquote",{},[363,416,417],{},[418,419,420],"del",{},"困扰：pages.json 手动维护，页面越加越多，遗漏、重复、路径写错",[422,423,426,484,521,558],"code-tree",{"default-value":424,":expand-all":425},"src\u002Fpages.json","true",[427,428,434],"pre",{"className":429,"code":430,"filename":431,"language":432,"meta":433,"style":433},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Ctemplate>\n  \u003Cview>创建文件即可，无需任何注册\u003C\u002Fview>\n\u003C\u002Ftemplate>\n","src\u002Fpages\u002Fhome\u002Findex.vue","vue","",[366,435,436,452,475],{"__ignoreMap":433},[437,438,441,445,449],"span",{"class":439,"line":440},"line",1,[437,442,444],{"class":443},"sDfIl","\u003C",[437,446,448],{"class":447},"sRlkE","template",[437,450,451],{"class":443},">\n",[437,453,455,458,461,464,468,471,473],{"class":439,"line":454},2,[437,456,457],{"class":443},"  \u003C",[437,459,460],{"class":447},"view",[437,462,463],{"class":443},">",[437,465,467],{"class":466},"sZSNi","创建文件即可，无需任何注册",[437,469,470],{"class":443},"\u003C\u002F",[437,472,460],{"class":447},[437,474,451],{"class":443},[437,476,478,480,482],{"class":439,"line":477},3,[437,479,470],{"class":443},[437,481,448],{"class":447},[437,483,451],{"class":443},[427,485,487],{"className":429,"code":430,"filename":486,"language":432,"meta":433,"style":433},"src\u002Fpages\u002Fmy\u002Findex.vue",[366,488,489,497,513],{"__ignoreMap":433},[437,490,491,493,495],{"class":439,"line":440},[437,492,444],{"class":443},[437,494,448],{"class":447},[437,496,451],{"class":443},[437,498,499,501,503,505,507,509,511],{"class":439,"line":454},[437,500,457],{"class":443},[437,502,460],{"class":447},[437,504,463],{"class":443},[437,506,467],{"class":466},[437,508,470],{"class":443},[437,510,460],{"class":447},[437,512,451],{"class":443},[437,514,515,517,519],{"class":439,"line":477},[437,516,470],{"class":443},[437,518,448],{"class":447},[437,520,451],{"class":443},[427,522,524],{"className":429,"code":430,"filename":523,"language":432,"meta":433,"style":433},"src\u002Fpackages\u002Forder\u002Fpages\u002Flist\u002Findex.vue",[366,525,526,534,550],{"__ignoreMap":433},[437,527,528,530,532],{"class":439,"line":440},[437,529,444],{"class":443},[437,531,448],{"class":447},[437,533,451],{"class":443},[437,535,536,538,540,542,544,546,548],{"class":439,"line":454},[437,537,457],{"class":443},[437,539,460],{"class":447},[437,541,463],{"class":443},[437,543,467],{"class":466},[437,545,470],{"class":443},[437,547,460],{"class":447},[437,549,451],{"class":443},[437,551,552,554,556],{"class":439,"line":477},[437,553,470],{"class":443},[437,555,448],{"class":447},[437,557,451],{"class":443},[427,559,563],{"className":560,"code":561,"filename":424,"language":562,"meta":433,"style":433},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u002F\u002F 由 oiyo 管理并自动生成的 pages.json\n{\n  \"pages\": [\n    { \"path\": \"pages\u002Fhome\u002Findex\" }, \n    { \"path\": \"pages\u002Fmy\u002Findex\" }\n  ],\n  \"subPackages\": [\n    {\n      \"root\": \"packages\u002Forder\",\n      \"pages\": [\n        { \"path\": \"pages\u002Flist\u002Findex\" }\n      ]\n    }\n  ]\n}\n","json",[366,564,565,571,576,593,624,647,653,667,673,696,709,733,739,745,751],{"__ignoreMap":433},[437,566,567],{"class":439,"line":440},[437,568,570],{"class":569},"sWuyu","\u002F\u002F 由 oiyo 管理并自动生成的 pages.json\n",[437,572,573],{"class":439,"line":454},[437,574,575],{"class":443},"{\n",[437,577,578,581,584,587,590],{"class":439,"line":477},[437,579,580],{"class":443},"  \"",[437,582,175],{"class":583},"smZ93",[437,585,586],{"class":443},"\"",[437,588,589],{"class":443},":",[437,591,592],{"class":443}," [\n",[437,594,596,599,602,606,608,610,612,616,618,621],{"class":439,"line":595},4,[437,597,598],{"class":443},"    {",[437,600,601],{"class":443}," \"",[437,603,605],{"class":604},"s52Pk","path",[437,607,586],{"class":443},[437,609,589],{"class":443},[437,611,601],{"class":443},[437,613,615],{"class":614},"sGFVr","pages\u002Fhome\u002Findex",[437,617,586],{"class":443},[437,619,620],{"class":443}," },",[437,622,623],{"class":466}," \n",[437,625,627,629,631,633,635,637,639,642,644],{"class":439,"line":626},5,[437,628,598],{"class":443},[437,630,601],{"class":443},[437,632,605],{"class":604},[437,634,586],{"class":443},[437,636,589],{"class":443},[437,638,601],{"class":443},[437,640,641],{"class":614},"pages\u002Fmy\u002Findex",[437,643,586],{"class":443},[437,645,646],{"class":443}," }\n",[437,648,650],{"class":439,"line":649},6,[437,651,652],{"class":443},"  ],\n",[437,654,656,658,661,663,665],{"class":439,"line":655},7,[437,657,580],{"class":443},[437,659,660],{"class":583},"subPackages",[437,662,586],{"class":443},[437,664,589],{"class":443},[437,666,592],{"class":443},[437,668,670],{"class":439,"line":669},8,[437,671,672],{"class":443},"    {\n",[437,674,676,679,682,684,686,688,691,693],{"class":439,"line":675},9,[437,677,678],{"class":443},"      \"",[437,680,681],{"class":604},"root",[437,683,586],{"class":443},[437,685,589],{"class":443},[437,687,601],{"class":443},[437,689,690],{"class":614},"packages\u002Forder",[437,692,586],{"class":443},[437,694,695],{"class":443},",\n",[437,697,699,701,703,705,707],{"class":439,"line":698},10,[437,700,678],{"class":443},[437,702,175],{"class":604},[437,704,586],{"class":443},[437,706,589],{"class":443},[437,708,592],{"class":443},[437,710,712,715,717,720,722,724,726,729,731],{"class":439,"line":711},11,[437,713,714],{"class":443},"        {",[437,716,601],{"class":443},[437,718,605],{"class":719},"sYRBq",[437,721,586],{"class":443},[437,723,589],{"class":443},[437,725,601],{"class":443},[437,727,728],{"class":614},"pages\u002Flist\u002Findex",[437,730,586],{"class":443},[437,732,646],{"class":443},[437,734,736],{"class":439,"line":735},12,[437,737,738],{"class":443},"      ]\n",[437,740,742],{"class":439,"line":741},13,[437,743,744],{"class":443},"    }\n",[437,746,748],{"class":439,"line":747},14,[437,749,750],{"class":443},"  ]\n",[437,752,754],{"class":439,"line":753},15,[437,755,756],{"class":443},"}\n",[403,758,90],{"id":90},[363,760,761,764],{},[366,762,763],{},"definePageMeta()"," 让导航栏样式、首页声明、TabBar 配置与页面代码同处维护。",[413,766,767],{},[363,768,769],{},[418,770,771],{},"困扰：页面配置集中堆在 pages.json，离页面代码越来越远",[422,773,774,948],{"default-value":431,":expand-all":425},[427,775,777],{"className":429,"code":776,"filename":431,"language":432,"meta":433,"style":433},"\u003Cscript setup>\ndefinePageMeta({\n  type: \"home\",\n  layout: \"tabbar\",\n  style: { navigationBarTitleText: \"首页\" },\n  tab: { index: 0, text: \"首页\" },\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cview>Home Page\u003C\u002Fview>\n\u003C\u002Ftemplate>\n",[366,778,779,791,801,817,833,858,891,902,910,915,923,940],{"__ignoreMap":433},[437,780,781,783,786,789],{"class":439,"line":440},[437,782,444],{"class":443},[437,784,785],{"class":447},"script",[437,787,788],{"class":583}," setup",[437,790,451],{"class":443},[437,792,793,796,799],{"class":439,"line":454},[437,794,310],{"class":795},"s3cPz",[437,797,798],{"class":466},"(",[437,800,575],{"class":443},[437,802,803,806,808,810,813,815],{"class":439,"line":477},[437,804,805],{"class":447},"  type",[437,807,589],{"class":443},[437,809,601],{"class":443},[437,811,812],{"class":614},"home",[437,814,586],{"class":443},[437,816,695],{"class":443},[437,818,819,822,824,826,829,831],{"class":439,"line":595},[437,820,821],{"class":447},"  layout",[437,823,589],{"class":443},[437,825,601],{"class":443},[437,827,828],{"class":614},"tabbar",[437,830,586],{"class":443},[437,832,695],{"class":443},[437,834,835,838,840,843,846,848,850,853,855],{"class":439,"line":626},[437,836,837],{"class":447},"  style",[437,839,589],{"class":443},[437,841,842],{"class":443}," {",[437,844,845],{"class":447}," navigationBarTitleText",[437,847,589],{"class":443},[437,849,601],{"class":443},[437,851,852],{"class":614},"首页",[437,854,586],{"class":443},[437,856,857],{"class":443}," },\n",[437,859,860,863,865,867,870,872,875,878,881,883,885,887,889],{"class":439,"line":649},[437,861,862],{"class":447},"  tab",[437,864,589],{"class":443},[437,866,842],{"class":443},[437,868,869],{"class":447}," index",[437,871,589],{"class":443},[437,873,874],{"class":719}," 0",[437,876,877],{"class":443},",",[437,879,880],{"class":447}," text",[437,882,589],{"class":443},[437,884,601],{"class":443},[437,886,852],{"class":614},[437,888,586],{"class":443},[437,890,857],{"class":443},[437,892,893,896,899],{"class":439,"line":655},[437,894,895],{"class":443},"}",[437,897,898],{"class":466},")",[437,900,901],{"class":443},";\n",[437,903,904,906,908],{"class":439,"line":669},[437,905,470],{"class":443},[437,907,785],{"class":447},[437,909,451],{"class":443},[437,911,912],{"class":439,"line":675},[437,913,914],{"emptyLinePlaceholder":15},"\n",[437,916,917,919,921],{"class":439,"line":698},[437,918,444],{"class":443},[437,920,448],{"class":447},[437,922,451],{"class":443},[437,924,925,927,929,931,934,936,938],{"class":439,"line":711},[437,926,457],{"class":443},[437,928,460],{"class":447},[437,930,463],{"class":443},[437,932,933],{"class":466},"Home Page",[437,935,470],{"class":443},[437,937,460],{"class":447},[437,939,451],{"class":443},[437,941,942,944,946],{"class":439,"line":735},[437,943,470],{"class":443},[437,945,448],{"class":447},[437,947,451],{"class":443},[427,949,951],{"className":560,"code":950,"filename":424,"language":562,"meta":433,"style":433},"\u002F\u002F 由 oiyo 管理并自动生成的 pages.json\n{\n  \"pages\": [\n    {\n      \"path\": \"pages\u002Fhome\u002Findex\",\n      \"style\": { \"navigationBarTitleText\": \"首页\" }\n    }\n  ],\n  \"tabBar\": {\n    \"list\": [\n      {\n        \"pagePath\": \"pages\u002Fhome\u002Findex\",\n        \"text\": \"首页\"\n      }\n    ]\n  }\n}\n",[366,952,953,957,961,973,977,995,1025,1029,1033,1047,1061,1066,1086,1104,1109,1114,1120],{"__ignoreMap":433},[437,954,955],{"class":439,"line":440},[437,956,570],{"class":569},[437,958,959],{"class":439,"line":454},[437,960,575],{"class":443},[437,962,963,965,967,969,971],{"class":439,"line":477},[437,964,580],{"class":443},[437,966,175],{"class":583},[437,968,586],{"class":443},[437,970,589],{"class":443},[437,972,592],{"class":443},[437,974,975],{"class":439,"line":595},[437,976,672],{"class":443},[437,978,979,981,983,985,987,989,991,993],{"class":439,"line":626},[437,980,678],{"class":443},[437,982,605],{"class":604},[437,984,586],{"class":443},[437,986,589],{"class":443},[437,988,601],{"class":443},[437,990,615],{"class":614},[437,992,586],{"class":443},[437,994,695],{"class":443},[437,996,997,999,1002,1004,1006,1008,1010,1013,1015,1017,1019,1021,1023],{"class":439,"line":649},[437,998,678],{"class":443},[437,1000,1001],{"class":604},"style",[437,1003,586],{"class":443},[437,1005,589],{"class":443},[437,1007,842],{"class":443},[437,1009,601],{"class":443},[437,1011,1012],{"class":719},"navigationBarTitleText",[437,1014,586],{"class":443},[437,1016,589],{"class":443},[437,1018,601],{"class":443},[437,1020,852],{"class":614},[437,1022,586],{"class":443},[437,1024,646],{"class":443},[437,1026,1027],{"class":439,"line":655},[437,1028,744],{"class":443},[437,1030,1031],{"class":439,"line":669},[437,1032,652],{"class":443},[437,1034,1035,1037,1040,1042,1044],{"class":439,"line":675},[437,1036,580],{"class":443},[437,1038,1039],{"class":583},"tabBar",[437,1041,586],{"class":443},[437,1043,589],{"class":443},[437,1045,1046],{"class":443}," {\n",[437,1048,1049,1052,1055,1057,1059],{"class":439,"line":698},[437,1050,1051],{"class":443},"    \"",[437,1053,1054],{"class":604},"list",[437,1056,586],{"class":443},[437,1058,589],{"class":443},[437,1060,592],{"class":443},[437,1062,1063],{"class":439,"line":711},[437,1064,1065],{"class":443},"      {\n",[437,1067,1068,1071,1074,1076,1078,1080,1082,1084],{"class":439,"line":735},[437,1069,1070],{"class":443},"        \"",[437,1072,1073],{"class":719},"pagePath",[437,1075,586],{"class":443},[437,1077,589],{"class":443},[437,1079,601],{"class":443},[437,1081,615],{"class":614},[437,1083,586],{"class":443},[437,1085,695],{"class":443},[437,1087,1088,1090,1093,1095,1097,1099,1101],{"class":439,"line":741},[437,1089,1070],{"class":443},[437,1091,1092],{"class":719},"text",[437,1094,586],{"class":443},[437,1096,589],{"class":443},[437,1098,601],{"class":443},[437,1100,852],{"class":614},[437,1102,1103],{"class":443},"\"\n",[437,1105,1106],{"class":439,"line":747},[437,1107,1108],{"class":443},"      }\n",[437,1110,1111],{"class":439,"line":753},[437,1112,1113],{"class":443},"    ]\n",[437,1115,1117],{"class":439,"line":1116},16,[437,1118,1119],{"class":443},"  }\n",[437,1121,1123],{"class":439,"line":1122},17,[437,1124,756],{"class":443},[403,1126,121],{"id":121},[363,1128,1129,1130,1133,1134,1137],{},"相同的页面布局只需在 ",[366,1131,1132],{},"src\u002Flayouts"," 定义，并在页面通过一行 ",[366,1135,1136],{},"layout"," 声明即可套用，实现业务与容器彻底解耦。",[413,1139,1140],{},[363,1141,1142],{},[418,1143,1144],{},"困扰：TabBar布局、全屏布局等页面布局在几十个页面里重复声明使用",[422,1146,1147,1210,1258],{"default-value":431,":expand-all":425},[427,1148,1151],{"className":429,"code":1149,"filename":1150,"language":432,"meta":433,"style":433},"\u003Ctemplate>\n  \u003Cview class=\"tabbar-shell\">\n    \u003Cslot \u002F>\n  \u003C\u002Fview>\n\u003C\u002Ftemplate>\n","src\u002Flayouts\u002Ftabbar.vue",[366,1152,1153,1161,1182,1193,1202],{"__ignoreMap":433},[437,1154,1155,1157,1159],{"class":439,"line":440},[437,1156,444],{"class":443},[437,1158,448],{"class":447},[437,1160,451],{"class":443},[437,1162,1163,1165,1167,1170,1173,1175,1178,1180],{"class":439,"line":454},[437,1164,457],{"class":443},[437,1166,460],{"class":447},[437,1168,1169],{"class":583}," class",[437,1171,1172],{"class":443},"=",[437,1174,586],{"class":443},[437,1176,1177],{"class":614},"tabbar-shell",[437,1179,586],{"class":443},[437,1181,451],{"class":443},[437,1183,1184,1187,1190],{"class":439,"line":477},[437,1185,1186],{"class":443},"    \u003C",[437,1188,1189],{"class":447},"slot",[437,1191,1192],{"class":443}," \u002F>\n",[437,1194,1195,1198,1200],{"class":439,"line":595},[437,1196,1197],{"class":443},"  \u003C\u002F",[437,1199,460],{"class":447},[437,1201,451],{"class":443},[437,1203,1204,1206,1208],{"class":439,"line":626},[437,1205,470],{"class":443},[437,1207,448],{"class":447},[437,1209,451],{"class":443},[427,1211,1214],{"className":429,"code":1212,"filename":1213,"language":432,"meta":433,"style":433},"\u003Ctemplate>\n  \u003COiyoLayout>\n    \u003COiyoPage \u002F>\n  \u003C\u002FOiyoLayout>\n\u003C\u002Ftemplate>\n","src\u002FApp.vue",[366,1215,1216,1224,1233,1242,1250],{"__ignoreMap":433},[437,1217,1218,1220,1222],{"class":439,"line":440},[437,1219,444],{"class":443},[437,1221,448],{"class":447},[437,1223,451],{"class":443},[437,1225,1226,1228,1231],{"class":439,"line":454},[437,1227,457],{"class":443},[437,1229,1230],{"class":447},"OiyoLayout",[437,1232,451],{"class":443},[437,1234,1235,1237,1240],{"class":439,"line":477},[437,1236,1186],{"class":443},[437,1238,1239],{"class":447},"OiyoPage",[437,1241,1192],{"class":443},[437,1243,1244,1246,1248],{"class":439,"line":595},[437,1245,1197],{"class":443},[437,1247,1230],{"class":447},[437,1249,451],{"class":443},[437,1251,1252,1254,1256],{"class":439,"line":626},[437,1253,470],{"class":443},[437,1255,448],{"class":447},[437,1257,451],{"class":443},[427,1259,1261],{"className":429,"code":1260,"filename":431,"language":432,"meta":433,"style":433},"\u003Cscript setup>\ndefinePageMeta({\n  layout: \"tabbar\",\n});\n\u003C\u002Fscript>\n",[366,1262,1263,1273,1281,1295,1303],{"__ignoreMap":433},[437,1264,1265,1267,1269,1271],{"class":439,"line":440},[437,1266,444],{"class":443},[437,1268,785],{"class":447},[437,1270,788],{"class":583},[437,1272,451],{"class":443},[437,1274,1275,1277,1279],{"class":439,"line":454},[437,1276,310],{"class":795},[437,1278,798],{"class":466},[437,1280,575],{"class":443},[437,1282,1283,1285,1287,1289,1291,1293],{"class":439,"line":477},[437,1284,821],{"class":447},[437,1286,589],{"class":443},[437,1288,601],{"class":443},[437,1290,828],{"class":614},[437,1292,586],{"class":443},[437,1294,695],{"class":443},[437,1296,1297,1299,1301],{"class":439,"line":595},[437,1298,895],{"class":443},[437,1300,898],{"class":466},[437,1302,901],{"class":443},[437,1304,1305,1307,1309],{"class":439,"line":626},[437,1306,470],{"class":443},[437,1308,785],{"class":447},[437,1310,451],{"class":443},[403,1312,116],{"id":116},[363,1314,1315,1318,1319,1322,1323,1325],{},[366,1316,1317],{},"defineRootContext()"," + ",[366,1320,1321],{},"useRootContext()","：自定义的全局弹窗、全局开关只需在 ",[366,1324,180],{}," 定义，随时使用。",[413,1327,1328],{},[363,1329,1330],{},[418,1331,1332],{},"困扰：全局弹窗没有统一管理，只能分开管理并且层层传递",[422,1334,1335,1662],{"default-value":1213,":expand-all":425},[427,1336,1338],{"className":429,"code":1337,"filename":1213,"language":432,"meta":433,"style":433},"\u003Cscript setup lang=\"ts\">\nconst { user, token, logout, toast } = defineRootContext(() => {\n  const user = ref\u003C{ name: string } | null>(null);\n  const token = ref(\"\");\n\n  function logout() {\n    user.value = null;\n    token.value = \"\";\n  }\n\n  const toast = ref(false)\n\n  return { user, token, logout, toast };\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003COiyoLayout>\n    \u003COiyoPage \u002F>\n  \u003C\u002FOiyoLayout>\n\n  \u003CCustomToast v-if=\"toast\" \u002F>\n\u003C\u002Ftemplate>\n",[366,1339,1340,1362,1405,1448,1467,1471,1482,1498,1514,1518,1522,1542,1546,1571,1579,1587,1591,1599,1608,1617,1626,1631,1653],{"__ignoreMap":433},[437,1341,1342,1344,1346,1348,1351,1353,1355,1358,1360],{"class":439,"line":440},[437,1343,444],{"class":443},[437,1345,785],{"class":447},[437,1347,788],{"class":583},[437,1349,1350],{"class":583}," lang",[437,1352,1172],{"class":443},[437,1354,586],{"class":443},[437,1356,1357],{"class":614},"ts",[437,1359,586],{"class":443},[437,1361,451],{"class":443},[437,1363,1364,1367,1369,1372,1374,1377,1379,1382,1384,1387,1389,1392,1395,1397,1400,1403],{"class":439,"line":454},[437,1365,1366],{"class":583},"const",[437,1368,842],{"class":443},[437,1370,1371],{"class":466}," user",[437,1373,877],{"class":443},[437,1375,1376],{"class":466}," token",[437,1378,877],{"class":443},[437,1380,1381],{"class":466}," logout",[437,1383,877],{"class":443},[437,1385,1386],{"class":466}," toast ",[437,1388,895],{"class":443},[437,1390,1391],{"class":443}," =",[437,1393,1394],{"class":795}," defineRootContext",[437,1396,798],{"class":466},[437,1398,1399],{"class":443},"()",[437,1401,1402],{"class":583}," =>",[437,1404,1046],{"class":443},[437,1406,1407,1410,1412,1414,1417,1420,1423,1425,1428,1431,1434,1437,1439,1441,1444,1446],{"class":439,"line":477},[437,1408,1409],{"class":583},"  const",[437,1411,1371],{"class":466},[437,1413,1391],{"class":443},[437,1415,1416],{"class":795}," ref",[437,1418,1419],{"class":443},"\u003C{",[437,1421,1422],{"class":447}," name",[437,1424,589],{"class":443},[437,1426,1427],{"class":604}," string",[437,1429,1430],{"class":443}," }",[437,1432,1433],{"class":443}," |",[437,1435,1436],{"class":604}," null",[437,1438,463],{"class":443},[437,1440,798],{"class":447},[437,1442,1443],{"class":443},"null",[437,1445,898],{"class":447},[437,1447,901],{"class":443},[437,1449,1450,1452,1454,1456,1458,1460,1463,1465],{"class":439,"line":595},[437,1451,1409],{"class":583},[437,1453,1376],{"class":466},[437,1455,1391],{"class":443},[437,1457,1416],{"class":795},[437,1459,798],{"class":447},[437,1461,1462],{"class":443},"\"\"",[437,1464,898],{"class":447},[437,1466,901],{"class":443},[437,1468,1469],{"class":439,"line":626},[437,1470,914],{"emptyLinePlaceholder":15},[437,1472,1473,1476,1478,1480],{"class":439,"line":649},[437,1474,1475],{"class":583},"  function",[437,1477,1381],{"class":795},[437,1479,1399],{"class":443},[437,1481,1046],{"class":443},[437,1483,1484,1487,1490,1493,1495],{"class":439,"line":655},[437,1485,1486],{"class":466},"    user",[437,1488,1489],{"class":443},".",[437,1491,1492],{"class":466},"value",[437,1494,1391],{"class":443},[437,1496,1497],{"class":443}," null;\n",[437,1499,1500,1503,1505,1507,1509,1512],{"class":439,"line":669},[437,1501,1502],{"class":466},"    token",[437,1504,1489],{"class":443},[437,1506,1492],{"class":466},[437,1508,1391],{"class":443},[437,1510,1511],{"class":443}," \"\"",[437,1513,901],{"class":443},[437,1515,1516],{"class":439,"line":675},[437,1517,1119],{"class":443},[437,1519,1520],{"class":439,"line":698},[437,1521,914],{"emptyLinePlaceholder":15},[437,1523,1524,1526,1529,1531,1533,1535,1539],{"class":439,"line":711},[437,1525,1409],{"class":583},[437,1527,1528],{"class":466}," toast",[437,1530,1391],{"class":443},[437,1532,1416],{"class":795},[437,1534,798],{"class":447},[437,1536,1538],{"class":1537},"sbKd-","false",[437,1540,1541],{"class":447},")\n",[437,1543,1544],{"class":439,"line":735},[437,1545,914],{"emptyLinePlaceholder":15},[437,1547,1548,1552,1554,1556,1558,1560,1562,1564,1566,1568],{"class":439,"line":741},[437,1549,1551],{"class":1550},"s8R28","  return",[437,1553,842],{"class":443},[437,1555,1371],{"class":466},[437,1557,877],{"class":443},[437,1559,1376],{"class":466},[437,1561,877],{"class":443},[437,1563,1381],{"class":466},[437,1565,877],{"class":443},[437,1567,1528],{"class":466},[437,1569,1570],{"class":443}," };\n",[437,1572,1573,1575,1577],{"class":439,"line":747},[437,1574,895],{"class":443},[437,1576,898],{"class":466},[437,1578,901],{"class":443},[437,1580,1581,1583,1585],{"class":439,"line":753},[437,1582,470],{"class":443},[437,1584,785],{"class":447},[437,1586,451],{"class":443},[437,1588,1589],{"class":439,"line":1116},[437,1590,914],{"emptyLinePlaceholder":15},[437,1592,1593,1595,1597],{"class":439,"line":1122},[437,1594,444],{"class":443},[437,1596,448],{"class":447},[437,1598,451],{"class":443},[437,1600,1602,1604,1606],{"class":439,"line":1601},18,[437,1603,457],{"class":443},[437,1605,1230],{"class":447},[437,1607,451],{"class":443},[437,1609,1611,1613,1615],{"class":439,"line":1610},19,[437,1612,1186],{"class":443},[437,1614,1239],{"class":447},[437,1616,1192],{"class":443},[437,1618,1620,1622,1624],{"class":439,"line":1619},20,[437,1621,1197],{"class":443},[437,1623,1230],{"class":447},[437,1625,451],{"class":443},[437,1627,1629],{"class":439,"line":1628},21,[437,1630,914],{"emptyLinePlaceholder":15},[437,1632,1634,1636,1639,1642,1644,1646,1649,1651],{"class":439,"line":1633},22,[437,1635,457],{"class":443},[437,1637,1638],{"class":447},"CustomToast",[437,1640,1641],{"class":1550}," v-if",[437,1643,1172],{"class":443},[437,1645,586],{"class":443},[437,1647,1648],{"class":466},"toast",[437,1650,586],{"class":443},[437,1652,1192],{"class":443},[437,1654,1656,1658,1660],{"class":439,"line":1655},23,[437,1657,470],{"class":443},[437,1659,448],{"class":447},[437,1661,451],{"class":443},[427,1663,1665],{"className":429,"code":1664,"filename":486,"language":432,"meta":433,"style":433},"\u003Cscript setup>\nconst { user, logout } = useRootContext();\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cview v-if=\"user\">你好，{{ user.name }}\u003C\u002Fview>\n\u003C\u002Ftemplate>\n",[366,1666,1667,1677,1701,1709,1713,1721,1749],{"__ignoreMap":433},[437,1668,1669,1671,1673,1675],{"class":439,"line":440},[437,1670,444],{"class":443},[437,1672,785],{"class":447},[437,1674,788],{"class":583},[437,1676,451],{"class":443},[437,1678,1679,1681,1683,1685,1687,1690,1692,1694,1697,1699],{"class":439,"line":454},[437,1680,1366],{"class":583},[437,1682,842],{"class":443},[437,1684,1371],{"class":466},[437,1686,877],{"class":443},[437,1688,1689],{"class":466}," logout ",[437,1691,895],{"class":443},[437,1693,1391],{"class":443},[437,1695,1696],{"class":795}," useRootContext",[437,1698,1399],{"class":466},[437,1700,901],{"class":443},[437,1702,1703,1705,1707],{"class":439,"line":477},[437,1704,470],{"class":443},[437,1706,785],{"class":447},[437,1708,451],{"class":443},[437,1710,1711],{"class":439,"line":595},[437,1712,914],{"emptyLinePlaceholder":15},[437,1714,1715,1717,1719],{"class":439,"line":626},[437,1716,444],{"class":443},[437,1718,448],{"class":447},[437,1720,451],{"class":443},[437,1722,1723,1725,1727,1729,1731,1733,1736,1738,1740,1743,1745,1747],{"class":439,"line":649},[437,1724,457],{"class":443},[437,1726,460],{"class":447},[437,1728,1641],{"class":583},[437,1730,1172],{"class":443},[437,1732,586],{"class":443},[437,1734,1735],{"class":614},"user",[437,1737,586],{"class":443},[437,1739,463],{"class":443},[437,1741,1742],{"class":466},"你好，{{ user.name }}",[437,1744,470],{"class":443},[437,1746,460],{"class":447},[437,1748,451],{"class":443},[437,1750,1751,1753,1755],{"class":439,"line":655},[437,1752,470],{"class":443},[437,1754,448],{"class":447},[437,1756,451],{"class":443},[403,1758,1759],{"id":1759},"跳转守卫",[363,1761,1762,1763,1766,1767,1770],{},"具名与全局中间件，异步拦截、",[366,1764,1765],{},"goTo()"," 重定向、",[366,1768,1769],{},"abortNavigation()"," 中止，路由守卫人性化配置。",[413,1772,1773],{},[363,1774,1775],{},[418,1776,1777],{},"困扰：路由拦截无法清晰定义，使用拦截器心智模型较高",[422,1779,1781,1973,2075],{"default-value":1780,":expand-all":425},"src\u002Fmiddlewares\u002Fauth.global.ts",[427,1782,1785],{"className":1783,"code":1784,"filename":1780,"language":1357,"meta":433,"style":433},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","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\", { replace: true });\n  }\n});\n",[366,1786,1787,1820,1824,1854,1883,1890,1894,1898,1928,1961,1965],{"__ignoreMap":433},[437,1788,1789,1791,1794,1796,1799,1801,1804,1806,1808,1810,1813,1815,1818],{"class":439,"line":440},[437,1790,1366],{"class":583},[437,1792,1793],{"class":466}," WHITE_LIST ",[437,1795,1172],{"class":443},[437,1797,1798],{"class":466}," [",[437,1800,586],{"class":443},[437,1802,1803],{"class":614},"\u002Fpages\u002Findex\u002Findex",[437,1805,586],{"class":443},[437,1807,877],{"class":443},[437,1809,601],{"class":443},[437,1811,1812],{"class":614},"\u002Fpages\u002Flogin\u002Flogin",[437,1814,586],{"class":443},[437,1816,1817],{"class":466},"]",[437,1819,901],{"class":443},[437,1821,1822],{"class":439,"line":454},[437,1823,914],{"emptyLinePlaceholder":15},[437,1825,1826,1829,1832,1835,1837,1839,1843,1845,1848,1850,1852],{"class":439,"line":477},[437,1827,1828],{"class":1550},"export",[437,1830,1831],{"class":1550}," default",[437,1833,1834],{"class":795}," defineRouteMiddleware",[437,1836,798],{"class":466},[437,1838,798],{"class":443},[437,1840,1842],{"class":1841},"s1nJG","to",[437,1844,877],{"class":443},[437,1846,1847],{"class":1841}," from",[437,1849,898],{"class":443},[437,1851,1402],{"class":583},[437,1853,1046],{"class":443},[437,1855,1856,1859,1862,1865,1867,1870,1872,1874,1876,1878,1881],{"class":439,"line":595},[437,1857,1858],{"class":1550},"  if",[437,1860,1861],{"class":447}," (",[437,1863,1864],{"class":466},"WHITE_LIST",[437,1866,1489],{"class":443},[437,1868,1869],{"class":795},"includes",[437,1871,798],{"class":447},[437,1873,1842],{"class":466},[437,1875,1489],{"class":443},[437,1877,605],{"class":466},[437,1879,1880],{"class":447},")) ",[437,1882,575],{"class":443},[437,1884,1885,1888],{"class":439,"line":626},[437,1886,1887],{"class":1550},"    return",[437,1889,901],{"class":443},[437,1891,1892],{"class":439,"line":649},[437,1893,1119],{"class":443},[437,1895,1896],{"class":439,"line":655},[437,1897,914],{"emptyLinePlaceholder":15},[437,1899,1900,1902,1904,1907,1910,1912,1915,1917,1919,1922,1924,1926],{"class":439,"line":669},[437,1901,1858],{"class":1550},[437,1903,1861],{"class":447},[437,1905,1906],{"class":443},"!",[437,1908,1909],{"class":466},"uni",[437,1911,1489],{"class":443},[437,1913,1914],{"class":795},"getStorageSync",[437,1916,798],{"class":447},[437,1918,586],{"class":443},[437,1920,1921],{"class":614},"token",[437,1923,586],{"class":443},[437,1925,1880],{"class":447},[437,1927,575],{"class":443},[437,1929,1930,1932,1935,1937,1939,1941,1943,1945,1947,1950,1952,1955,1957,1959],{"class":439,"line":675},[437,1931,1887],{"class":1550},[437,1933,1934],{"class":795}," goTo",[437,1936,798],{"class":447},[437,1938,586],{"class":443},[437,1940,1812],{"class":614},[437,1942,586],{"class":443},[437,1944,877],{"class":443},[437,1946,842],{"class":443},[437,1948,1949],{"class":447}," replace",[437,1951,589],{"class":443},[437,1953,1954],{"class":1537}," true",[437,1956,1430],{"class":443},[437,1958,898],{"class":447},[437,1960,901],{"class":443},[437,1962,1963],{"class":439,"line":698},[437,1964,1119],{"class":443},[437,1966,1967,1969,1971],{"class":439,"line":711},[437,1968,895],{"class":443},[437,1970,898],{"class":466},[437,1972,901],{"class":443},[427,1974,1977],{"className":1783,"code":1975,"filename":1976,"language":1357,"meta":433,"style":433},"export default defineRouteMiddleware((to, from) => {\n  const { user } = useRootContext()\n\n  if (user.permission !== 'pass') {\n    return abortNavigation()\n  }\n});\n","src\u002Fmiddlewares\u002Fpermission.ts",[366,1978,1979,2003,2020,2024,2054,2063,2067],{"__ignoreMap":433},[437,1980,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001],{"class":439,"line":440},[437,1982,1828],{"class":1550},[437,1984,1831],{"class":1550},[437,1986,1834],{"class":795},[437,1988,798],{"class":466},[437,1990,798],{"class":443},[437,1992,1842],{"class":1841},[437,1994,877],{"class":443},[437,1996,1847],{"class":1841},[437,1998,898],{"class":443},[437,2000,1402],{"class":583},[437,2002,1046],{"class":443},[437,2004,2005,2007,2009,2011,2013,2015,2017],{"class":439,"line":454},[437,2006,1409],{"class":583},[437,2008,842],{"class":443},[437,2010,1371],{"class":466},[437,2012,1430],{"class":443},[437,2014,1391],{"class":443},[437,2016,1696],{"class":795},[437,2018,2019],{"class":447},"()\n",[437,2021,2022],{"class":439,"line":477},[437,2023,914],{"emptyLinePlaceholder":15},[437,2025,2026,2028,2030,2032,2034,2037,2040,2043,2046,2049,2052],{"class":439,"line":595},[437,2027,1858],{"class":1550},[437,2029,1861],{"class":447},[437,2031,1735],{"class":466},[437,2033,1489],{"class":443},[437,2035,2036],{"class":466},"permission",[437,2038,2039],{"class":443}," !==",[437,2041,2042],{"class":443}," '",[437,2044,2045],{"class":614},"pass",[437,2047,2048],{"class":443},"'",[437,2050,2051],{"class":447},") ",[437,2053,575],{"class":443},[437,2055,2056,2058,2061],{"class":439,"line":626},[437,2057,1887],{"class":1550},[437,2059,2060],{"class":795}," abortNavigation",[437,2062,2019],{"class":447},[437,2064,2065],{"class":439,"line":649},[437,2066,1119],{"class":443},[437,2068,2069,2071,2073],{"class":439,"line":655},[437,2070,895],{"class":443},[437,2072,898],{"class":466},[437,2074,901],{"class":443},[427,2076,2079],{"className":429,"code":2077,"filename":2078,"language":432,"meta":433,"style":433},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  middleware: \"permission\",\n});\n\u003C\u002Fscript>\n","src\u002Fpages\u002Fdashboard\u002Findex.vue",[366,2080,2081,2101,2109,2124,2132],{"__ignoreMap":433},[437,2082,2083,2085,2087,2089,2091,2093,2095,2097,2099],{"class":439,"line":440},[437,2084,444],{"class":443},[437,2086,785],{"class":447},[437,2088,788],{"class":583},[437,2090,1350],{"class":583},[437,2092,1172],{"class":443},[437,2094,586],{"class":443},[437,2096,1357],{"class":614},[437,2098,586],{"class":443},[437,2100,451],{"class":443},[437,2102,2103,2105,2107],{"class":439,"line":454},[437,2104,310],{"class":795},[437,2106,798],{"class":466},[437,2108,575],{"class":443},[437,2110,2111,2114,2116,2118,2120,2122],{"class":439,"line":477},[437,2112,2113],{"class":447},"  middleware",[437,2115,589],{"class":443},[437,2117,601],{"class":443},[437,2119,2036],{"class":614},[437,2121,586],{"class":443},[437,2123,695],{"class":443},[437,2125,2126,2128,2130],{"class":439,"line":595},[437,2127,895],{"class":443},[437,2129,898],{"class":466},[437,2131,901],{"class":443},[437,2133,2134,2136,2138],{"class":439,"line":626},[437,2135,470],{"class":443},[437,2137,785],{"class":447},[437,2139,451],{"class":443},[403,2141,227],{"id":227},[363,2143,2144],{},"API 与 Component 自动扫描免主动 import，内置常见路径，类型提示完整。",[413,2146,2147],{},[363,2148,2149],{},[418,2150,2151],{},"困扰：每次都要写一长串 import，改个目录就要全局搜替换",[422,2153,2154,2249,2292],{"default-value":194,":expand-all":425},[427,2155,2158],{"className":1783,"code":2156,"filename":2157,"language":1357,"meta":433,"style":433},"export function useSystemDark() {\n  const { hostTheme } = uni.getSystemInfoSync();\n  const isDark = ref(hostTheme === \"dark\");\n  return readonly(isDark);\n}\n","src\u002Fcomposables\u002FuseSystemDark.ts",[366,2159,2160,2174,2199,2229,2245],{"__ignoreMap":433},[437,2161,2162,2164,2167,2170,2172],{"class":439,"line":440},[437,2163,1828],{"class":1550},[437,2165,2166],{"class":583}," function",[437,2168,2169],{"class":795}," useSystemDark",[437,2171,1399],{"class":443},[437,2173,1046],{"class":443},[437,2175,2176,2178,2180,2183,2185,2187,2190,2192,2195,2197],{"class":439,"line":454},[437,2177,1409],{"class":583},[437,2179,842],{"class":443},[437,2181,2182],{"class":466}," hostTheme",[437,2184,1430],{"class":443},[437,2186,1391],{"class":443},[437,2188,2189],{"class":466}," uni",[437,2191,1489],{"class":443},[437,2193,2194],{"class":795},"getSystemInfoSync",[437,2196,1399],{"class":447},[437,2198,901],{"class":443},[437,2200,2201,2203,2206,2208,2210,2212,2215,2218,2220,2223,2225,2227],{"class":439,"line":477},[437,2202,1409],{"class":583},[437,2204,2205],{"class":466}," isDark",[437,2207,1391],{"class":443},[437,2209,1416],{"class":795},[437,2211,798],{"class":447},[437,2213,2214],{"class":466},"hostTheme",[437,2216,2217],{"class":443}," ===",[437,2219,601],{"class":443},[437,2221,2222],{"class":614},"dark",[437,2224,586],{"class":443},[437,2226,898],{"class":447},[437,2228,901],{"class":443},[437,2230,2231,2233,2236,2238,2241,2243],{"class":439,"line":595},[437,2232,1551],{"class":1550},[437,2234,2235],{"class":795}," readonly",[437,2237,798],{"class":447},[437,2239,2240],{"class":466},"isDark",[437,2242,898],{"class":447},[437,2244,901],{"class":443},[437,2246,2247],{"class":439,"line":626},[437,2248,756],{"class":443},[427,2250,2252],{"className":429,"code":2251,"filename":1213,"language":432,"meta":433,"style":433},"\u003Cscript setup>\n\u002F\u002F 无需 import：ref、readonly、useSystemDark 直接可用\nconst isDark = useSystemDark();\n\u003C\u002Fscript>\n",[366,2253,2254,2264,2269,2284],{"__ignoreMap":433},[437,2255,2256,2258,2260,2262],{"class":439,"line":440},[437,2257,444],{"class":443},[437,2259,785],{"class":447},[437,2261,788],{"class":583},[437,2263,451],{"class":443},[437,2265,2266],{"class":439,"line":454},[437,2267,2268],{"class":569},"\u002F\u002F 无需 import：ref、readonly、useSystemDark 直接可用\n",[437,2270,2271,2273,2276,2278,2280,2282],{"class":439,"line":477},[437,2272,1366],{"class":583},[437,2274,2275],{"class":466}," isDark ",[437,2277,1172],{"class":443},[437,2279,2169],{"class":795},[437,2281,1399],{"class":466},[437,2283,901],{"class":443},[437,2285,2286,2288,2290],{"class":439,"line":595},[437,2287,470],{"class":443},[437,2289,785],{"class":447},[437,2291,451],{"class":443},[427,2293,2295],{"className":1783,"code":2294,"filename":194,"language":1357,"meta":433,"style":433},"import { defineOiyoConfig } from \"@skiyee\u002Foiyo\u002Fconfig\";\n\nexport default defineOiyoConfig({\n  scan: {\n    apis: [\"utils\u002F*.ts\"],\n    components: [\"ui\u002F**\u002F*.vue\"],\n  },\n});\n",[366,2296,2297,2320,2324,2336,2345,2365,2385,2390],{"__ignoreMap":433},[437,2298,2299,2302,2304,2307,2309,2311,2313,2316,2318],{"class":439,"line":440},[437,2300,2301],{"class":1550},"import",[437,2303,842],{"class":443},[437,2305,2306],{"class":466}," defineOiyoConfig",[437,2308,1430],{"class":443},[437,2310,1847],{"class":1550},[437,2312,601],{"class":443},[437,2314,2315],{"class":614},"@skiyee\u002Foiyo\u002Fconfig",[437,2317,586],{"class":443},[437,2319,901],{"class":443},[437,2321,2322],{"class":439,"line":454},[437,2323,914],{"emptyLinePlaceholder":15},[437,2325,2326,2328,2330,2332,2334],{"class":439,"line":477},[437,2327,1828],{"class":1550},[437,2329,1831],{"class":1550},[437,2331,2306],{"class":795},[437,2333,798],{"class":466},[437,2335,575],{"class":443},[437,2337,2338,2341,2343],{"class":439,"line":595},[437,2339,2340],{"class":447},"  scan",[437,2342,589],{"class":443},[437,2344,1046],{"class":443},[437,2346,2347,2350,2352,2354,2356,2359,2361,2363],{"class":439,"line":626},[437,2348,2349],{"class":447},"    apis",[437,2351,589],{"class":443},[437,2353,1798],{"class":466},[437,2355,586],{"class":443},[437,2357,2358],{"class":614},"utils\u002F*.ts",[437,2360,586],{"class":443},[437,2362,1817],{"class":466},[437,2364,695],{"class":443},[437,2366,2367,2370,2372,2374,2376,2379,2381,2383],{"class":439,"line":649},[437,2368,2369],{"class":447},"    components",[437,2371,589],{"class":443},[437,2373,1798],{"class":466},[437,2375,586],{"class":443},[437,2377,2378],{"class":614},"ui\u002F**\u002F*.vue",[437,2380,586],{"class":443},[437,2382,1817],{"class":466},[437,2384,695],{"class":443},[437,2386,2387],{"class":439,"line":655},[437,2388,2389],{"class":443},"  },\n",[437,2391,2392,2394,2396],{"class":439,"line":669},[437,2393,895],{"class":443},[437,2395,898],{"class":466},[437,2397,901],{"class":443},[403,2399,2400],{"id":2400},"数据请求",[363,2402,2403,2405],{},[366,2404,272],{}," 开箱即用，实例派生分层、生命周期钩子、自动重试、请求中断，一应俱全。",[413,2407,2408],{},[363,2409,2410],{},[418,2411,2412],{},"困扰：请求封装各写各的，token 注入和错误提示散落各处",[422,2414,2416,2582],{"default-value":2415,":expand-all":425},"src\u002Futils\u002Fapi.ts",[427,2417,2419],{"className":1783,"code":2418,"filename":2415,"language":1357,"meta":433,"style":433},"\u002F\u002F 公共实例\nconst api = createHttp({\n  baseURL: \"https:\u002F\u002Fapi.example.com\",\n  onBeforeRequest({ url, options }) {\n    console.log(\"发起请求\", url);\n  },\n});\n\n\u002F\u002F 派生带鉴权的实例\nexport const authApi = api.create({\n  headers: { Authorization: \"Bearer xxx\" },\n});\n",[366,2420,2421,2426,2442,2458,2479,2506,2510,2518,2522,2527,2551,2574],{"__ignoreMap":433},[437,2422,2423],{"class":439,"line":440},[437,2424,2425],{"class":569},"\u002F\u002F 公共实例\n",[437,2427,2428,2430,2433,2435,2438,2440],{"class":439,"line":454},[437,2429,1366],{"class":583},[437,2431,2432],{"class":466}," api ",[437,2434,1172],{"class":443},[437,2436,2437],{"class":795}," createHttp",[437,2439,798],{"class":466},[437,2441,575],{"class":443},[437,2443,2444,2447,2449,2451,2454,2456],{"class":439,"line":477},[437,2445,2446],{"class":447},"  baseURL",[437,2448,589],{"class":443},[437,2450,601],{"class":443},[437,2452,2453],{"class":614},"https:\u002F\u002Fapi.example.com",[437,2455,586],{"class":443},[437,2457,695],{"class":443},[437,2459,2460,2463,2466,2469,2471,2474,2477],{"class":439,"line":595},[437,2461,2462],{"class":447},"  onBeforeRequest",[437,2464,2465],{"class":443},"({",[437,2467,2468],{"class":1841}," url",[437,2470,877],{"class":443},[437,2472,2473],{"class":1841}," options",[437,2475,2476],{"class":443}," })",[437,2478,1046],{"class":443},[437,2480,2481,2484,2486,2489,2491,2493,2496,2498,2500,2502,2504],{"class":439,"line":626},[437,2482,2483],{"class":466},"    console",[437,2485,1489],{"class":443},[437,2487,2488],{"class":795},"log",[437,2490,798],{"class":447},[437,2492,586],{"class":443},[437,2494,2495],{"class":614},"发起请求",[437,2497,586],{"class":443},[437,2499,877],{"class":443},[437,2501,2468],{"class":466},[437,2503,898],{"class":447},[437,2505,901],{"class":443},[437,2507,2508],{"class":439,"line":649},[437,2509,2389],{"class":443},[437,2511,2512,2514,2516],{"class":439,"line":655},[437,2513,895],{"class":443},[437,2515,898],{"class":466},[437,2517,901],{"class":443},[437,2519,2520],{"class":439,"line":669},[437,2521,914],{"emptyLinePlaceholder":15},[437,2523,2524],{"class":439,"line":675},[437,2525,2526],{"class":569},"\u002F\u002F 派生带鉴权的实例\n",[437,2528,2529,2531,2534,2537,2539,2542,2544,2547,2549],{"class":439,"line":698},[437,2530,1828],{"class":1550},[437,2532,2533],{"class":583}," const",[437,2535,2536],{"class":466}," authApi ",[437,2538,1172],{"class":443},[437,2540,2541],{"class":466}," api",[437,2543,1489],{"class":443},[437,2545,2546],{"class":795},"create",[437,2548,798],{"class":466},[437,2550,575],{"class":443},[437,2552,2553,2556,2558,2560,2563,2565,2567,2570,2572],{"class":439,"line":711},[437,2554,2555],{"class":447},"  headers",[437,2557,589],{"class":443},[437,2559,842],{"class":443},[437,2561,2562],{"class":447}," Authorization",[437,2564,589],{"class":443},[437,2566,601],{"class":443},[437,2568,2569],{"class":614},"Bearer xxx",[437,2571,586],{"class":443},[437,2573,857],{"class":443},[437,2575,2576,2578,2580],{"class":439,"line":735},[437,2577,895],{"class":443},[437,2579,898],{"class":466},[437,2581,901],{"class":443},[427,2583,2586],{"className":1783,"code":2584,"filename":2585,"language":1357,"meta":433,"style":433},"export function useUser() {\n  async function fetchUser() {\n    return await authApi.request\u003C{ name: string }>(\"\u002Fuser\u002F1\");\n  }\n\n  return { fetchUser };\n}\n","src\u002Fcomposables\u002FuseUser.ts",[366,2587,2588,2601,2615,2654,2658,2662,2672],{"__ignoreMap":433},[437,2589,2590,2592,2594,2597,2599],{"class":439,"line":440},[437,2591,1828],{"class":1550},[437,2593,2166],{"class":583},[437,2595,2596],{"class":795}," useUser",[437,2598,1399],{"class":443},[437,2600,1046],{"class":443},[437,2602,2603,2606,2608,2611,2613],{"class":439,"line":454},[437,2604,2605],{"class":583},"  async",[437,2607,2166],{"class":583},[437,2609,2610],{"class":795}," fetchUser",[437,2612,1399],{"class":443},[437,2614,1046],{"class":443},[437,2616,2617,2619,2622,2625,2627,2630,2632,2634,2636,2638,2641,2643,2645,2648,2650,2652],{"class":439,"line":477},[437,2618,1887],{"class":1550},[437,2620,2621],{"class":1550}," await",[437,2623,2624],{"class":466}," authApi",[437,2626,1489],{"class":443},[437,2628,2629],{"class":795},"request",[437,2631,1419],{"class":443},[437,2633,1422],{"class":447},[437,2635,589],{"class":443},[437,2637,1427],{"class":604},[437,2639,2640],{"class":443}," }>",[437,2642,798],{"class":447},[437,2644,586],{"class":443},[437,2646,2647],{"class":614},"\u002Fuser\u002F1",[437,2649,586],{"class":443},[437,2651,898],{"class":447},[437,2653,901],{"class":443},[437,2655,2656],{"class":439,"line":595},[437,2657,1119],{"class":443},[437,2659,2660],{"class":439,"line":626},[437,2661,914],{"emptyLinePlaceholder":15},[437,2663,2664,2666,2668,2670],{"class":439,"line":649},[437,2665,1551],{"class":1550},[437,2667,842],{"class":443},[437,2669,2610],{"class":466},[437,2671,1570],{"class":443},[437,2673,2674],{"class":439,"line":655},[437,2675,756],{"class":443},[403,2677,2678],{"id":2678},"工程约定",[363,2680,2681],{},"固定目录 + 三层配置文件，结构稳定可预期，人、团队、AI 都能清晰理解。",[413,2683,2684],{},[363,2685,2686],{},[418,2687,2688],{},"困扰：目录结构无规定式约定，新成员和 AI 都要摸索半天",[422,2690,2691,2746,2834,2896,3068,3183,3248,3378,3460,3545],{"default-value":194},[427,2692,2695],{"className":429,"code":2693,"filename":2694,"language":432,"meta":433,"style":433},"\u003Ctemplate>\n  \u003C!-- components\u002F**\u002F*.vue 自动扫描，免注册使用 -->\n  \u003Cview class=\"app-brand\">Oiyo App\u003C\u002Fview>\n\u003C\u002Ftemplate>\n","src\u002Fcomponents\u002FTheApp.vue",[366,2696,2697,2705,2710,2738],{"__ignoreMap":433},[437,2698,2699,2701,2703],{"class":439,"line":440},[437,2700,444],{"class":443},[437,2702,448],{"class":447},[437,2704,451],{"class":443},[437,2706,2707],{"class":439,"line":454},[437,2708,2709],{"class":569},"  \u003C!-- components\u002F**\u002F*.vue 自动扫描，免注册使用 -->\n",[437,2711,2712,2714,2716,2718,2720,2722,2725,2727,2729,2732,2734,2736],{"class":439,"line":477},[437,2713,457],{"class":443},[437,2715,460],{"class":447},[437,2717,1169],{"class":583},[437,2719,1172],{"class":443},[437,2721,586],{"class":443},[437,2723,2724],{"class":614},"app-brand",[437,2726,586],{"class":443},[437,2728,463],{"class":443},[437,2730,2731],{"class":466},"Oiyo App",[437,2733,470],{"class":443},[437,2735,460],{"class":447},[437,2737,451],{"class":443},[437,2739,2740,2742,2744],{"class":439,"line":595},[437,2741,470],{"class":443},[437,2743,448],{"class":447},[437,2745,451],{"class":443},[427,2747,2749],{"className":1783,"code":2748,"filename":2157,"language":1357,"meta":433,"style":433},"\u002F\u002F composables\u002F*.ts 自动扫描，免 import 使用\nexport function useSystemDark() {\n  const { hostTheme } = uni.getSystemInfoSync();\n  const isDark = ref(hostTheme === \"dark\");\n  return readonly(isDark);\n}\n",[366,2750,2751,2756,2768,2790,2816,2830],{"__ignoreMap":433},[437,2752,2753],{"class":439,"line":440},[437,2754,2755],{"class":569},"\u002F\u002F composables\u002F*.ts 自动扫描，免 import 使用\n",[437,2757,2758,2760,2762,2764,2766],{"class":439,"line":454},[437,2759,1828],{"class":1550},[437,2761,2166],{"class":583},[437,2763,2169],{"class":795},[437,2765,1399],{"class":443},[437,2767,1046],{"class":443},[437,2769,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788],{"class":439,"line":477},[437,2771,1409],{"class":583},[437,2773,842],{"class":443},[437,2775,2182],{"class":466},[437,2777,1430],{"class":443},[437,2779,1391],{"class":443},[437,2781,2189],{"class":466},[437,2783,1489],{"class":443},[437,2785,2194],{"class":795},[437,2787,1399],{"class":447},[437,2789,901],{"class":443},[437,2791,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814],{"class":439,"line":595},[437,2793,1409],{"class":583},[437,2795,2205],{"class":466},[437,2797,1391],{"class":443},[437,2799,1416],{"class":795},[437,2801,798],{"class":447},[437,2803,2214],{"class":466},[437,2805,2217],{"class":443},[437,2807,601],{"class":443},[437,2809,2222],{"class":614},[437,2811,586],{"class":443},[437,2813,898],{"class":447},[437,2815,901],{"class":443},[437,2817,2818,2820,2822,2824,2826,2828],{"class":439,"line":626},[437,2819,1551],{"class":1550},[437,2821,2235],{"class":795},[437,2823,798],{"class":447},[437,2825,2240],{"class":466},[437,2827,898],{"class":447},[437,2829,901],{"class":443},[437,2831,2832],{"class":439,"line":649},[437,2833,756],{"class":443},[427,2835,2838],{"className":429,"code":2836,"filename":2837,"language":432,"meta":433,"style":433},"\u003C!-- 公共页面骨架，页面经 layout 声明套用 -->\n\u003Ctemplate>\n  \u003Cview class=\"layout-shell\">\n    \u003Cslot \u002F>\n  \u003C\u002Fview>\n\u003C\u002Ftemplate>\n","src\u002Flayouts\u002Fdefault.vue",[366,2839,2840,2845,2853,2872,2880,2888],{"__ignoreMap":433},[437,2841,2842],{"class":439,"line":440},[437,2843,2844],{"class":569},"\u003C!-- 公共页面骨架，页面经 layout 声明套用 -->\n",[437,2846,2847,2849,2851],{"class":439,"line":454},[437,2848,444],{"class":443},[437,2850,448],{"class":447},[437,2852,451],{"class":443},[437,2854,2855,2857,2859,2861,2863,2865,2868,2870],{"class":439,"line":477},[437,2856,457],{"class":443},[437,2858,460],{"class":447},[437,2860,1169],{"class":583},[437,2862,1172],{"class":443},[437,2864,586],{"class":443},[437,2866,2867],{"class":614},"layout-shell",[437,2869,586],{"class":443},[437,2871,451],{"class":443},[437,2873,2874,2876,2878],{"class":439,"line":595},[437,2875,1186],{"class":443},[437,2877,1189],{"class":447},[437,2879,1192],{"class":443},[437,2881,2882,2884,2886],{"class":439,"line":626},[437,2883,1197],{"class":443},[437,2885,460],{"class":447},[437,2887,451],{"class":443},[437,2889,2890,2892,2894],{"class":439,"line":649},[437,2891,470],{"class":443},[437,2893,448],{"class":447},[437,2895,451],{"class":443},[427,2897,2899],{"className":1783,"code":2898,"filename":1780,"language":1357,"meta":433,"style":433},"\u002F\u002F .global.ts 应用于所有页面，先于具名中间件执行\nconst 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\", { replace: true });\n  }\n});\n",[366,2900,2901,2906,2934,2938,2962,2986,2992,2996,3000,3026,3056,3060],{"__ignoreMap":433},[437,2902,2903],{"class":439,"line":440},[437,2904,2905],{"class":569},"\u002F\u002F .global.ts 应用于所有页面，先于具名中间件执行\n",[437,2907,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932],{"class":439,"line":454},[437,2909,1366],{"class":583},[437,2911,1793],{"class":466},[437,2913,1172],{"class":443},[437,2915,1798],{"class":466},[437,2917,586],{"class":443},[437,2919,1803],{"class":614},[437,2921,586],{"class":443},[437,2923,877],{"class":443},[437,2925,601],{"class":443},[437,2927,1812],{"class":614},[437,2929,586],{"class":443},[437,2931,1817],{"class":466},[437,2933,901],{"class":443},[437,2935,2936],{"class":439,"line":477},[437,2937,914],{"emptyLinePlaceholder":15},[437,2939,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960],{"class":439,"line":595},[437,2941,1828],{"class":1550},[437,2943,1831],{"class":1550},[437,2945,1834],{"class":795},[437,2947,798],{"class":466},[437,2949,798],{"class":443},[437,2951,1842],{"class":1841},[437,2953,877],{"class":443},[437,2955,1847],{"class":1841},[437,2957,898],{"class":443},[437,2959,1402],{"class":583},[437,2961,1046],{"class":443},[437,2963,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984],{"class":439,"line":626},[437,2965,1858],{"class":1550},[437,2967,1861],{"class":447},[437,2969,1864],{"class":466},[437,2971,1489],{"class":443},[437,2973,1869],{"class":795},[437,2975,798],{"class":447},[437,2977,1842],{"class":466},[437,2979,1489],{"class":443},[437,2981,605],{"class":466},[437,2983,1880],{"class":447},[437,2985,575],{"class":443},[437,2987,2988,2990],{"class":439,"line":649},[437,2989,1887],{"class":1550},[437,2991,901],{"class":443},[437,2993,2994],{"class":439,"line":655},[437,2995,1119],{"class":443},[437,2997,2998],{"class":439,"line":669},[437,2999,914],{"emptyLinePlaceholder":15},[437,3001,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024],{"class":439,"line":675},[437,3003,1858],{"class":1550},[437,3005,1861],{"class":447},[437,3007,1906],{"class":443},[437,3009,1909],{"class":466},[437,3011,1489],{"class":443},[437,3013,1914],{"class":795},[437,3015,798],{"class":447},[437,3017,586],{"class":443},[437,3019,1921],{"class":614},[437,3021,586],{"class":443},[437,3023,1880],{"class":447},[437,3025,575],{"class":443},[437,3027,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054],{"class":439,"line":698},[437,3029,1887],{"class":1550},[437,3031,1934],{"class":795},[437,3033,798],{"class":447},[437,3035,586],{"class":443},[437,3037,1812],{"class":614},[437,3039,586],{"class":443},[437,3041,877],{"class":443},[437,3043,842],{"class":443},[437,3045,1949],{"class":447},[437,3047,589],{"class":443},[437,3049,1954],{"class":1537},[437,3051,1430],{"class":443},[437,3053,898],{"class":447},[437,3055,901],{"class":443},[437,3057,3058],{"class":439,"line":711},[437,3059,1119],{"class":443},[437,3061,3062,3064,3066],{"class":439,"line":735},[437,3063,895],{"class":443},[437,3065,898],{"class":466},[437,3067,901],{"class":443},[427,3069,3071],{"className":429,"code":3070,"filename":431,"language":432,"meta":433,"style":433},"\u003Cscript setup>\n\u002F\u002F 主包页面：文件即路由，无需注册\ndefinePageMeta({\n  type: \"home\",\n  tab: { index: 0, text: \"首页\" },\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CTheApp \u002F>\n\u003C\u002Ftemplate>\n",[366,3072,3073,3083,3088,3096,3110,3138,3146,3154,3158,3166,3175],{"__ignoreMap":433},[437,3074,3075,3077,3079,3081],{"class":439,"line":440},[437,3076,444],{"class":443},[437,3078,785],{"class":447},[437,3080,788],{"class":583},[437,3082,451],{"class":443},[437,3084,3085],{"class":439,"line":454},[437,3086,3087],{"class":569},"\u002F\u002F 主包页面：文件即路由，无需注册\n",[437,3089,3090,3092,3094],{"class":439,"line":477},[437,3091,310],{"class":795},[437,3093,798],{"class":466},[437,3095,575],{"class":443},[437,3097,3098,3100,3102,3104,3106,3108],{"class":439,"line":595},[437,3099,805],{"class":447},[437,3101,589],{"class":443},[437,3103,601],{"class":443},[437,3105,812],{"class":614},[437,3107,586],{"class":443},[437,3109,695],{"class":443},[437,3111,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136],{"class":439,"line":626},[437,3113,862],{"class":447},[437,3115,589],{"class":443},[437,3117,842],{"class":443},[437,3119,869],{"class":447},[437,3121,589],{"class":443},[437,3123,874],{"class":719},[437,3125,877],{"class":443},[437,3127,880],{"class":447},[437,3129,589],{"class":443},[437,3131,601],{"class":443},[437,3133,852],{"class":614},[437,3135,586],{"class":443},[437,3137,857],{"class":443},[437,3139,3140,3142,3144],{"class":439,"line":649},[437,3141,895],{"class":443},[437,3143,898],{"class":466},[437,3145,901],{"class":443},[437,3147,3148,3150,3152],{"class":439,"line":655},[437,3149,470],{"class":443},[437,3151,785],{"class":447},[437,3153,451],{"class":443},[437,3155,3156],{"class":439,"line":669},[437,3157,914],{"emptyLinePlaceholder":15},[437,3159,3160,3162,3164],{"class":439,"line":675},[437,3161,444],{"class":443},[437,3163,448],{"class":447},[437,3165,451],{"class":443},[437,3167,3168,3170,3173],{"class":439,"line":698},[437,3169,457],{"class":443},[437,3171,3172],{"class":447},"TheApp",[437,3174,1192],{"class":443},[437,3176,3177,3179,3181],{"class":439,"line":711},[437,3178,470],{"class":443},[437,3180,448],{"class":447},[437,3182,451],{"class":443},[427,3184,3186],{"className":429,"code":3185,"filename":523,"language":432,"meta":433,"style":433},"\u003Cscript setup>\n\u002F\u002F 分包页面：packages\u002F\u003Croot>\u002Fpages\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cview>订单列表\u003C\u002Fview>\n\u003C\u002Ftemplate>\n",[366,3187,3188,3198,3203,3211,3215,3223,3240],{"__ignoreMap":433},[437,3189,3190,3192,3194,3196],{"class":439,"line":440},[437,3191,444],{"class":443},[437,3193,785],{"class":447},[437,3195,788],{"class":583},[437,3197,451],{"class":443},[437,3199,3200],{"class":439,"line":454},[437,3201,3202],{"class":569},"\u002F\u002F 分包页面：packages\u002F\u003Croot>\u002Fpages\n",[437,3204,3205,3207,3209],{"class":439,"line":477},[437,3206,470],{"class":443},[437,3208,785],{"class":447},[437,3210,451],{"class":443},[437,3212,3213],{"class":439,"line":595},[437,3214,914],{"emptyLinePlaceholder":15},[437,3216,3217,3219,3221],{"class":439,"line":626},[437,3218,444],{"class":443},[437,3220,448],{"class":447},[437,3222,451],{"class":443},[437,3224,3225,3227,3229,3231,3234,3236,3238],{"class":439,"line":649},[437,3226,457],{"class":443},[437,3228,460],{"class":447},[437,3230,463],{"class":443},[437,3232,3233],{"class":466},"订单列表",[437,3235,470],{"class":443},[437,3237,460],{"class":447},[437,3239,451],{"class":443},[437,3241,3242,3244,3246],{"class":439,"line":655},[437,3243,470],{"class":443},[437,3245,448],{"class":447},[437,3247,451],{"class":443},[427,3249,3251],{"className":429,"code":3250,"filename":1213,"language":432,"meta":433,"style":433},"\u003Cscript setup lang=\"ts\">\n\u002F\u002F 根部视图：全局壳层与根上下文\nconst { isDark } = defineRootContext(() => {\n  return { isDark: useSystemDark() };\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003COiyoLayout>\n    \u003COiyoPage \u002F>\n  \u003C\u002FOiyoLayout>\n\u003C\u002Ftemplate>\n",[366,3252,3253,3273,3278,3300,3318,3326,3334,3338,3346,3354,3362,3370],{"__ignoreMap":433},[437,3254,3255,3257,3259,3261,3263,3265,3267,3269,3271],{"class":439,"line":440},[437,3256,444],{"class":443},[437,3258,785],{"class":447},[437,3260,788],{"class":583},[437,3262,1350],{"class":583},[437,3264,1172],{"class":443},[437,3266,586],{"class":443},[437,3268,1357],{"class":614},[437,3270,586],{"class":443},[437,3272,451],{"class":443},[437,3274,3275],{"class":439,"line":454},[437,3276,3277],{"class":569},"\u002F\u002F 根部视图：全局壳层与根上下文\n",[437,3279,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298],{"class":439,"line":477},[437,3281,1366],{"class":583},[437,3283,842],{"class":443},[437,3285,2275],{"class":466},[437,3287,895],{"class":443},[437,3289,1391],{"class":443},[437,3291,1394],{"class":795},[437,3293,798],{"class":466},[437,3295,1399],{"class":443},[437,3297,1402],{"class":583},[437,3299,1046],{"class":443},[437,3301,3302,3304,3306,3308,3310,3312,3315],{"class":439,"line":595},[437,3303,1551],{"class":1550},[437,3305,842],{"class":443},[437,3307,2205],{"class":447},[437,3309,589],{"class":443},[437,3311,2169],{"class":795},[437,3313,3314],{"class":447},"() ",[437,3316,3317],{"class":443},"};\n",[437,3319,3320,3322,3324],{"class":439,"line":626},[437,3321,895],{"class":443},[437,3323,898],{"class":466},[437,3325,901],{"class":443},[437,3327,3328,3330,3332],{"class":439,"line":649},[437,3329,470],{"class":443},[437,3331,785],{"class":447},[437,3333,451],{"class":443},[437,3335,3336],{"class":439,"line":655},[437,3337,914],{"emptyLinePlaceholder":15},[437,3339,3340,3342,3344],{"class":439,"line":669},[437,3341,444],{"class":443},[437,3343,448],{"class":447},[437,3345,451],{"class":443},[437,3347,3348,3350,3352],{"class":439,"line":675},[437,3349,457],{"class":443},[437,3351,1230],{"class":447},[437,3353,451],{"class":443},[437,3355,3356,3358,3360],{"class":439,"line":698},[437,3357,1186],{"class":443},[437,3359,1239],{"class":447},[437,3361,1192],{"class":443},[437,3363,3364,3366,3368],{"class":439,"line":711},[437,3365,1197],{"class":443},[437,3367,1230],{"class":447},[437,3369,451],{"class":443},[437,3371,3372,3374,3376],{"class":439,"line":735},[437,3373,470],{"class":443},[437,3375,448],{"class":447},[437,3377,451],{"class":443},[427,3379,3381],{"className":1783,"code":3380,"filename":194,"language":1357,"meta":433,"style":433},"import { defineOiyoConfig } from \"@skiyee\u002Foiyo\u002Fconfig\";\n\n\u002F\u002F 固定目录约定：components \u002F composables \u002F layouts \u002F middlewares \u002F pages \u002F packages\nexport default defineOiyoConfig({\n  \u002F\u002F 自动打开小程序工具 IDE\n  ide: {\n    open: true\n  }\n});\n",[366,3382,3383,3403,3407,3412,3424,3429,3438,3448,3452],{"__ignoreMap":433},[437,3384,3385,3387,3389,3391,3393,3395,3397,3399,3401],{"class":439,"line":440},[437,3386,2301],{"class":1550},[437,3388,842],{"class":443},[437,3390,2306],{"class":466},[437,3392,1430],{"class":443},[437,3394,1847],{"class":1550},[437,3396,601],{"class":443},[437,3398,2315],{"class":614},[437,3400,586],{"class":443},[437,3402,901],{"class":443},[437,3404,3405],{"class":439,"line":454},[437,3406,914],{"emptyLinePlaceholder":15},[437,3408,3409],{"class":439,"line":477},[437,3410,3411],{"class":569},"\u002F\u002F 固定目录约定：components \u002F composables \u002F layouts \u002F middlewares \u002F pages \u002F packages\n",[437,3413,3414,3416,3418,3420,3422],{"class":439,"line":595},[437,3415,1828],{"class":1550},[437,3417,1831],{"class":1550},[437,3419,2306],{"class":795},[437,3421,798],{"class":466},[437,3423,575],{"class":443},[437,3425,3426],{"class":439,"line":626},[437,3427,3428],{"class":569},"  \u002F\u002F 自动打开小程序工具 IDE\n",[437,3430,3431,3434,3436],{"class":439,"line":649},[437,3432,3433],{"class":447},"  ide",[437,3435,589],{"class":443},[437,3437,1046],{"class":443},[437,3439,3440,3443,3445],{"class":439,"line":655},[437,3441,3442],{"class":447},"    open",[437,3444,589],{"class":443},[437,3446,3447],{"class":1537}," true\n",[437,3449,3450],{"class":439,"line":669},[437,3451,1119],{"class":443},[437,3453,3454,3456,3458],{"class":439,"line":675},[437,3455,895],{"class":443},[437,3457,898],{"class":466},[437,3459,901],{"class":443},[427,3461,3464],{"className":1783,"code":3462,"filename":3463,"language":1357,"meta":433,"style":433},"import { definePagesConfig } from \"@skiyee\u002Foiyo\u002Fconfig\";\n\nexport default definePagesConfig({\n  globalStyle: {\n    navigationBarTextStyle: \"black\",\n  },\n  \u002F\u002F pages \u002F subPackages 由扫描生成，无需手写\n});\n","src\u002Fpages.config.ts",[366,3465,3466,3487,3491,3503,3512,3528,3532,3537],{"__ignoreMap":433},[437,3467,3468,3470,3472,3475,3477,3479,3481,3483,3485],{"class":439,"line":440},[437,3469,2301],{"class":1550},[437,3471,842],{"class":443},[437,3473,3474],{"class":466}," definePagesConfig",[437,3476,1430],{"class":443},[437,3478,1847],{"class":1550},[437,3480,601],{"class":443},[437,3482,2315],{"class":614},[437,3484,586],{"class":443},[437,3486,901],{"class":443},[437,3488,3489],{"class":439,"line":454},[437,3490,914],{"emptyLinePlaceholder":15},[437,3492,3493,3495,3497,3499,3501],{"class":439,"line":477},[437,3494,1828],{"class":1550},[437,3496,1831],{"class":1550},[437,3498,3474],{"class":795},[437,3500,798],{"class":466},[437,3502,575],{"class":443},[437,3504,3505,3508,3510],{"class":439,"line":595},[437,3506,3507],{"class":447},"  globalStyle",[437,3509,589],{"class":443},[437,3511,1046],{"class":443},[437,3513,3514,3517,3519,3521,3524,3526],{"class":439,"line":626},[437,3515,3516],{"class":447},"    navigationBarTextStyle",[437,3518,589],{"class":443},[437,3520,601],{"class":443},[437,3522,3523],{"class":614},"black",[437,3525,586],{"class":443},[437,3527,695],{"class":443},[437,3529,3530],{"class":439,"line":649},[437,3531,2389],{"class":443},[437,3533,3534],{"class":439,"line":655},[437,3535,3536],{"class":569},"  \u002F\u002F pages \u002F subPackages 由扫描生成，无需手写\n",[437,3538,3539,3541,3543],{"class":439,"line":669},[437,3540,895],{"class":443},[437,3542,898],{"class":466},[437,3544,901],{"class":443},[427,3546,3549],{"className":1783,"code":3547,"filename":3548,"language":1357,"meta":433,"style":433},"import { defineManifestConfig } from \"@skiyee\u002Foiyo\u002Fconfig\";\n\nexport default defineManifestConfig({\n  name: \"我的应用\",\n  appid: \"__UNI__XXXXXX\",\n\n  \u002F\u002F 平台差异化配置：只写需要覆盖的键\n  \"mp-weixin\": {\n    appid: \"wx1234567890\",\n  },\n});\n","src\u002Fmanifest.config.ts",[366,3550,3551,3572,3576,3588,3604,3620,3624,3629,3642,3658,3662],{"__ignoreMap":433},[437,3552,3553,3555,3557,3560,3562,3564,3566,3568,3570],{"class":439,"line":440},[437,3554,2301],{"class":1550},[437,3556,842],{"class":443},[437,3558,3559],{"class":466}," defineManifestConfig",[437,3561,1430],{"class":443},[437,3563,1847],{"class":1550},[437,3565,601],{"class":443},[437,3567,2315],{"class":614},[437,3569,586],{"class":443},[437,3571,901],{"class":443},[437,3573,3574],{"class":439,"line":454},[437,3575,914],{"emptyLinePlaceholder":15},[437,3577,3578,3580,3582,3584,3586],{"class":439,"line":477},[437,3579,1828],{"class":1550},[437,3581,1831],{"class":1550},[437,3583,3559],{"class":795},[437,3585,798],{"class":466},[437,3587,575],{"class":443},[437,3589,3590,3593,3595,3597,3600,3602],{"class":439,"line":595},[437,3591,3592],{"class":447},"  name",[437,3594,589],{"class":443},[437,3596,601],{"class":443},[437,3598,3599],{"class":614},"我的应用",[437,3601,586],{"class":443},[437,3603,695],{"class":443},[437,3605,3606,3609,3611,3613,3616,3618],{"class":439,"line":626},[437,3607,3608],{"class":447},"  appid",[437,3610,589],{"class":443},[437,3612,601],{"class":443},[437,3614,3615],{"class":614},"__UNI__XXXXXX",[437,3617,586],{"class":443},[437,3619,695],{"class":443},[437,3621,3622],{"class":439,"line":649},[437,3623,914],{"emptyLinePlaceholder":15},[437,3625,3626],{"class":439,"line":655},[437,3627,3628],{"class":569},"  \u002F\u002F 平台差异化配置：只写需要覆盖的键\n",[437,3630,3631,3633,3636,3638,3640],{"class":439,"line":669},[437,3632,580],{"class":443},[437,3634,3635],{"class":447},"mp-weixin",[437,3637,586],{"class":443},[437,3639,589],{"class":443},[437,3641,1046],{"class":443},[437,3643,3644,3647,3649,3651,3654,3656],{"class":439,"line":675},[437,3645,3646],{"class":447},"    appid",[437,3648,589],{"class":443},[437,3650,601],{"class":443},[437,3652,3653],{"class":614},"wx1234567890",[437,3655,586],{"class":443},[437,3657,695],{"class":443},[437,3659,3660],{"class":439,"line":698},[437,3661,2389],{"class":443},[437,3663,3664,3666,3668],{"class":439,"line":711},[437,3665,895],{"class":443},[437,3667,898],{"class":466},[437,3669,901],{"class":443},[383,3671,3672],{"id":3672},"三大理念",[363,3674,3675],{},"理念不是口号，而是每一个设计决策的取舍依据：",[3677,3678,3679,3690,3696],"ol",{},[3680,3681,3682,3685,3686,3689],"li",{},[394,3683,3684],{},"融合AI协作"," — 目录即文档、约定即语境。固定的工程结构、",[372,3687,35],{"href":3688},"\u002Fllms.txt"," 与 Skills 让 AI 和人读的是同一套约定，AI 生成的代码天然贴合项目结构。",[3680,3691,3692,3695],{},[394,3693,3694],{},"提升开发体验"," — 重复劳动交给框架：路由注册、页面配置、模块导入、骨架复用全部自动化，且类型提示贯穿始终，写错路径在编译期就会暴露。",[3680,3697,3698,3701],{},[394,3699,3700],{},"降低心智成本"," — 不需要记住「什么放哪里」，只需要遵守「哪里放什么」。新成员从一周上手缩短到一天，页面越多，这套约定省下的心智越多。",[383,3703,3705],{"id":3704},"契合-ai","契合 AI",[363,3707,3708],{},"目录约定天然利于 AI 理解，同时提供专项支持：",[3710,3711,3712,3715],"ul",{},[3680,3713,3714],{},"LLMs.txt：让任意 AI 工具快速掌握 Oiyo 的用法与最佳实践",[3680,3716,3717,3718,3721],{},"Skills：",[366,3719,3720],{},"pnpx skills add skiyee\u002Fskills --skill oiyo-starter","，引导 AI 按工程约定开发",[383,3723,3724],{"id":3724},"适合谁",[3710,3726,3727,3730,3733,3736],{},[3680,3728,3729],{},"正在使用 UniApp 的中小团队",[3680,3731,3732],{},"希望降低协作成本的多人项目",[3680,3734,3735],{},"不想把心智花在工程维护上，只想专注业务的团队",[3680,3737,3738],{},"需要专业团队陪跑接入、迁移与排障的项目",[1001,3740,3741],{},"html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}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 .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 .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}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 .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}",{"title":433,"searchDepth":454,"depth":454,"links":3743},[3744,3754,3755,3756],{"id":385,"depth":454,"text":386,"children":3745},[3746,3747,3748,3749,3750,3751,3752,3753],{"id":220,"depth":477,"text":220},{"id":90,"depth":477,"text":90},{"id":121,"depth":477,"text":121},{"id":116,"depth":477,"text":116},{"id":1759,"depth":477,"text":1759},{"id":227,"depth":477,"text":227},{"id":2400,"depth":477,"text":2400},{"id":2678,"depth":477,"text":2678},{"id":3672,"depth":454,"text":3672},{"id":3704,"depth":454,"text":3705},{"id":3724,"depth":454,"text":3724},"Oiyo 以融合AI协作，提升开发体验，降低心智成本为三大理念","md",{},{"icon":22},{"title":20,"description":3757},"a5x97O0Tq-UjUu3cKI70gQJYm-Ujst8ODreoOwS7mMs",[6,3764],{"title":24,"path":25,"stem":26,"description":3765,"icon":27,"children":-1},"通过在线模板导入快速接入体验",1790692545273]