在Dart中使用通用包而不是库?

时间:2019-04-11 14:28:19

标签: dart

我在不同的dart项目之间共享一些模型类。

选项1

首先,我遵循dart库约定执行以下操作:

在导入通用lib / package的项目/软件包中:

  • pubspec.yaml:
dependencies:
  mycommon:
    path: ../mycommon
  • some_class.dart:
import 'package:mycommon/models.dart';

常见的库/软件包:

  • pubspec.yaml
name: mycommon
  • lib / src / model / model_1.dart

  • lib / src / model / model_2.dart

  • ...

  • lib / src / model / model_50.dart

  • lib / models.dart:

library mycommon;

export 'src/model/model_1.dart';
export 'src/model/model_2.dart';
...
export 'src/model/model_50.dart';

选项2

将普通库作为普通软件包处理

在导入通用lib / package的项目/软件包中:

  • pubspec.yaml:
dependencies:
  mycommon:
    path: ../mycommon
  • some_class.dart:
import 'package:mycommon/model/model_1.dart';

常见的库/软件包:

  • pubspec.yaml
name: mycommon
  • lib / model / model_1.dart (无库关键字)

  • lib / model / model_2.dart

  • ...

  • lib / model / model_50.dart

我找不到使用选项2 的任何地方。这就是我自己想出的。

我的问题很简单,是否建议使用选项2 方法?我更喜欢使用选项2 ,因为我可以导入真正想要的类而不是全部。而且大多数时候,每个dart文件只需要一个类模型。

1 个答案:

答案 0 :(得分:1)

lib/src/model/model_a.class不是您应该用于Dart代码的文件名。无论文件具有哪种类型的Dart代码,文件都应为lib/src/model/model_a.dart

使用lib/model/model_a.dart并导入为package:mycommon/model/model_a.dart是完全可以的。 通常的情况是,发布的程序包包含导入的单个库,然后在lib/src中提供了实现细节,但这不是必需的。如果有一些实现本身很有用,则可以将它们放在lib/src之外并直接导入。

如果有许多这样的文件,或者通常需要一起导入一堆文件,我建议不要遵循该模式。对于每个单独的模型,import 'package:mycommon/models.dart';会比连续数十次导入要好得多。 Dart不是Java,并且您导入的每个类都不必位于其自己的库中。