何时使用Dart中的部分/部分与导入/导出?

时间:2015-01-04 07:21:14

标签: dart

在Dart中使用库时,我并不完全理解part / part ofimport / export之间的区别。例如:

one.dart:
library one;
part "two.dart";
Class One {
};

two.dart:
part of one;
import 'somefile.dart';
Class Two {
}

library one;
import 'two.dart';
Class One {
}

library two;
import 'somefile.dart';
export 'somefile.dart';
Class Two {
}

两种情况似乎都做同样的事情。何时使用partpart of而不是import是否有利?是否存在import不起作用的情况,但partpart of会不会有效?

4 个答案:

答案 0 :(得分:22)

更新2018/03

partpart of最近越来越多地用于代码生成方案(而非被弃用的变换器),并且不太可能很快消失。

built_valuejson_serializable等许多其他软件包都依赖于它。

气馁只是通过让一个库文件和所有其他文件成为该库的一部分而将包的所有文件绑定到单个库的模式。

<强>原始

在Dart中,私人成员可以在同一个库中访问。使用import导入库并且只能访问其公共成员。使用part / part of,您可以将一个库拆分为多个文件,并且可以访问这些文件中所有代码的私有成员。

请参阅上述更新中以下段落的说明

不鼓励使用part / part of,Dart团队正在考虑摆脱它。我假设他们会介绍类似“朋友”(https://github.com/dart-lang/sdk/issues/22841)的内容,其中两个图书馆可以在他们停止part / part of之前访问彼此的私人成员(可能在未来的Dart中)版本)。

答案 1 :(得分:7)

dartlang.org网站上的Creating Library Packages文章建议避免使用part / part of

  

注意:您可能听说过part指令,允许您这样做   将库拆分为多个Dart文件。我们建议您避免   使用part并创建迷你库。

迷你图书馆&#39;引用的是src中的小型库dart文件,它们被导入主库并从主库中导出。

答案 2 :(得分:5)

假设我们有一个名为mylib的Dart ,其文件为lib/mylib.dart

library mylib;

// Definitions

该库可以作为

包含在main.dart文件中
import 'package:mypackage/mylib.dart';

当您创建新库并使用其他库时,您希望在使用包时自动使用这些库,然后使用export

library mylib;

export 'otherlib.dart';

// Definitions

您可以使用show关键字仅导入/导出库的某些部分(如类或其他内容)。


您在此处使用part of指令错误。您不能同时使用librarypart of,它们用于指定属于库的内容。例如,您可以将库文件拆分为多个文件(部分):

假设我们在文件mylib.dart

library mylib;

part 'src/class1.part';
// More parts

然后我们在另一个文件src/class1.part中有mylib.dart

中指定的部分
part of mylib;

class Class1 { 
  /* ... */
}

答案 3 :(得分:0)

使用 part/part of 使许多文件被视为一个文件

import/export 没有,因此当需要从另一个文件(在其他文件上创建的类)访问私有字段时,这可能很有用