在Dart-land中,library
声明与项目内lib
目录之间的关系是什么?换句话说,如果我的项目有这样的结构:
myapp/
lib/
SomeType.dart
src/
SomeOtherType.dart
web/
AnotherType.dart
another-type.html
在SomeType.dart
我有:
library myapp.logging;
class SomeType {
// ...
}
...然后,在整个Dart源代码中散布的myapp/lib
目录和任何 library
声明之间的区别是什么?
答案 0 :(得分:3)
最终,您的目录结构与Dart中的库关键字之间没有关系。
dart目录结构来自推荐 package layout conventions但不以任何方式强制执行该语言。只有在尝试使用pub包管理器将包发布(上载)到官方dart存储库时,才会强制执行它们。最终,您可以使用您选择的任何目录结构布局。建议使用此程序包以保持程序包之间的一致性,特别是对于可能具有其他外部贡献者的开源程序包或应用程序。
Dart中的library
关键字以命名空间的方式使用。例如,下划线私有变量仅具有库可见性。同一个库中的任何内容都可以查看/访问您的下划线变量。除了它之外的任何东西都不能。您可以使用part
和part of
关键字将其他文件作为库的一部分(无论它们在目录结构中的位置如何)。
答案 1 :(得分:2)
lib
目录与library
声明无关。
无论文件存储在哪个目录中,都可以声明包含一个或多个dart文件的库。
包含一个库的多个文件甚至不需要存储在同一目录中。
如果要将包作为库提供,则约定是将包含公共API的文件存储在lib
目录中,并将库私有API存储在lib/src
中。即使在这里,lib
中也可能有多个库,lib/src
中有几个库。