header-bg.jpg
Dart 面向对象之库
发表于 2019-08-22 17:03
|
分类于 Dart
|
评论次数 0
|
阅读次数 82

QQ图片20190703111655.png

模块化在编程中是一个重要的概念,它是一种规范、约束,这种约束会使我们开发者大大提高效率。在 Dart 中,我们可以将每个 Dart 文件看作是一个模块,每个模块通过固定的方式引入,并且通过固定的方式向外暴露内容,这种被创建的模块化代码就被称之为

使用 importlibrary 关键字可以帮助我们创建库,库中以 _ 开头的变量或函数只有在库的内部可以访问,库可以使用 Dart package 工具进行部署。

引入库

使用 import 关键字可以引入一个库,例如 Dart Web 应用通常会引用 dart:html 库:

import 'dart:html';

import 的参数必须是库的 URI,上面代码中的 dart:html 就是库的 URI。对于内置的库,URI 的格式为 dart:scheme;对于其他的库,我们可以使用文件系统路径或者格式为pachage:scheme 的路径,这种 pachage:scheme 格式的路径通过包管理工具来提供,例如 pub 工具

pachage:scheme 相关的用法如下:

import 'package:mylib/mylib.dart';
import 'package:utils/utils.dart';

导出库

使用 export 关键字可以导出一个库,例如 dart:shelf 库的 shelf.dart 文件部分源码如下:

export 'src/cascade.dart';
export 'src/handler.dart';

shelf.dart 这个文件与 src 目录同级,它使用了相对路径将 src 目录下的 dart 文件全部导出。

指定库前缀

如果我们导入的两个库中的标识符有冲突,那么我们可以使用库前缀来进行区分,例如:

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;

final element1 = Element();
final element2 = lib2.Element();

上面的代码中,lib1lib2 这两个库都有 Element 类,所以我们使用 lib2 库时,可以加上它的前缀以进行区分。

只导入库的一部分

如果我们只需要导入库的一部分代码,则可以使用 showhide 关键字来按需导入,例如:

import 'package:lib1/lib1.dart' show foo;
import 'package:lib2/lib2.dart' hide foo;

上面的代码中,只导入了 lib1 库的 foo 函数,并且隐藏了 lib2 库的 foo 方法。

发布评论
还没有评论,快来抢沙发吧!