写点什么

dart 系列之: 手写 Library,Library 编写最佳实践

作者:程序那些事
  • 2021 年 12 月 21 日
  • 本文字数:1297 字

    阅读完需:约 4 分钟

dart系列之:手写Library,Library编写最佳实践

简介

Library 是 dart 用来组织代码的一种非常有用的方式,通过定义不同的 Library,可以将非常有用的 dart 代码进行封装,从而提供给其他的项目使用。虽然我们可以自由使用 import 或者 export 来对 library 进行导入和导入。但是什么样的用法才是最合适的用法呢? 一起来看看吧。

使用 part 和 part of

虽然很多程序员讨厌使用 part,但是 dart 确实提供了 part 这种功能用来将一个大的 lib 拆分成多个小的文件。


没错,和 part 的中文含义一样,part 就是将 lib 文件进行拆分用的。


part of 表示当前文件是另外一个主文件的一部分。part 表示主文件是由引用的文件组成的。


我们举个例子,假如现在有三个文件 student_age.dart,student_name.dart 和 student.dart.


其中前面两个文件是后面一个文件的组成部分。


student_age.dart:


part of student;
int getAge(){ return 18;}
复制代码


student_name.dart:


part of student;
String getName(){ return "jack";}
复制代码


student.dart:


library student;
part 'some/other/student_age.dart';part 'some/other/student_name.dart';
复制代码


上面的代码有什么问题呢?


上面代码的问题在于对于 student_age.dart 来说,里面的 part of 只是指定了所属的 library,但是我们读起来会一头雾水,因为不知道具体的 library 到底在什么地方。


所以应该这样写:


part of '../../student.dart';
复制代码

src 中的文件

默认情况下 lib 目录下的 src 文件只是 package 内部使用的,不允许被外部的项目所调用。


所以我们一定不要直接引入 lib 包中的 src 文件。

package 中的 lib 文件

对于 package 来说,lib 中的文件是可以被导出的文件,但是我们在引入 package 的时候最好不要使用绝对路径或者相对路径直接导入 lib 中的文件。


而是需要使用 import 'package:'.


举个例子,假如我们有下面结构的 library 文件:


my_package└─ lib   └─ api.dart   test   └─ api_test.dart
复制代码


api.dart 就是我们要导出的文件。如果我们在 api_test.dart 中需要引用 api.dart,则可以有下面两种方式:


import 'package:my_package/api.dart';
复制代码


和:


import '../lib/api.dart';
复制代码


其中上面一种方式是官方推荐的方式,为什么不使用下面一种方式呢?这是因为相对路径的方式只能在包内部使用。并且 dart 官方不建议将 lib 放在引用路径中,如果要引用 lib 内部的文件, 一定要使用 package:。


当然,如果是 package 内部的引用,则优先使用相对路径,比如:


my_package└─ lib   ├─ src   │  └─ stuff.dart   │  └─ utils.dart   └─ api.dart   test   │─ api_test.dart   └─ test_utils.dart
复制代码


那么对应 lib/api.dart 来说,可以这样引用:


import 'src/stuff.dart';import 'src/utils.dart';
复制代码


对于 utils.dart 来说,可以这样引用:


import '../api.dart';import 'stuff.dart';
复制代码


对于 test/api_test.dart 来说,可以这样引用:


import 'package:my_package/api.dart'; 
import 'test_utils.dart';
复制代码


总之,不要在 import 的路径中出现 lib。

总结

以上就是 dart 中 Library 编写最佳实践。


本文已收录于 http://www.flydean.com/28-dart-libraries-effective/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

发布于: 11 小时前阅读数: 5
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
dart系列之:手写Library,Library编写最佳实践