Shared libraries Dart库与lib

Shared libraries Dart库与lib,shared-libraries,dart,project-structure,Shared Libraries,Dart,Project Structure,在Dart land中,library声明与项目中的lib目录之间的关系是什么?换句话说,如果我的项目有这样的结构: myapp/ lib/ SomeType.dart src/ SomeOtherType.dart web/ AnotherType.dart another-type.html 在SomeType.dart中,我有: 库myapp.logging; 类SomeType{ /

在Dart land中,
library
声明与项目中的
lib
目录之间的关系是什么?换句话说,如果我的项目有这样的结构:

myapp/
    lib/
        SomeType.dart
        src/
            SomeOtherType.dart
    web/
        AnotherType.dart
        another-type.html
SomeType.dart
中,我有:

库myapp.logging;
类SomeType{
// ...
}

…那么
myapp/lib
目录和散布在Dart源代码中的任何
声明之间有什么区别?

目录与
声明没有关系。 您可以声明由一个或多个dart文件组成的库,无论这些文件存储在哪个目录中。 组成一个库的多个文件甚至不需要存储在同一目录中


如果要使包作为库可用,约定是将构成公共API的文件存储在
lib
目录中,将库专用API存储在
lib/src
中。即使在这里,
lib
中也可能有几个库,
lib/src
中也可能有几个库

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

dart目录结构来自推荐的 但是,语言并没有以任何方式强制执行。仅当您尝试使用发布包管理器将包发布(上载)到dart官方存储库时,才会强制执行这些命令。最终,您可以使用您选择的任何目录结构布局。建议使用此选项以保持包之间的一致性,特别是对于可能有其他外部贡献者的开放源代码包或应用程序


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

谢谢@Matt B(+1)-那么您在哪里声明/使用
关键字,在哪里使用
部分
/
部分?对我来说,每个文件都是某个库的一部分,但必须有规则规定何时适合使用
库日志vs
部分日志记录,等等。是否某些“主文件”必须声明
,使其成为库的“头”/“入口点”,所有其他文件都是
的一部分
?再次感谢!与Java不同,Dart文件可以包含多个类,将类分组为一个库的一部分。但是,如果它们开始变得庞大和笨拙,那么使用
部分
部分
将一个包含多个类的库分解为多个文件是有益的。请参见新的Dart URI包作为使用部件的示例:Thank@Matt B(+1)-因此在该示例中,它声明了一个名为
URI
库,其中包含多个类。它还提到它还有另外两部分:
uri\u template.dart
uri\u parser.dart
。这是否意味着
uri.dart
中定义的类(例如
UriMatch
)可以访问
uri\u template.dart
uri\u parser.dart
中定义的任何内容?我想我开始明白了…正确,更正确,反之亦然。uri_模板和uri_解析器中的任何内容都可以访问uri.dart中的任何内容(包括
\u变量
)。下面是我的一个项目中的另一个例子:基本上所有文件都是同一个库的一部分,但仅仅因为每个库中的行数,它们被分解成相关文件(列表、数字、字符串等)。谢谢@Gunter Zochbauer(+1)-请看Matt B答案下面的问题-我有相同的问题要问你!另外,我注意到我所有的Dart代码片段都在不断地被编辑,但是当我查看编辑的代码和我的原始代码之间的差异时,我没有看到任何差异……你知道那里发生了什么吗?再次感谢!我编辑您的代码片段只是为了添加语法突出显示;)您有一个主文件,在其中声明库和作为库一部分的其他文件。我通常在声明库的文件中没有代码,只有库声明、导入和列表的一部分。实际代码在部件中。