项目结构略复杂, 原本参考 Rust 有更多嵌套的, 去掉以后还剩两层嵌套,
基于 moon.pkg.json
中 import
定义的引用… 使用下来我理解大致上,
- 同一个目录同一层的代码是在同一个模块当中, 可以被相互引用的
- 跨目录层级就需要通过
import
定义规则以后才能被引用到, 且需要指定pub
- 参考默认项目,
main/
lib/
模块之间也可以通过moon.pkg.json
指定import
引用,
于是我为了从 main/
当中引用 lib/
代码, 定义了 lib/main/moon.pkg.json
规则:
{
"import": [
{ "path": "tiye/respo/lib/node", "alias": "respo_node" },
{ "path": "tiye/respo/lib/web-sys", "alias": "web_sys" },
{ "path": "tiye/respo/lib", "alias": "respo" }
]
}
其中 @respo_node
@web_sys
可以引用到定义了 pub
的函数, 而 @respo
始终无法引用到内部任何的 pub
的函数. 这个行为比较意外… 有怀疑代码当中报错导致未引用, 但基于另外的模块试验发现报错也不影响函数被引用到.
不知道是理解错了哪个规则… 还有文档可以参照一下么
疑问的项目地址 respo.mbt/src/main/moon.pkg.json at translating · Respo/respo.mbt · GitHub
更新, 有可能是缓存之类原因么, 换个电脑跑不能重现报错了. VS Code 提示 Moonbit 有更新我都允许更新的