Dart基础--Libraries以及可见性

importlibrary 指定可以帮你创建一个模块化以及可复用的代码基础。Libraries不仅可以提供APIs,也是一个私有单元:以下划线开始的标识符仅仅在所在的 library 中可见。每一个 Dart 程序都是一个 library ,即使它没有使用 library 指令。

可以使用 packages 来分发Libraries。

使用Libraries

使用 import 来指定一个 library 的命名空间如何在另一个 library 的范围内使用。
例如,Dart web 应用程序通常需要使用 dart:html 库,那么可以像下面这样导入:

import 'dart:html';

import 唯一必需的参数是指定库URI。对于内置库,它们的URI有一个指定的scheme: dart: 。对于其他库,你可以使用文件系统路径或者一个schema: package: 。 scheme package: 指定包管理器所提供的库(Libraries),例如:

import 'package:test/test.dart';

指定库的前缀

如果你导入两个有标识符冲突的库,此时你可以为其中一个或者两个都指定前缀。例如:如果 library1和library2都有一个 Element 类,你可能需要像下面的代码这样写:

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

// Uses Element from lib1.
Element element1 = Element();

// Uses Element from lib2.
lib2.Element element2 = lib2.Element();

仅仅导入库的一部分

如果你想要使用一个库的一部分,你可以有选择性的导入一个库。例如:

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

懒加载一个库

延迟加载(也称为懒加载)库允许一个应用程序在需要的时候才去加载一个库。这里是一些你可能使用延迟加载的场景:

  • 要减少一个APP的初始启动时间。
  • A/B测试。
  • 加载很少使用的功能。

要懒加载一个库,你必须在第一次导入时使用 deferred as

import 'package:greetings/hello.dart' deferred as hello;

当你需要使用延迟加载的库时,使用库的标识符调用 loadLibrary() ,例如:

Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

在上面的代码中,关键字 await 会暂停代码的执行直到库被加载完成。更多关于 async await 的信息,请看asynchrony support

你可以调用在一个库上多次调用 loadLibrary() ,这是不会有问题的,该库仅仅会被加载一次。

当你使用延迟加载一个库时,请牢记如下几点:

  • 一个延迟加载的库的常量在导入该库的文件中并不属于常量。记住,这些常量是不存在的,直到延迟加载库被加载完成。
  • 你不能在导入库的文件中使用延迟库中的类型。Instead, consider moving interface types to a library imported by both the deferred library and the importing file.
  • Dart隐式的将 loadLibrary() 插入到你使用 deferred as namespace 定义的命名空间中。

实现库

如何实现一个库请参考 Create Library Package,包含如下几点:

  • 如何组织库的源代码
  • 如何使用 export 指令
  • 何时使用 part 指令
  • 何时使用 library 指令
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值