企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 这些指南帮助您以一致的、可维护的方式将多个文件组成程序。为了使这些指南简洁,他们使用“import”来涵盖import和export指令。这两项准则同样适用。 ## 一定要在部分指令中使用字符串。 许多Dart开发人员完全避免使用part。他们发现,当每个库都是一个文件时,他们更容易理解自己的代码。如果您选择使用part将库的一部分分割成另一个文件,Dart要求另一个文件依次指出它属于哪个库。由于遗留原因,Dart允许指令的这一部分使用它所属的库的名称。这使得工具在物理上查找主库文件变得更加困难,并且可能使部分实际上属于哪个库变得模糊不清。 首选的现代语法是使用指向库文件的URI字符串,就像在其他指令中使用的一样。如果你有一些库,my_library.dart,包含: ~~~ library my_library; part "some/other/file.dart"; ~~~ 然后part文件应该如下: ~~~ part of "../../my_library.dart"; ~~~ 而不是: ~~~ part of my_library; ~~~ ## 不要导入位于另一个包的src目录中的库。 lib下的src目录被指定为包含包自身实现的私有库。包维护者版本包的方式考虑到了这个约定。他们可以自由地对src下的代码进行全面修改,而不需要对包进行破坏性的修改。 这意味着,如果您导入了其他包的私有库,该包的一个小的、理论上没有中断点的版本可能会破坏您的代码。 ## 优先在导入包的lib目录中的库时,选择相对路径。 当从同一包中的另一个库中引用包的lib目录中的库时,可以使用相对URI或显式包:。 例如,假设您的目录结构如下: ~~~ my_package └─ lib ├─ src │ └─ utils.dart └─ api.dart ~~~ 如果api.dart想要输入utils.dart,它应该这样做: ~~~ import 'src/utils.dart'; ~~~ 而不是: ~~~ import 'package:my_package/src/utils.dart'; ~~~ 没有深刻的理由选择前者——它只是更短,我们希望保持一致。 “在您自己的包的lib目录中”部分很重要。lib中的库可以导入lib(或其子目录中)中的其他库。lib之外的库可以使用相对导入访问lib之外的其他库。 但你不能“cross the streams”。在lib之外的库不应该使用相对导入来访问lib下的库,反之亦然。这样做将破坏Dart正确判断两个库uri是否引用同一库的能力。遵循这两个原则: * 导入路径不应该包含/lib/。 * 库不应该使用../转义lib目录。