Dart库vs lib

时间:2013-12-27 13:05:06

标签: shared-libraries dart project-structure

在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声明之间的区别是什么?

2 个答案:

答案 0 :(得分:3)

最终,您的目录结构与Dart中的库关键字之间没有关系。

dart目录结构来自推荐 package layout conventions但不以任何方式强制执行该语言。只有在尝试使用pub包管理器将包发布(上载)到官方dart存储库时,才会强制执行它们。最终,您可以使用您选择的任何目录结构布局。建议使用此程序包以保持程序包之间的一致性,特别是对于可能具有其他外部贡献者的开源程序包或应用程序。

Dart中的library关键字以命名空间的方式使用。例如,下划线私有变量仅具有库可见性。同一个库中的任何内容都可以查看/访问您的下划线变量。除了它之外的任何东西都不能。您可以使用partpart of关键字将其他文件作为库的一部分(无论它们在目录结构中的位置如何)。

答案 1 :(得分:2)

lib目录与library声明无关。 无论文件存储在哪个目录中,都可以声明包含一个或多个dart文件的库。 包含一个库的多个文件甚至不需要存储在同一目录中。

如果要将包作为库提供,则约定是将包含公共API的文件存储在lib目录中,并将库私有API存储在lib/src中。即使在这里,lib中也可能有多个库,lib/src中有几个库。