9.Libraries and visibility 库和可见性
import和liabrary指令可以帮助你创建模块化,可复用的代码。库不仅仅提供API,也是一个私有化单元:库中已下划线(_)开头的类都是对外不可访问的。每个Dart的应用也是一个包,尽管它没有使用包的声明。
库都采用包的形式发布。具体看 Pub Package and Asset Manager
Using libraries 库的使用
使用import关键字引入库中的资源。
下面的例子中,表示了Dart web 应用需要使用dart:html 库
import 'dart:html';
在Dart的内置库中,你可以直接使用dart:schema来引入。其它的库,你可以使用文件路径或者package:scheme方式。其中package:scheme使用的包发布工具发布的代码。
import 'package:test/test.dart';
注意:URI是统一资源标识,URL是URI的一种,
Specifying a library prefix 指定库使用前缀
如果你导入两个库,它们有相同的类,你可以使用其中一个库增加前缀使用标识.·
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();
Importing only part of a library
If you want to use only part of a library, you can selectively import the library. For example:
// Import only foo.
import 'package:lib1/lib1.dart' show foo;
// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;
Lazily loading a library 懒加载
Deferred loading允许应用你在需要时,在后台加载库。下面是需要使用到 deferred的场景
- 减少APP的启动事件
- 进行A/B 测试,
- 用于加载少用的类,可以节省资源,比如可选的界面和弹出框,
import 'package:greetings/hello.dart' deferred as hello;
当你需要用它时,使用loadLibrary().
Future greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
在上面的代码中,await 暂停程序执行,直至包加载完。如果想了解关于 async 和 await更多信息,请看asynchrony support.
你可以多次调用loadLibrary,但是库只会让你加载一次。
如下是deferred使用的一些原则:
不可使用通过deferred导入库的常量,因为它只有在loadLiabary后才创建
不可使用通过deferred导入库的类,可以将类定义为接口通过import导入,具体实现通过deferred导入
Dart implicitly inserts loadLibrary() into the namespace that you define using deferred as namespace. The loadLibrary() function returns a Future.(没看太懂,和理解的有冲突)
DartVM 不同:DartVM在loadLibrary之前允许使用库中的变量,但是这种做法不建议使用,可能后期会改变这种机制
Implementing libraries 创建库
9.Libraries and visibility 库和可见性的更多相关文章
- Page Visibility API(页面可见性)
页面可见性: 就是对于用户来说,页面是显示还是隐藏, 所谓显示的页面,就是我们正在看的页面:隐藏的页面,就是我们没有看的页面. 因为,我们一次可以打开好多标签页面来回切换着,始终只有一个页面在我们眼前 ...
- HTML5 Page Visibility
什么是 Page Visibility ? Page Visibility 即页面可见性,通过 visibilityState 的值检测页面当前是否可见.当一个网站是可见或点击选中的状态时 Page ...
- 安装numpy库
1.先安装pip: 下载地址:http://pypi.python.org/pypi/pip#downloads 下载pip-8.1.2.tar.gz(md5,pgp)完成之后,解压到一个文件夹,cm ...
- 转一个 Xcode 7 缺少 *.dylib库的解决方法
Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法. 方法1. (heqin ...
- boost库的安装,使用,介绍,库分类
1)首先去官网下载boost源码安装包:http://www.boost.org/ 选择下载对应的boost源码包.本次下载使用的是 boost_1_60_0.tar.gz (2)解压文件:tar - ...
- ios开发问题:添加库和复制其它工程文件编译错误问题
首先添加库问题: 选择页签Build Phases->Link Binary With Libraries点+添加库 然后command+shift+k清除历史debug的垃圾 复制其它工程文件 ...
- 在Linux使用GCC编译C语言共享库
在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- CSS(三)背景 list-style display visibility opacity vertical cursor
背景background 1.background-color:'' 背景颜色 2.background-image:'' 背景图片 background-repeat:'' 背景图片是否平铺 取 ...
随机推荐
- 前端开发笔记(2)css基础(上)
CSS介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS ...
- 【jdk源码1】TreeMap源码学习
这是看过的第一个jdk源码(从立下目标以来):TreeMap.说实话断断续续的看了有好几天了,我觉得我犯了一个错误,就像一开始说的那样,我打算完完全全看懂TreeMap关于红黑树的实现方式,后来我想了 ...
- 客户端连接caching-sha2-password问题
ALTER USER 'root'@'localhost' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;ALTER USER 'root'@'localhost ...
- 俩表之间的添加Sql
insert into 表3(字段1,字段2) select 表1.UserName,表2.GroupName from 表1,表2 where ...
- 十个强大的DevOps基础设施自动化工具,不容错过
Devops基础设施自动化的工具 有许多工具用于基础设施自动化.使用哪个工具决定于体系结构和基础设施的需求.下面我们列出了一些伟大的工具,用于不同类别配置管理.编制.持续集成.监控等. 1.Chef ...
- PHP支付宝支付开发流程
支付宝开发流程 1.首先我们先谈谈第三方支付 所谓第三方支付就是和一些各大银行签约,并具备一定实力和信誉保障的第三方独立机构提供的交易平台 目前市面上常见的有支付宝,财付通,网银,易宝支付等,网站 ...
- TiDB数据库集群安装以及注意事项
今天尝试安装tidb集群.详细的安装步骤我们参考:https://pingcap.com/docs-cn/op-guide/ansible-deployment/ . 不过安装之前需要一些注意事项. ...
- win7 win10双系统开机系统引导
以win7启动管理器引导作为启动引导 安装一个easybcd 然后里面添加引导选项(添加新条目---->编辑引导菜单(选择倒计时30秒)把use metro bootloader勾去掉就是默认的 ...
- php linux 环境搭建
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一.Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以 ...
- 三、git管理修改
一.修改提交 如下图,Git分工作区和版本库(.git隐藏目录中). 在每次修改后 git add "file name" 其实是把修改内容提交到本地版本库的 暂存区(stage) ...