[{"data":1,"prerenderedAt":656},["ShallowReactive",2],{"navigation":3,"-design-module-system":239,"-design-module-system-surround":653},[4,159],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"指南","\u002Fguide","00.guide\u002F00.index",[9,11,16,21,53,84,116,142],{"title":5,"path":6,"stem":7,"icon":10},"lucide:book",{"title":12,"path":13,"stem":14,"icon":15},"快速开始","\u002Fguide\u002Fgetting-started","00.guide\u002F01.getting-started","lucide:rocket",{"title":17,"path":18,"stem":19,"icon":20},"基础语法","\u002Fguide\u002Fbasic-syntax","00.guide\u002F02.basic-syntax","lucide:code-2",{"title":22,"path":23,"stem":24,"children":25,"icon":27},"数据类型","\u002Fguide\u002Fdata-types","00.guide\u002F03.data-types\u002F00.index",[26,28,33,38,43,48],{"title":22,"path":23,"stem":24,"icon":27},"lucide:database",{"title":29,"path":30,"stem":31,"icon":32},"基本类型","\u002Fguide\u002Fdata-types\u002Fbasic_types","00.guide\u002F03.data-types\u002F01.basic_types","lucide:type",{"title":34,"path":35,"stem":36,"icon":37},"复合类型","\u002Fguide\u002Fdata-types\u002Fcomposite_types","00.guide\u002F03.data-types\u002F02.composite_types","lucide:layers",{"title":39,"path":40,"stem":41,"icon":42},"类型推导","\u002Fguide\u002Fdata-types\u002Ftype_inference","00.guide\u002F03.data-types\u002F03.type_inference","lucide:brain-circuit",{"title":44,"path":45,"stem":46,"icon":47},"结构体","\u002Fguide\u002Fdata-types\u002Fstruct","00.guide\u002F03.data-types\u002F04.struct","lucide:box-select",{"title":49,"path":50,"stem":51,"icon":52},"内建类型表面","\u002Fguide\u002Fdata-types\u002Fbuilt-in-surface","00.guide\u002F03.data-types\u002F05.built-in-surface","lucide:wrench",{"title":54,"path":55,"stem":56,"children":57,"icon":59},"流程控制","\u002Fguide\u002Fcontrol-flow","00.guide\u002F04.control-flow\u002F00.index",[58,60,64,69,74,79],{"title":54,"path":55,"stem":56,"icon":59},"lucide:git-branch",{"title":61,"path":62,"stem":63,"icon":59},"if 表达式","\u002Fguide\u002Fcontrol-flow\u002Fif-expressions","00.guide\u002F04.control-flow\u002F01.if-expressions",{"title":65,"path":66,"stem":67,"icon":68},"for 循环","\u002Fguide\u002Fcontrol-flow\u002Ffor-loops","00.guide\u002F04.control-flow\u002F02.for-loops","lucide:repeat",{"title":70,"path":71,"stem":72,"icon":73},"break 和 continue","\u002Fguide\u002Fcontrol-flow\u002Fbreak-continue","00.guide\u002F04.control-flow\u002F03.break-continue","lucide:skip-forward",{"title":75,"path":76,"stem":77,"icon":78},"return","\u002Fguide\u002Fcontrol-flow\u002Freturn","00.guide\u002F04.control-flow\u002F04.return","lucide:corner-up-left",{"title":80,"path":81,"stem":82,"icon":83},"注意事项","\u002Fguide\u002Fcontrol-flow\u002Fnotes","00.guide\u002F04.control-flow\u002F05.notes","lucide:alert-triangle",{"title":85,"path":86,"stem":87,"children":88,"icon":90},"函数","\u002Fguide\u002Ffunctions","00.guide\u002F05.functions\u002F00.index",[89,91,96,101,106,111],{"title":85,"path":86,"stem":87,"icon":90},"lucide:braces",{"title":92,"path":93,"stem":94,"icon":95},"基础函数","\u002Fguide\u002Ffunctions\u002Fbasic-functions","00.guide\u002F05.functions\u002F01.basic-functions","lucide:function-square",{"title":97,"path":98,"stem":99,"icon":100},"参数与默认值","\u002Fguide\u002Ffunctions\u002Fadvanced-parameters","00.guide\u002F05.functions\u002F02.advanced-parameters","lucide:settings-2",{"title":102,"path":103,"stem":104,"icon":105},"匿名函数","\u002Fguide\u002Ffunctions\u002Fclosures","00.guide\u002F05.functions\u002F03.closures","lucide:curly-braces",{"title":107,"path":108,"stem":109,"icon":110},"内建函数","\u002Fguide\u002Ffunctions\u002Fbuiltin-functions","00.guide\u002F05.functions\u002F04.builtin-functions","lucide:box",{"title":112,"path":113,"stem":114,"icon":115},"main 函数","\u002Fguide\u002Ffunctions\u002Fmain-function","00.guide\u002F05.functions\u002F05.main-function","lucide:play",{"title":117,"path":118,"stem":119,"children":120,"icon":37},"模块化","\u002Fguide\u002Fmodules","00.guide\u002F06.modules\u002F00.index",[121,122,127,132,137],{"title":117,"path":118,"stem":119,"icon":37},{"title":123,"path":124,"stem":125,"icon":126},"导出","\u002Fguide\u002Fmodules\u002Fexport","00.guide\u002F06.modules\u002F01.export","lucide:upload",{"title":128,"path":129,"stem":130,"icon":131},"导入","\u002Fguide\u002Fmodules\u002Fimport","00.guide\u002F06.modules\u002F02.import","lucide:download",{"title":133,"path":134,"stem":135,"icon":136},"最佳实践","\u002Fguide\u002Fmodules\u002Fbest-practices","00.guide\u002F06.modules\u002F03.best-practices","lucide:check-circle-2",{"title":138,"path":139,"stem":140,"icon":141},"完整示例","\u002Fguide\u002Fmodules\u002Fcomplete-example","00.guide\u002F06.modules\u002F04.complete-example","lucide:file-code-2",{"title":143,"path":144,"stem":145,"children":146,"icon":148},"高级特性概述","\u002Fguide\u002Fadvanced","00.guide\u002F07.advanced\u002F00.index",[147,149,154],{"title":143,"path":144,"stem":145,"icon":148},"lucide:zap",{"title":150,"path":151,"stem":152,"icon":153},"泛型","\u002Fguide\u002Fadvanced\u002Fgenerics","00.guide\u002F07.advanced\u002F05.generics","lucide:git-merge",{"title":155,"path":156,"stem":157,"icon":158},"类型转换","\u002Fguide\u002Fadvanced\u002Ftype-conversion","00.guide\u002F07.advanced\u002F06.type-conversion","lucide:refresh-cw",{"title":160,"path":161,"stem":162,"children":163,"icon":15},"设计","\u002Fdesign","01.design\u002F00.index",[164,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,232,235],{"title":160,"path":161,"stem":162,"icon":15},{"title":166,"path":167,"stem":168},"CST 特性","\u002Fdesign\u002Fcst-features","01.design\u002F01.cst-features",{"title":170,"path":171,"stem":172},"注释关联规则","\u002Fdesign\u002Fcomment-association","01.design\u002F02.comment-association",{"title":174,"path":175,"stem":176},"错误处理","\u002Fdesign\u002Ferror-handling","01.design\u002F03.error-handling",{"title":178,"path":179,"stem":180},"代码优化","\u002Fdesign\u002Foptimization","01.design\u002F04.optimization",{"title":182,"path":183,"stem":184},"注释保留","\u002Fdesign\u002Fcomments","01.design\u002F05.comments",{"title":186,"path":187,"stem":188},"结构体设计","\u002Fdesign\u002Fstruct-design","01.design\u002F06.struct-design",{"title":190,"path":191,"stem":192},"comparable 约束设计","\u002Fdesign\u002Fcomparable-constraint","01.design\u002F07.comparable-constraint",{"title":194,"path":195,"stem":196},"文档分层约定","\u002Fdesign\u002Fdocumentation-convention","01.design\u002F08.documentation-convention",{"title":198,"path":199,"stem":200},"类型系统总纲","\u002Fdesign\u002Ftype-system","01.design\u002F09.type-system",{"title":202,"path":203,"stem":204},"泛型系统","\u002Fdesign\u002Fgenerics-system","01.design\u002F10.generics-system",{"title":206,"path":207,"stem":208},"值语义与共享语义","\u002Fdesign\u002Fvalue-and-sharing-semantics","01.design\u002F11.value-and-sharing-semantics",{"title":210,"path":211,"stem":212},"函数与调用","\u002Fdesign\u002Ffunctions-and-calls","01.design\u002F12.functions-and-calls",{"title":214,"path":215,"stem":216},"表达式与语句","\u002Fdesign\u002Fexpressions-and-statements","01.design\u002F13.expressions-and-statements",{"title":218,"path":219,"stem":220},"模块系统","\u002Fdesign\u002Fmodule-system","01.design\u002F14.module-system",{"title":222,"path":223,"stem":224},"渲染内建","\u002Fdesign\u002Frender-intrinsics","01.design\u002F15.render-intrinsics",{"title":226,"path":227,"stem":228},"Any 设计","\u002Fdesign\u002Fany-design","01.design\u002F16.any-design",{"title":49,"path":230,"stem":231},"\u002Fdesign\u002Fbuilt-in-types-surface","01.design\u002F17.built-in-types-surface",{"title":107,"path":233,"stem":234},"\u002Fdesign\u002Fbuilt-in-functions","01.design\u002F18.built-in-functions",{"title":236,"path":237,"stem":238},"内建结构体与运行时类型","\u002Fdesign\u002Fbuilt-in-structs-and-runtime-types","01.design\u002F19.built-in-structs-and-runtime-types",{"id":240,"title":218,"body":241,"description":289,"extension":648,"meta":649,"navigation":650,"path":219,"seo":651,"stem":220,"__hash__":652},"content\u002F01.design\u002F14.module-system.md",{"type":242,"value":243,"toc":635},"minimark",[244,248,252,269,272,274,280,283,306,310,313,324,326,329,338,341,352,355,357,366,368,380,383,408,410,413,425,427,472,475,493,496,514,517,532,535,538,552,559,567,570,606,612,626,631],[245,246,247],"p",{},"本文档收敛 Dujie 的模块、导入导出、路径规则和入口相关约束。",[249,250,251],"h2",{"id":251},"模块",[253,254,255,259,262],"ul",{},[256,257,258],"li",{},"一个源文件就是一个模块",[256,260,261],{},"模块身份由文件路径决定",[256,263,264,265],{},"当前唯一合法源文件扩展名是 ",[266,267,268],"code",{},".dj",[245,270,271],{},"第一阶段不引入额外的模块声明语法。",[249,273,128],{"id":128},[245,275,276,279],{},[266,277,278],{},"import"," 只用于导入其他模块已导出的顶层符号。",[245,281,282],{},"当前支持的形态：",[284,285,290],"pre",{"className":286,"code":287,"language":288,"meta":289,"style":289},"language-dj shiki shiki-themes github-light github-dark github-dark","import { foo, bar } from \".\u002Futils.dj\"\nimport { foo as my_foo } from \".\u002Futils.dj\"\n","dj","",[266,291,292,300],{"__ignoreMap":289},[293,294,297],"span",{"class":295,"line":296},"line",1,[293,298,299],{},"import { foo, bar } from \".\u002Futils.dj\"\n",[293,301,303],{"class":295,"line":302},2,[293,304,305],{},"import { foo as my_foo } from \".\u002Futils.dj\"\n",[307,308,309],"h3",{"id":309},"导入源",[245,311,312],{},"当前支持两类导入源：",[314,315,317,321],"steps",{"level":316},"4",[318,319,320],"h4",{},"本地相对路径",[318,322,323],{},"注册表模块",[318,325,320],{"id":320},[245,327,328],{},"例如：",[284,330,332],{"className":286,"code":331,"language":288,"meta":289,"style":289},"import { button } from \"..\u002Fcomponents\u002Fbutton.dj\"\n",[266,333,334],{"__ignoreMap":289},[293,335,336],{"class":295,"line":296},[293,337,331],{},[245,339,340],{},"规则：",[253,342,343,346,349],{},[256,344,345],{},"必须是静态字符串",[256,347,348],{},"必须显式写扩展名",[256,350,351],{},"按当前文件所在目录做相对解析",[318,353,354],{"id":354},"注册表导入",[245,356,328],{},[284,358,360],{"className":286,"code":359,"language":288,"meta":289,"style":289},"import { button } from \"registry:ui\u002Fbutton.dj\"\n",[266,361,362],{"__ignoreMap":289},[293,363,364],{"class":295,"line":296},[293,365,359],{},[245,367,340],{},[253,369,370,372,374,377],{},[256,371,345],{},[256,373,348],{},[256,375,376],{},"不走本地相对路径解析",[256,378,379],{},"版本、缓存、锁定等规则交给注册表和构建系统处理",[307,381,382],{"id":382},"当前不支持",[253,384,385,388,393,396,399,402,405],{},[256,386,387],{},"动态导入",[256,389,390],{},[266,391,392],{},"import *",[256,394,395],{},"默认导入",[256,397,398],{},"混合默认导入与具名导入",[256,400,401],{},"根路径别名",[256,403,404],{},"目录索引魔法",[256,406,407],{},"自动补全扩展名",[249,409,123],{"id":123},[245,411,412],{},"当前仅支持导出顶层：",[253,414,415,420],{},[256,416,417],{},[266,418,419],{},"func",[256,421,422],{},[266,423,424],{},"struct",[245,426,328],{},[284,428,430],{"className":286,"code":429,"language":288,"meta":289,"style":289},"export func add(x: int, y: int) -> int {\n    x + y\n}\n\nexport struct Person {\n    name: string,\n}\n",[266,431,432,437,442,448,455,461,467],{"__ignoreMap":289},[293,433,434],{"class":295,"line":296},[293,435,436],{},"export func add(x: int, y: int) -> int {\n",[293,438,439],{"class":295,"line":302},[293,440,441],{},"    x + y\n",[293,443,445],{"class":295,"line":444},3,[293,446,447],{},"}\n",[293,449,451],{"class":295,"line":450},4,[293,452,454],{"emptyLinePlaceholder":453},true,"\n",[293,456,458],{"class":295,"line":457},5,[293,459,460],{},"export struct Person {\n",[293,462,464],{"class":295,"line":463},6,[293,465,466],{},"    name: string,\n",[293,468,470],{"class":295,"line":469},7,[293,471,447],{},[245,473,474],{},"当前不支持：",[253,476,477,480,483,488],{},[256,478,479],{},"导出局部变量",[256,481,482],{},"导出表达式结果",[256,484,485],{},[266,486,487],{},"export { foo, bar }",[256,489,490],{},[266,491,492],{},"export * from ...",[249,494,495],{"id":495},"可见性",[253,497,498,505,511],{},[256,499,500,501,504],{},"不写 ",[266,502,503],{},"export"," 的顶层符号默认模块私有",[256,506,507,508,510],{},"其他模块只能访问被 ",[266,509,503],{}," 的符号",[256,512,513],{},"模块内部可直接访问本模块私有顶层符号",[249,515,516],{"id":516},"名称规则",[253,518,519,522,525],{},[256,520,521],{},"导入名称进入当前模块顶层命名空间",[256,523,524],{},"导入后名称冲突是编译错误",[256,526,527,528,531],{},"可以使用 ",[266,529,530],{},"as"," 改名避开冲突",[249,533,534],{"id":534},"路径解析错误",[245,536,537],{},"以下情况属于编译错误：",[253,539,540,543,546,549],{},[256,541,542],{},"导入路径非法",[256,544,545],{},"导入路径无法解析",[256,547,548],{},"同一路径不能唯一解析",[256,550,551],{},"循环导入",[249,553,555,558],{"id":554},"main-与模块入口",[266,556,557],{},"main"," 与模块入口",[245,560,561,563,564,566],{},[266,562,557],{}," 是入口相关的保留名字，但模块是否被当作应用入口，由构建或运行系统决定，不由 ",[266,565,503],{}," 决定。",[245,568,569],{},"模块级约束：",[253,571,572,579,584,591,596,601],{},[256,573,574,576,577],{},[266,575,557],{}," 必须是模块顶层 ",[266,578,419],{},[256,580,581,582],{},"一个模块内最多只能有一个 ",[266,583,557],{},[256,585,586,588,589],{},[266,587,557],{}," 不需要 ",[266,590,503],{},[256,592,593,595],{},[266,594,557],{}," 不能与其他顶层符号重名",[256,597,598,600],{},[266,599,557],{}," 不能是泛型函数",[256,602,603,604],{},"普通库模块可以没有 ",[266,605,557],{},[245,607,608,609,611],{},"语言层不再单独限制 ",[266,610,557],{}," 的参数形状：",[253,613,614,617],{},[256,615,616],{},"只要参数声明本身符合 Dujie 普通函数规则即可",[256,618,619,620,623,624],{},"位置参数、具名参数、",[266,621,622],{},"opt\u003CT>"," 参数、默认值都可以用于 ",[266,625,557],{},[245,627,628,630],{},[266,629,557],{}," 的渲染语义和入口适配规则见《渲染内建》。",[632,633,634],"style",{},"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);}",{"title":289,"searchDepth":302,"depth":302,"links":636},[637,638,642,643,644,645,646],{"id":251,"depth":302,"text":251},{"id":128,"depth":302,"text":128,"children":639},[640,641],{"id":309,"depth":444,"text":309},{"id":382,"depth":444,"text":382},{"id":123,"depth":302,"text":123},{"id":495,"depth":302,"text":495},{"id":516,"depth":302,"text":516},{"id":534,"depth":302,"text":534},{"id":554,"depth":302,"text":647},"main 与模块入口","md",{},{},{"title":218,"description":289},"mKDE8xyDUTdPRbCHg6fLcuI_a-GM0FjJp6BGWyDCtyM",[654,655],{"title":214,"path":215,"stem":216,"description":289,"children":-1},{"title":222,"path":223,"stem":224,"description":289,"children":-1},1776981319057]