关于导入本地文件的Dart风格建议

时间:2019-05-28 10:27:41

标签: dart

是否有任何有关如何导入本地文件的建议。就我而言,我有2个选择:

  1. 导入'package:workshop / feed / item.dart';
  2. 导入'item.dart';

在指南Effective Dart: Style或Google搜索上我都没有找到任何东西。

1 个答案:

答案 0 :(得分:2)

根据要问的人,至少有两个不同的建议。 无论哪种方法,我个人都建议使用后者的较短变体。 它足够 ,并且避免了将软件包名称硬编码到每个文件中的问题。如果您想重命名程序包,那将会很麻烦。

有一个问题使某些人推荐前一种格式。 如果您使用非package: URI导入软件包库,则说在bin/test/目录中有一个文件,例如:

import "../lib/mylib.dart";

然后该库现在使用两个不同的URI导入:

  • package:mypkg/mylib.dart
  • file:///somewhere/mypkg/lib/mylib.dart

由于Dart通过导入URI识别库,因此这两个导入将被视为不同的库,每个库都有自己的全局变量和静态变量,而这些变量恰好具有相同的源代码。这是一个烦人的问题,可能很难调试。如果在各处都使用长package:...导入,那么至少该问题仅限于导入的 first 库。如果您使用相对导入import "src/helper.dart";,则该库现在也将存在两个版本:

  • package:mypkg/src/helper.dart
  • file:///somewhere/mypkg/lib/src/helper.dart

这里真正的问题是第一次导入,该导入在路径中包含/lib/。您绝对不能导入。对所有导入都使用package: URI可以减少问题,但不能消除。

我建议使用相对路径,并确保任何导入路径中都不要包含/lib/。 pub软件包的/lib/目录中的库是 package 库,应使用package: URI进行引用。如果这样做,则将相对于程序包URI解析相对URI,并再次将其作为程序包URI,一切都很好。