关于dart:dart系列之手写LibraryLibrary编写最佳实践

34次阅读

共计 1727 个字符,预计需要花费 5 分钟才能阅读完成。

简介

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/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

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

正文完
 0