[{"data":1,"prerenderedAt":1562},["ShallowReactive",2],{"$fen922M9aBBBGS7gEr37q12a4sAhxXmwCENBD1e0zskM":3,"\u002Fdocs\u002Fmanual\u002Fscan\u002Fapi":278,"\u002Fdocs\u002Fmanual\u002Fscan\u002Fapi-surround":1557},[4,22,99,167,189,267],{"title":5,"titleTemplate":6,"icon":7,"redirect":8,"path":9,"stem":10,"children":11,"page":21},"起步指南",null,"i-lucide:rocket","\u002Fdocs\u002Fguide\u002Fintroduction","\u002Fdocs\u002Fguide","docs\u002F1.guide",[12,16],{"title":13,"path":8,"stem":14,"titleTemplate":6,"icon":15},"介绍","docs\u002F1.guide\u002F01.introduction","i-lucide:bot",{"title":17,"path":18,"stem":19,"titleTemplate":6,"icon":20},"安装","\u002Fdocs\u002Fguide\u002Finstallation","docs\u002F1.guide\u002F02.installation","i-lucide:download",false,{"title":23,"path":24,"stem":25,"children":26,"titleTemplate":6,"icon":29},"使用手册","\u002Fdocs\u002Fmanual","docs\u002F2.manual\u002F00.index",[27,30,35,40,57,78],{"title":23,"path":24,"stem":25,"titleTemplate":28,"icon":29},"%s | Oiyo","i-lucide:book-open-check",{"title":31,"path":32,"stem":33,"titleTemplate":6,"icon":34},"工程接入","\u002Fdocs\u002Fmanual\u002Fengineering","docs\u002F2.manual\u002F01.engineering","i-lucide:plug",{"title":36,"path":37,"stem":38,"titleTemplate":6,"icon":39},"配置系统","\u002Fdocs\u002Fmanual\u002Fconfiguration","docs\u002F2.manual\u002F02.configuration","i-lucide:sliders-horizontal",{"title":41,"titleTemplate":6,"defaultOpen":42,"icon":43,"path":44,"stem":45,"children":46,"page":21},"扫描导入",true,"i-lucide:scan-line","\u002Fdocs\u002Fmanual\u002Fscan","docs\u002F2.manual\u002F03.scan",[47,52],{"title":48,"path":49,"stem":50,"titleTemplate":6,"icon":51},"API 导入","\u002Fdocs\u002Fmanual\u002Fscan\u002Fapi","docs\u002F2.manual\u002F03.scan\u002F01.api","i-lucide:import",{"title":53,"path":54,"stem":55,"titleTemplate":6,"icon":56},"组件注册","\u002Fdocs\u002Fmanual\u002Fscan\u002Fcomponents","docs\u002F2.manual\u002F03.scan\u002F02.components","i-lucide:blocks",{"title":58,"titleTemplate":6,"defaultOpen":42,"icon":59,"path":60,"stem":61,"children":62,"page":21},"路由系统","i-lucide:map","\u002Fdocs\u002Fmanual\u002Fpage","docs\u002F2.manual\u002F04.page",[63,68,73],{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"页面注册","\u002Fdocs\u002Fmanual\u002Fpage\u002Fregister","docs\u002F2.manual\u002F04.page\u002F01.register","i-lucide:file-box",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"页面元信息","\u002Fdocs\u002Fmanual\u002Fpage\u002Fmeta","docs\u002F2.manual\u002F04.page\u002F02.meta","i-lucide:file-cog",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"全局页面配置","\u002Fdocs\u002Fmanual\u002Fpage\u002Fconfig","docs\u002F2.manual\u002F04.page\u002F03.config","i-lucide:palette",{"title":79,"titleTemplate":6,"defaultOpen":42,"icon":80,"path":81,"stem":82,"children":83,"page":21},"视图结构","i-lucide:panels-top-left","\u002Fdocs\u002Fmanual\u002Fshell","docs\u002F2.manual\u002F05.shell",[84,89,94],{"title":85,"path":86,"stem":87,"titleTemplate":6,"icon":88},"应用骨架","\u002Fdocs\u002Fmanual\u002Fshell\u002Fapp-shell","docs\u002F2.manual\u002F05.shell\u002F01.app-shell","i-lucide:app-window",{"title":90,"path":91,"stem":92,"titleTemplate":6,"icon":93},"根上下文","\u002Fdocs\u002Fmanual\u002Fshell\u002Froot-context","docs\u002F2.manual\u002F05.shell\u002F02.root-context","i-lucide:network",{"title":95,"path":96,"stem":97,"titleTemplate":6,"icon":98},"布局系统","\u002Fdocs\u002Fmanual\u002Fshell\u002Flayout","docs\u002F2.manual\u002F05.shell\u002F03.layout","i-lucide:layout-template",{"title":100,"path":101,"stem":102,"children":103,"titleTemplate":6,"icon":166},"项目结构","\u002Fdocs\u002Fstructure","docs\u002F3.structure\u002F0.index",[104,106,111,152,156,161],{"title":100,"path":101,"stem":102,"titleTemplate":28,"icon":105},"i-lucide-layers",{"title":107,"path":108,"stem":109,"titleTemplate":6,"icon":110},".oiyo","\u002Fdocs\u002Fstructure\u002Foiyo","docs\u002F3.structure\u002F1.oiyo","i-catppuccin:folder-temp",{"title":112,"titleTemplate":6,"defaultOpen":42,"icon":113,"path":114,"stem":115,"children":116,"page":21},"src","i-catppuccin:folder-src","\u002Fdocs\u002Fstructure\u002Fsrc","docs\u002F3.structure\u002F1.src",[117,122,127,132,137,142,147],{"title":118,"path":119,"stem":120,"titleTemplate":6,"icon":121},"components","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fcomponents","docs\u002F3.structure\u002F1.src\u002F1.components","i-catppuccin:folder-components",{"title":123,"path":124,"stem":125,"titleTemplate":6,"icon":126},"composables","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fcomposables","docs\u002F3.structure\u002F1.src\u002F1.composables","i-catppuccin:folder-composables",{"title":128,"path":129,"stem":130,"titleTemplate":6,"icon":131},"layouts","\u002Fdocs\u002Fstructure\u002Fsrc\u002Flayouts","docs\u002F3.structure\u002F1.src\u002F1.layouts","i-catppuccin:folder-layouts",{"title":133,"path":134,"stem":135,"titleTemplate":6,"icon":136},"packages","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpackages","docs\u002F3.structure\u002F1.src\u002F1.packages","i-catppuccin:folder-packages",{"title":138,"path":139,"stem":140,"titleTemplate":6,"icon":141},"pages","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpages","docs\u002F3.structure\u002F1.src\u002F1.pages","i-catppuccin:folder-views",{"title":143,"path":144,"stem":145,"titleTemplate":6,"icon":146},"App.vue","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fapp","docs\u002F3.structure\u002F1.src\u002F2.app","i-catppuccin:vue",{"title":148,"path":149,"stem":150,"titleTemplate":6,"icon":151},"pages.config.ts","\u002Fdocs\u002Fstructure\u002Fsrc\u002Fpages-config","docs\u002F3.structure\u002F1.src\u002F3.pages-config","i-catppuccin:typescript",{"title":153,"path":154,"stem":155,"titleTemplate":6,"icon":151},"oiyo.config.ts","\u002Fdocs\u002Fstructure\u002Foiyo-config","docs\u002F3.structure\u002F3.oiyo-config",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"package.json","\u002Fdocs\u002Fstructure\u002Fpackage","docs\u002F3.structure\u002F3.package","i-catppuccin:package-json",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":165},"tsconfig.json","\u002Fdocs\u002Fstructure\u002Ftsconfig","docs\u002F3.structure\u002F3.tsconfig","i-catppuccin:typescript-config","i-lucide:layers",{"title":168,"titleTemplate":6,"icon":169,"redirect":170,"path":171,"stem":172,"children":173,"page":21},"核心概念","i-lucide:leaf","\u002Fdocs\u002Fconcept\u002Fapp","\u002Fdocs\u002Fconcept","docs\u002F4.concept",[174,178,182,185],{"title":175,"path":170,"stem":176,"titleTemplate":6,"icon":177},"根部视图","docs\u002F4.concept\u002F01.app","i-lucide:route",{"title":179,"path":180,"stem":181,"titleTemplate":6,"icon":59},"自动路由","\u002Fdocs\u002Fconcept\u002Froute","docs\u002F4.concept\u002F02.route",{"title":95,"path":183,"stem":184,"titleTemplate":6,"icon":98},"\u002Fdocs\u002Fconcept\u002Flayout","docs\u002F4.concept\u002F03.layout",{"title":186,"path":187,"stem":188,"titleTemplate":6,"icon":43},"自动导入","\u002Fdocs\u002Fconcept\u002Fauto-imports","docs\u002F4.concept\u002F04.auto-imports",{"title":190,"path":191,"stem":192,"children":193,"titleTemplate":6,"icon":266},"API","\u002Fdocs\u002Fapi","docs\u002F5.api\u002F00.index",[194,196,210,220,234,248],{"title":195,"path":191,"stem":192,"titleTemplate":28},"API 参考",{"title":197,"titleTemplate":6,"defaultOpen":42,"icon":198,"path":199,"stem":200,"children":201,"page":21},"配置","i-lucide:settings","\u002Fdocs\u002Fapi\u002Fconfig","docs\u002F5.api\u002F01.config",[202,206],{"title":203,"path":204,"stem":205,"titleTemplate":6},"defineOiyoConfig","\u002Fdocs\u002Fapi\u002Fconfig\u002Fdefine-oiyo-config","docs\u002F5.api\u002F01.config\u002F01.define-oiyo-config",{"title":207,"path":208,"stem":209,"titleTemplate":6},"definePagesConfig","\u002Fdocs\u002Fapi\u002Fconfig\u002Fdefine-pages-config","docs\u002F5.api\u002F01.config\u002F02.define-pages-config",{"title":211,"titleTemplate":6,"defaultOpen":42,"icon":212,"path":213,"stem":214,"children":215,"page":21},"运行时","i-lucide:shrub","\u002Fdocs\u002Fapi\u002Fruntime","docs\u002F5.api\u002F02.runtime",[216],{"title":217,"path":218,"stem":219,"titleTemplate":6},"Vue \u002F UniApp","\u002Fdocs\u002Fapi\u002Fruntime\u002Freference","docs\u002F5.api\u002F02.runtime\u002F01.reference",{"title":221,"titleTemplate":6,"defaultOpen":42,"icon":222,"path":223,"stem":224,"children":225,"page":21},"宏","i-lucide:wand","\u002Fdocs\u002Fapi\u002Fmacro","docs\u002F5.api\u002F04.macro",[226,230],{"title":227,"path":228,"stem":229,"titleTemplate":6},"defineRootContext","\u002Fdocs\u002Fapi\u002Fmacro\u002Fdefine-root-context","docs\u002F5.api\u002F04.macro\u002F01.define-root-context",{"title":231,"path":232,"stem":233,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002Fapi\u002Fmacro\u002Fdefine-page-meta","docs\u002F5.api\u002F04.macro\u002F02.define-page-meta",{"title":235,"titleTemplate":6,"defaultOpen":42,"icon":236,"path":237,"stem":238,"children":239,"page":21},"组件","i-lucide:component","\u002Fdocs\u002Fapi\u002Fcomponents","docs\u002F5.api\u002F05.components",[240,244],{"title":241,"path":242,"stem":243,"titleTemplate":6},"\u003COiyoPage>","\u002Fdocs\u002Fapi\u002Fcomponents\u002Foiyo-page","docs\u002F5.api\u002F05.components\u002F01.oiyo-page",{"title":245,"path":246,"stem":247,"titleTemplate":6},"\u003COiyoLayout>","\u002Fdocs\u002Fapi\u002Fcomponents\u002Foiyo-layout","docs\u002F5.api\u002F05.components\u002F02.oiyo-layout",{"title":249,"titleTemplate":6,"defaultOpen":42,"icon":250,"path":251,"stem":252,"children":253,"page":21},"命令","i-lucide:command","\u002Fdocs\u002Fapi\u002Fcli","docs\u002F5.api\u002F06.cli",[254,258,262],{"title":255,"path":256,"stem":257,"titleTemplate":6},"oiyo prepare","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-prepare","docs\u002F5.api\u002F06.cli\u002F00.oiyo-prepare",{"title":259,"path":260,"stem":261,"titleTemplate":6},"oiyo dev","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-dev","docs\u002F5.api\u002F06.cli\u002F01.oiyo-dev",{"title":263,"path":264,"stem":265,"titleTemplate":6},"oiyo build","\u002Fdocs\u002Fapi\u002Fcli\u002Foiyo-build","docs\u002F5.api\u002F06.cli\u002F02.oiyo-build","i-lucide:braces",{"title":268,"titleTemplate":6,"icon":269,"redirect":270,"path":271,"stem":272,"children":273,"page":21},"沟通交流","i-lucide:message-circle-question","\u002Fdocs\u002Fcommunity\u002Fassist","\u002Fdocs\u002Fcommunity","docs\u002F9.community",[274],{"title":275,"path":270,"stem":276,"titleTemplate":6,"icon":277},"加群互助","docs\u002F9.community\u002F01.assist","i-lucide:scan-qr-code",{"id":279,"title":48,"body":280,"description":1551,"extension":1552,"meta":1553,"navigation":1554,"path":49,"seo":1555,"stem":50,"titleTemplate":6,"__hash__":1556},"docs\u002Fdocs\u002F2.manual\u002F03.scan\u002F01.api.md",{"type":281,"value":282,"toc":1541},"minimark",[283,292,295,308,312,320,325,328,518,528,538,542,549,555,688,705,710,714,1060,1063,1322,1326,1333,1414,1417,1432,1461,1464,1467,1470,1484,1487,1490,1493,1510,1513,1516,1537],[284,285,286,287,291],"p",{},"自动引用机制可以让你在应用文件中直接使用 API，而不必重复显式 import。Oiyo 会根据 ",[288,289,290],"code",{},"scan.apis"," 扫描规则启用自动引用机制。",[284,293,294],{},"主要解决：",[296,297,298,302,305],"ul",{},[299,300,301],"li",{},"按需引入。",[299,303,304],{},"减少样板代码。",[299,306,307],{},"获得类型提示和检查。",[309,310,311],"h2",{"id":311},"扫描源",[284,313,314,315,319],{},"采用 glob 语法进行文件匹配，扫描源按 ",[316,317,318],"strong",{},"使用侧"," 的导入来源声明。",[321,322,324],"h3",{"id":323},"运行时-api","运行时 API",[284,326,327],{},"Oiyo 已内置 Runtime API 的扫描源，可以直接使用它们。",[329,330,336],"pre",{"className":331,"code":332,"filename":333,"language":334,"meta":335,"style":335},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cscript setup>\n\u002F\u002F 无需手动导入类型: import type { Ref } from '@skiyee\u002Foiyo\u002Fruntime';\n\u002F\u002F 无需手动导入方法: import { ref, onLaunch } from '@skiyee\u002Foiyo\u002Fruntime';\n\nconst title: Ref\u003Cstring> = ref('Hello Oiyo')\nconst count = ref(0)\n\nonLaunch(() => {\n  console.log('App Launch, title:', title.value)\n})\n\u003C\u002Fscript>\n","src\u002FApp.vue","vue","",[288,337,338,358,365,371,377,424,445,450,467,500,508],{"__ignoreMap":335},[339,340,343,347,351,355],"span",{"class":341,"line":342},"line",1,[339,344,346],{"class":345},"sDfIl","\u003C",[339,348,350],{"class":349},"sRlkE","script",[339,352,354],{"class":353},"smZ93"," setup",[339,356,357],{"class":345},">\n",[339,359,361],{"class":341,"line":360},2,[339,362,364],{"class":363},"sWuyu","\u002F\u002F 无需手动导入类型: import type { Ref } from '@skiyee\u002Foiyo\u002Fruntime';\n",[339,366,368],{"class":341,"line":367},3,[339,369,370],{"class":363},"\u002F\u002F 无需手动导入方法: import { ref, onLaunch } from '@skiyee\u002Foiyo\u002Fruntime';\n",[339,372,374],{"class":341,"line":373},4,[339,375,376],{"emptyLinePlaceholder":42},"\n",[339,378,380,383,387,390,394,396,399,402,405,409,412,415,419,421],{"class":341,"line":379},5,[339,381,382],{"class":353},"const",[339,384,386],{"class":385},"sZSNi"," title",[339,388,389],{"class":345},":",[339,391,393],{"class":392},"s52Pk"," Ref",[339,395,346],{"class":345},[339,397,398],{"class":392},"string",[339,400,401],{"class":345},">",[339,403,404],{"class":345}," =",[339,406,408],{"class":407},"s3cPz"," ref",[339,410,411],{"class":385},"(",[339,413,414],{"class":345},"'",[339,416,418],{"class":417},"sGFVr","Hello Oiyo",[339,420,414],{"class":345},[339,422,423],{"class":385},")\n",[339,425,427,429,432,435,437,439,443],{"class":341,"line":426},6,[339,428,382],{"class":353},[339,430,431],{"class":385}," count ",[339,433,434],{"class":345},"=",[339,436,408],{"class":407},[339,438,411],{"class":385},[339,440,442],{"class":441},"sYRBq","0",[339,444,423],{"class":385},[339,446,448],{"class":341,"line":447},7,[339,449,376],{"emptyLinePlaceholder":42},[339,451,453,456,458,461,464],{"class":341,"line":452},8,[339,454,455],{"class":407},"onLaunch",[339,457,411],{"class":385},[339,459,460],{"class":345},"()",[339,462,463],{"class":353}," =>",[339,465,466],{"class":345}," {\n",[339,468,470,473,476,479,481,483,486,488,491,493,495,498],{"class":341,"line":469},9,[339,471,472],{"class":385},"  console",[339,474,475],{"class":345},".",[339,477,478],{"class":407},"log",[339,480,411],{"class":349},[339,482,414],{"class":345},[339,484,485],{"class":417},"App Launch, title:",[339,487,414],{"class":345},[339,489,490],{"class":345},",",[339,492,386],{"class":385},[339,494,475],{"class":345},[339,496,497],{"class":385},"value",[339,499,423],{"class":349},[339,501,503,506],{"class":341,"line":502},10,[339,504,505],{"class":345},"}",[339,507,423],{"class":385},[339,509,511,514,516],{"class":341,"line":510},11,[339,512,513],{"class":345},"\u003C\u002F",[339,515,350],{"class":349},[339,517,357],{"class":345},[284,519,520,521,524,525,527],{},"这里无需导入 ",[288,522,523],{},"ref"," 或 ",[288,526,455],{},"，因为 Oiyo 会通过自动引用机制处理这些来源。",[529,530,531],"tip",{},[284,532,533,534,537],{},"在 Vue 文件中使用只是示例，你可以在 ",[316,535,536],{},"应用的任意文件"," 中进行使用。",[321,539,541],{"id":540},"本地-api","本地 API",[284,543,544,545,548],{},"Oiyo 已内置 ",[288,546,547],{},"composables\u002F*.ts"," 作为约定扫描源，无需再次配置。",[284,550,551,552,554],{},"对于非约定目录，可以在 ",[288,553,153],{}," 中显式配置：",[329,556,560],{"className":557,"code":558,"filename":153,"language":559,"meta":335,"style":335},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","import { defineOiyoConfig } from '@skiyee\u002Foiyo\u002Fconfig'\n\nexport default defineOiyoConfig({\n  scan: {\n    apis: [\n      'utils\u002F*.ts',\n      { from: 'shared\u002F*.ts', types: true },\n    ],\n  },\n})\n","ts",[288,561,562,589,593,608,617,627,640,670,677,682],{"__ignoreMap":335},[339,563,564,568,571,574,577,580,583,586],{"class":341,"line":342},[339,565,567],{"class":566},"s8R28","import",[339,569,570],{"class":345}," {",[339,572,573],{"class":385}," defineOiyoConfig",[339,575,576],{"class":345}," }",[339,578,579],{"class":566}," from",[339,581,582],{"class":345}," '",[339,584,585],{"class":417},"@skiyee\u002Foiyo\u002Fconfig",[339,587,588],{"class":345},"'\n",[339,590,591],{"class":341,"line":360},[339,592,376],{"emptyLinePlaceholder":42},[339,594,595,598,601,603,605],{"class":341,"line":367},[339,596,597],{"class":566},"export",[339,599,600],{"class":566}," default",[339,602,573],{"class":407},[339,604,411],{"class":385},[339,606,607],{"class":345},"{\n",[339,609,610,613,615],{"class":341,"line":373},[339,611,612],{"class":349},"  scan",[339,614,389],{"class":345},[339,616,466],{"class":345},[339,618,619,622,624],{"class":341,"line":379},[339,620,621],{"class":349},"    apis",[339,623,389],{"class":345},[339,625,626],{"class":385}," [\n",[339,628,629,632,635,637],{"class":341,"line":426},[339,630,631],{"class":345},"      '",[339,633,634],{"class":417},"utils\u002F*.ts",[339,636,414],{"class":345},[339,638,639],{"class":345},",\n",[339,641,642,645,647,649,651,654,656,658,661,663,667],{"class":341,"line":447},[339,643,644],{"class":345},"      {",[339,646,579],{"class":349},[339,648,389],{"class":345},[339,650,582],{"class":345},[339,652,653],{"class":417},"shared\u002F*.ts",[339,655,414],{"class":345},[339,657,490],{"class":345},[339,659,660],{"class":349}," types",[339,662,389],{"class":345},[339,664,666],{"class":665},"sbKd-"," true",[339,668,669],{"class":345}," },\n",[339,671,672,675],{"class":341,"line":452},[339,673,674],{"class":385},"    ]",[339,676,639],{"class":345},[339,678,679],{"class":341,"line":469},[339,680,681],{"class":345},"  },\n",[339,683,684,686],{"class":341,"line":502},[339,685,505],{"class":345},[339,687,423],{"class":385},[689,690,691],"note",{},[284,692,693,694,697,698,700,701,704],{},"扫描路径均基于 ",[288,695,696],{},"\u003CsrcDir>"," 目录。即 ",[288,699,634],{}," 将扫描 ",[288,702,703],{},"src\u002Futils"," 下第一层 TypeScript 文件。",[529,706,707],{},[284,708,709],{},"避免使用 Barrel Files（index 桶文件）进行模块重导出，否则可能造成重复扫描。",[711,712,713],"h4",{"id":713},"定义",[715,716,717,810,884],"code-group",{},[329,718,721],{"className":557,"code":719,"filename":720,"language":559,"meta":335,"style":335},"export function useSystemDark() {\n  const { hostTheme } = uni.getSystemInfoSync()\n  const isDark = ref(hostTheme === 'dark')\n  return readonly(isDark)\n}\n","src\u002Fcomposables\u002FuseSystemDark.ts",[288,722,723,737,762,790,805],{"__ignoreMap":335},[339,724,725,727,730,733,735],{"class":341,"line":342},[339,726,597],{"class":566},[339,728,729],{"class":353}," function",[339,731,732],{"class":407}," useSystemDark",[339,734,460],{"class":345},[339,736,466],{"class":345},[339,738,739,742,744,747,749,751,754,756,759],{"class":341,"line":360},[339,740,741],{"class":353},"  const",[339,743,570],{"class":345},[339,745,746],{"class":385}," hostTheme",[339,748,576],{"class":345},[339,750,404],{"class":345},[339,752,753],{"class":385}," uni",[339,755,475],{"class":345},[339,757,758],{"class":407},"getSystemInfoSync",[339,760,761],{"class":349},"()\n",[339,763,764,766,769,771,773,775,778,781,783,786,788],{"class":341,"line":367},[339,765,741],{"class":353},[339,767,768],{"class":385}," isDark",[339,770,404],{"class":345},[339,772,408],{"class":407},[339,774,411],{"class":349},[339,776,777],{"class":385},"hostTheme",[339,779,780],{"class":345}," ===",[339,782,582],{"class":345},[339,784,785],{"class":417},"dark",[339,787,414],{"class":345},[339,789,423],{"class":349},[339,791,792,795,798,800,803],{"class":341,"line":373},[339,793,794],{"class":566},"  return",[339,796,797],{"class":407}," readonly",[339,799,411],{"class":349},[339,801,802],{"class":385},"isDark",[339,804,423],{"class":349},[339,806,807],{"class":341,"line":379},[339,808,809],{"class":345},"}\n",[329,811,814],{"className":557,"code":812,"filename":813,"language":559,"meta":335,"style":335},"export function sleep(ms = 300) {\n  return new Promise\u003Cvoid>(resolve => setTimeout(resolve, ms))\n}\n","src\u002Futils\u002Fpromiser.ts",[288,815,816,841,880],{"__ignoreMap":335},[339,817,818,820,822,825,827,831,833,836,839],{"class":341,"line":342},[339,819,597],{"class":566},[339,821,729],{"class":353},[339,823,824],{"class":407}," sleep",[339,826,411],{"class":345},[339,828,830],{"class":829},"s1nJG","ms",[339,832,404],{"class":345},[339,834,835],{"class":441}," 300",[339,837,838],{"class":345},")",[339,840,466],{"class":345},[339,842,843,845,848,851,853,856,858,860,863,865,868,870,872,874,877],{"class":341,"line":360},[339,844,794],{"class":566},[339,846,847],{"class":345}," new",[339,849,850],{"class":392}," Promise",[339,852,346],{"class":345},[339,854,855],{"class":392},"void",[339,857,401],{"class":345},[339,859,411],{"class":349},[339,861,862],{"class":829},"resolve",[339,864,463],{"class":353},[339,866,867],{"class":407}," setTimeout",[339,869,411],{"class":349},[339,871,862],{"class":385},[339,873,490],{"class":345},[339,875,876],{"class":385}," ms",[339,878,879],{"class":349},"))\n",[339,881,882],{"class":341,"line":367},[339,883,809],{"class":345},[329,885,888],{"className":557,"code":886,"filename":887,"language":559,"meta":335,"style":335},"export type DeepPartial\u003CT> = { [P in keyof T]?: _DeepPartial\u003CT[P]> }\n\ntype _DeepPartial\u003CT> = T extends Function\n  ? T\n  : T extends Array\u003Cinfer U>\n  ? Array\u003C_DeepPartial\u003CU>>\n  : T extends object\n  ? DeepPartial\u003CT>\n  : T | undefined\n","src\u002Fshared\u002Ftype-utils.ts",[288,889,890,951,955,978,986,1006,1025,1036,1048],{"__ignoreMap":335},[339,891,892,894,897,900,902,905,907,909,911,914,917,920,923,926,929,932,935,937,939,942,944,946,948],{"class":341,"line":342},[339,893,597],{"class":566},[339,895,896],{"class":353}," type",[339,898,899],{"class":392}," DeepPartial",[339,901,346],{"class":345},[339,903,904],{"class":392},"T",[339,906,401],{"class":345},[339,908,404],{"class":345},[339,910,570],{"class":345},[339,912,913],{"class":385}," [",[339,915,916],{"class":392},"P",[339,918,919],{"class":345}," in",[339,921,922],{"class":345}," keyof",[339,924,925],{"class":392}," T",[339,927,928],{"class":385},"]",[339,930,931],{"class":345},"?:",[339,933,934],{"class":392}," _DeepPartial",[339,936,346],{"class":345},[339,938,904],{"class":392},[339,940,941],{"class":385},"[",[339,943,916],{"class":392},[339,945,928],{"class":385},[339,947,401],{"class":345},[339,949,950],{"class":345}," }\n",[339,952,953],{"class":341,"line":360},[339,954,376],{"emptyLinePlaceholder":42},[339,956,957,960,962,964,966,968,970,972,975],{"class":341,"line":367},[339,958,959],{"class":353},"type",[339,961,934],{"class":392},[339,963,346],{"class":345},[339,965,904],{"class":392},[339,967,401],{"class":345},[339,969,404],{"class":345},[339,971,925],{"class":392},[339,973,974],{"class":353}," extends",[339,976,977],{"class":392}," Function\n",[339,979,980,983],{"class":341,"line":373},[339,981,982],{"class":345},"  ?",[339,984,985],{"class":392}," T\n",[339,987,988,991,993,995,998,1001,1004],{"class":341,"line":379},[339,989,990],{"class":345},"  :",[339,992,925],{"class":392},[339,994,974],{"class":353},[339,996,997],{"class":392}," Array",[339,999,1000],{"class":345},"\u003Cinfer",[339,1002,1003],{"class":392}," U",[339,1005,357],{"class":345},[339,1007,1008,1010,1012,1014,1017,1019,1022],{"class":341,"line":426},[339,1009,982],{"class":345},[339,1011,997],{"class":392},[339,1013,346],{"class":345},[339,1015,1016],{"class":392},"_DeepPartial",[339,1018,346],{"class":345},[339,1020,1021],{"class":392},"U",[339,1023,1024],{"class":345},">>\n",[339,1026,1027,1029,1031,1033],{"class":341,"line":447},[339,1028,990],{"class":345},[339,1030,925],{"class":392},[339,1032,974],{"class":353},[339,1034,1035],{"class":392}," object\n",[339,1037,1038,1040,1042,1044,1046],{"class":341,"line":452},[339,1039,982],{"class":345},[339,1041,899],{"class":392},[339,1043,346],{"class":345},[339,1045,904],{"class":392},[339,1047,357],{"class":345},[339,1049,1050,1052,1054,1057],{"class":341,"line":469},[339,1051,990],{"class":345},[339,1053,925],{"class":392},[339,1055,1056],{"class":345}," |",[339,1058,1059],{"class":392}," undefined\n",[711,1061,1062],{"id":1062},"使用",[329,1064,1066],{"className":557,"code":1065,"filename":333,"language":559,"meta":335,"style":335},"interface Config {\n  name: string\n  titles: {\n    first: string\n  }\n  delay: number\n}\n\nconst config: DeepPartial\u003CConfig> = {\n  delay: 1000,\n}\n\nconst isDark = useSystemDark()\n\nasync function mockSleep() {\n  await sleep(config.delay ?? 300)\n\n  console.log({\n    title: config.titles?.first ?? 'default title',\n    dark: isDark.value,\n  })\n}\n\nmockSleep()\n",[288,1067,1068,1078,1088,1097,1106,1111,1121,1125,1129,1151,1162,1166,1171,1185,1190,1205,1230,1235,1248,1280,1296,1304,1309,1314],{"__ignoreMap":335},[339,1069,1070,1073,1076],{"class":341,"line":342},[339,1071,1072],{"class":353},"interface",[339,1074,1075],{"class":392}," Config",[339,1077,466],{"class":345},[339,1079,1080,1083,1085],{"class":341,"line":360},[339,1081,1082],{"class":349},"  name",[339,1084,389],{"class":345},[339,1086,1087],{"class":392}," string\n",[339,1089,1090,1093,1095],{"class":341,"line":367},[339,1091,1092],{"class":349},"  titles",[339,1094,389],{"class":345},[339,1096,466],{"class":345},[339,1098,1099,1102,1104],{"class":341,"line":373},[339,1100,1101],{"class":349},"    first",[339,1103,389],{"class":345},[339,1105,1087],{"class":392},[339,1107,1108],{"class":341,"line":379},[339,1109,1110],{"class":345},"  }\n",[339,1112,1113,1116,1118],{"class":341,"line":426},[339,1114,1115],{"class":349},"  delay",[339,1117,389],{"class":345},[339,1119,1120],{"class":392}," number\n",[339,1122,1123],{"class":341,"line":447},[339,1124,809],{"class":345},[339,1126,1127],{"class":341,"line":452},[339,1128,376],{"emptyLinePlaceholder":42},[339,1130,1131,1133,1136,1138,1140,1142,1145,1147,1149],{"class":341,"line":469},[339,1132,382],{"class":353},[339,1134,1135],{"class":385}," config",[339,1137,389],{"class":345},[339,1139,899],{"class":392},[339,1141,346],{"class":345},[339,1143,1144],{"class":392},"Config",[339,1146,401],{"class":345},[339,1148,404],{"class":345},[339,1150,466],{"class":345},[339,1152,1153,1155,1157,1160],{"class":341,"line":502},[339,1154,1115],{"class":349},[339,1156,389],{"class":345},[339,1158,1159],{"class":441}," 1000",[339,1161,639],{"class":345},[339,1163,1164],{"class":341,"line":510},[339,1165,809],{"class":345},[339,1167,1169],{"class":341,"line":1168},12,[339,1170,376],{"emptyLinePlaceholder":42},[339,1172,1174,1176,1179,1181,1183],{"class":341,"line":1173},13,[339,1175,382],{"class":353},[339,1177,1178],{"class":385}," isDark ",[339,1180,434],{"class":345},[339,1182,732],{"class":407},[339,1184,761],{"class":385},[339,1186,1188],{"class":341,"line":1187},14,[339,1189,376],{"emptyLinePlaceholder":42},[339,1191,1193,1196,1198,1201,1203],{"class":341,"line":1192},15,[339,1194,1195],{"class":353},"async",[339,1197,729],{"class":353},[339,1199,1200],{"class":407}," mockSleep",[339,1202,460],{"class":345},[339,1204,466],{"class":345},[339,1206,1208,1211,1213,1215,1218,1220,1223,1226,1228],{"class":341,"line":1207},16,[339,1209,1210],{"class":566},"  await",[339,1212,824],{"class":407},[339,1214,411],{"class":349},[339,1216,1217],{"class":385},"config",[339,1219,475],{"class":345},[339,1221,1222],{"class":385},"delay",[339,1224,1225],{"class":345}," ??",[339,1227,835],{"class":441},[339,1229,423],{"class":349},[339,1231,1233],{"class":341,"line":1232},17,[339,1234,376],{"emptyLinePlaceholder":42},[339,1236,1238,1240,1242,1244,1246],{"class":341,"line":1237},18,[339,1239,472],{"class":385},[339,1241,475],{"class":345},[339,1243,478],{"class":407},[339,1245,411],{"class":349},[339,1247,607],{"class":345},[339,1249,1251,1254,1256,1258,1260,1263,1266,1269,1271,1273,1276,1278],{"class":341,"line":1250},19,[339,1252,1253],{"class":349},"    title",[339,1255,389],{"class":345},[339,1257,1135],{"class":385},[339,1259,475],{"class":345},[339,1261,1262],{"class":385},"titles",[339,1264,1265],{"class":345},"?.",[339,1267,1268],{"class":385},"first",[339,1270,1225],{"class":345},[339,1272,582],{"class":345},[339,1274,1275],{"class":417},"default title",[339,1277,414],{"class":345},[339,1279,639],{"class":345},[339,1281,1283,1286,1288,1290,1292,1294],{"class":341,"line":1282},20,[339,1284,1285],{"class":349},"    dark",[339,1287,389],{"class":345},[339,1289,768],{"class":385},[339,1291,475],{"class":345},[339,1293,497],{"class":385},[339,1295,639],{"class":345},[339,1297,1299,1302],{"class":341,"line":1298},21,[339,1300,1301],{"class":345},"  }",[339,1303,423],{"class":349},[339,1305,1307],{"class":341,"line":1306},22,[339,1308,809],{"class":345},[339,1310,1312],{"class":341,"line":1311},23,[339,1313,376],{"emptyLinePlaceholder":42},[339,1315,1317,1320],{"class":341,"line":1316},24,[339,1318,1319],{"class":407},"mockSleep",[339,1321,761],{"class":385},[321,1323,1325],{"id":1324},"第三方-api","第三方 API",[284,1327,1328,1329,1332],{},"假设要扫描 ",[288,1330,1331],{},"pinia"," 包，可以这样显式配置该库的扫描源：",[329,1334,1336],{"className":557,"code":1335,"filename":153,"language":559,"meta":335,"style":335},"import { defineOiyoConfig } from '@skiyee\u002Foiyo\u002Fconfig'\n\nexport default defineOiyoConfig({\n  scan: {\n    apis: [\n      'pinia',\n    ],\n  },\n})\n",[288,1337,1338,1356,1360,1372,1380,1388,1398,1404,1408],{"__ignoreMap":335},[339,1339,1340,1342,1344,1346,1348,1350,1352,1354],{"class":341,"line":342},[339,1341,567],{"class":566},[339,1343,570],{"class":345},[339,1345,573],{"class":385},[339,1347,576],{"class":345},[339,1349,579],{"class":566},[339,1351,582],{"class":345},[339,1353,585],{"class":417},[339,1355,588],{"class":345},[339,1357,1358],{"class":341,"line":360},[339,1359,376],{"emptyLinePlaceholder":42},[339,1361,1362,1364,1366,1368,1370],{"class":341,"line":367},[339,1363,597],{"class":566},[339,1365,600],{"class":566},[339,1367,573],{"class":407},[339,1369,411],{"class":385},[339,1371,607],{"class":345},[339,1373,1374,1376,1378],{"class":341,"line":373},[339,1375,612],{"class":349},[339,1377,389],{"class":345},[339,1379,466],{"class":345},[339,1381,1382,1384,1386],{"class":341,"line":379},[339,1383,621],{"class":349},[339,1385,389],{"class":345},[339,1387,626],{"class":385},[339,1389,1390,1392,1394,1396],{"class":341,"line":426},[339,1391,631],{"class":345},[339,1393,1331],{"class":417},[339,1395,414],{"class":345},[339,1397,639],{"class":345},[339,1399,1400,1402],{"class":341,"line":447},[339,1401,674],{"class":385},[339,1403,639],{"class":345},[339,1405,1406],{"class":341,"line":452},[339,1407,681],{"class":345},[339,1409,1410,1412],{"class":341,"line":469},[339,1411,505],{"class":345},[339,1413,423],{"class":385},[284,1415,1416],{},"效果：",[296,1418,1419],{},[299,1420,1421,1424,1425,1424,1428,1431],{},[288,1422,1423],{},"defineStore","、",[288,1426,1427],{},"createPinia",[288,1429,1430],{},"setActivePinia"," 可以在应用文件中直接使用。",[529,1433,1434,1441],{},[284,1435,1436,1437,1440],{},"扫描源的声明与显式导入的 ",[316,1438,1439],{},"来源"," 保持一致。",[1442,1443,1444,1453],"ol",{},[299,1445,1446,1449,1450,1452],{},[288,1447,1448],{},"import { defineStore } from 'pinia'",": ",[288,1451,1331],{},"。",[299,1454,1455,1449,1458,1452],{},[288,1456,1457],{},"import { useUser } from 'package\u002Fcomposables'",[288,1459,1460],{},"package\u002Fcomposables",[309,1462,1463],{"id":1463},"显式导入",[284,1465,1466],{},"自动引用机制并不禁止显式 import，可以根据团队约定选择。",[284,1468,1469],{},"以下情况推荐显式 import：",[296,1471,1472,1475,1478,1481],{},[299,1473,1474],{},"希望文件依赖关系更明确。",[299,1476,1477],{},"避免同名导出冲突。",[299,1479,1480],{},"使用未加入扫描系统的模块。",[299,1482,1483],{},"只在极少数文件中使用。",[284,1485,1486],{},"Oiyo 的自动引用机制适合高频、稳定、约定明确的 API。",[309,1488,1489],{"id":1489},"验证可用",[284,1491,1492],{},"如果 API 不可用，检查：",[1442,1494,1495,1498,1501,1504],{},[299,1496,1497],{},"文件是否在扫描路径内。",[299,1499,1500],{},"是否使用命名导出。",[299,1502,1503],{},"扫描源 glob 是否写对。",[299,1505,1506,1507,1509],{},"是否重新运行 ",[288,1508,259],{}," 命令。",[309,1511,1512],{"id":1512},"使用原则",[284,1514,1515],{},"使用时遵循这些原则：",[296,1517,1518,1521,1527,1530],{},[299,1519,1520],{},"若文件放在约定目录，优先利用内置扫描。",[299,1522,1523,1524,1526],{},"非约定目录或第三方库，通过 ",[288,1525,153],{}," 显式配置。",[299,1528,1529],{},"需要自动导入的内容使用命名导出。",[299,1531,1532,1533,1536],{},"避免使用 ",[288,1534,1535],{},"Barrel Files"," 进行模块重导出。",[1538,1539,1540],"style",{},"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 .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}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 .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}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 .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 .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 .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}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":335,"searchDepth":360,"depth":360,"links":1542},[1543,1548,1549,1550],{"id":311,"depth":360,"text":311,"children":1544},[1545,1546,1547],{"id":323,"depth":367,"text":324},{"id":540,"depth":367,"text":541},{"id":1324,"depth":367,"text":1325},{"id":1463,"depth":360,"text":1463},{"id":1489,"depth":360,"text":1489},{"id":1512,"depth":360,"text":1512},"让 API 无需手写 import 即可使用","md",{},{"icon":51},{"title":48,"description":1551},"f4vMV5FIT97jWpRuwiI1fB8cmv_6P0UZ6oVXPwHgUs8",[1558,1560],{"title":36,"path":37,"stem":38,"description":1559,"icon":39,"children":-1},"了解 Oiyo 的框架配置和页面全局配置",{"title":53,"path":54,"stem":55,"description":1561,"icon":56,"children":-1},"让 Vue 组件无需注册就可以在模板中直接可用",1780823238651]