美文网首页
Dart之旅09: 库和可见性

Dart之旅09: 库和可见性

作者: suikaJY | 来源:发表于2019-02-14 16:21 被阅读0次

importlibrary指令可以帮你创建模块化和可共享的代码。库不仅提供API,也可以有私有化的元素。使用下划线开始的标识符只在库中可见。每个dart app都是一个库,即使没有使用library指令。

库可以使用package进行分发。参考Pub Package and Asset Manager

使用库

使用import关键字来指定其他库:

import 'dart:html';

对于内置库,要使用dart: scheme,对于其他库要使用package: scheme。例如:

import 'package:test/test.dart';

指定库前缀

如果你的两个库里面有相同的标识符,那么可以使用as来指定命名空间。类似C++的namespace

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();
}

你可以多次调用loadLibrary(),懒加载只会加载一次,后续的加载都会使用缓存中的内容,而不是再次加载。

使用延迟加载时需要记住以下几点:

  • 一个延迟库的常量也不存在,直到这个库被加载
  • 你不能使用一个导入延迟库的dart文件中导入的延迟库里面的类型。取而代之的是你可以在导入延迟库的dart文件中公开一个导入方法的接口
  • Dart隐式地添加了loadLibrary()方法到deferred as命名空间,这个方法返回了一个Future

Dart VM有时候会允许你在调用loadLibrary()之前访问延迟库的变量。但不要依赖这种特性,很可能在后续版本里面就会被改掉。

实现一个库

参考Create Library Packages,它包含了:

  • 如何组织库代码
  • 如何使用export指令
  • 何时使用part指令
  • 何时使用library指令

相关文章

  • Dart之旅09: 库和可见性

    import和library指令可以帮你创建模块化和可共享的代码。库不仅提供API,也可以有私有化的元素。使用下划...

  • Dart - 库和可见性

    import 和library关键字可以帮助你创建一个模块化和可共享的代码库。代码库不仅只是提供 API 而且还起...

  • flutter【9】dart语言--库和可见性

    库和可见性 每个 Dart app 都是一个库, 即使没有使用 library 命令也是一个库。 使用 impor...

  • Dart学习-库和可见性

    import和library可以帮助你创建模块化和可共享的代码库。库不仅提供API,而且是私有的一个单位:以下划线...

  • Dart(2.2) - 库和可见性(Libraries and

    库和可见性 import和library指令可以帮助创建一个模块化的,可共享的代码库。库不仅提供了API,还提供隐...

  • 第二章:Dart语法(库)

    一、库 库和可见性 import 和 library 关键字可以帮助你创建一个模块化和可共享的代码库。代码库不仅只...

  • [Flutter]Dart中关于库的简介

    库和可见性 import 和 library 指令可以用来创建一个模块化的,可共享的代码库。 库不仅提供了 API...

  • Dart 可见性

    Dart没有访问修饰符,默认为公开(public),单词以“_”开头的表示私有(private)。允许同一文件内创...

  • Flutter笔记三之Dart库文件的使用

    一个dart文件就是一个库文件 系统库的使用: 每个dart文件默认导入了系统核心库dart:core其他库需手动...

  • Dart | 彻底理解Dart中的库与访问可见性

    前言 无论使用哪一门语言,都不可能在一个函数里实现全部的功能,一定是将整个功能封装到不同函数、类或者库中,这就涉及...

网友评论

      本文标题:Dart之旅09: 库和可见性

      本文链接:https://www.haomeiwen.com/subject/mhneeqtx.html