-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
案例中的模块导出了两个对象: Employee类,getEmployee函数。因对象emp未被导出,所以其仍为模块私有。
导出一组对象
尽管内联导出很有效,但在大规模模块中,它就很难发挥作用了,因为我们可能无法追踪到模块导出来的对象。在这种情况下,更好的办法是,在模块的末尾单独进行导出声明,以导出该模块中的全部对象。
class Employee{ constructor(id, name, dob){ this.id = id; this.name=name; this.dob= dob; } getAge(){ return (new Date()).getYear() - this.dob.getYear(); } } function getEmployee(id, name, dob){ return new Employee(id, name, dob); } var x = new Employee(1, "Rina", new Date(1987, 1, 22)); export {Employee, getEmployee};
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
在导出时,重命名对象也是可以的。如下例所示,Employee在导出时名字改为了Associate,函数GetEmployee改名为getAssociate。
export { Associate as Employee, getAssociate as getEmployee };
-
1
-
2
-
3
-
4
Default导出
使用关键字default,可将对象标注为default对象导出。default关键字在每一个模块中只能使用一次。而默认导出每个导出只有一个单一值,这个输出可以是一个函数、类或其它类型的值
export default function() {}; // 可以导出一个函数 export default class(){}; // 也可以出一个类
-
1
-
2
const D = 123; export default D; export { D as default }; //与上面的等价
-
1
-
2
-
3
-
4
导入模块
现有模块可以使用关键字import导入到其它模块。一个模块可以被导入任意数量的模块中。下文展示了导入模块的不同方式。
如果模块包含一些逻辑要执行,且不会导出任何对象,此类对象也可以被导入到另一模块中。如下面案例所示:
import './module1.js';
- 1
导入默认对象
采用Default导出方式导出对象,该对象在import声明中将直接被分配给某个引用,如下例中的“d”。
import d from './module1.js'; import { default as d } from './module1.js'; //等价于上面
-
1
-
2
导入命名的对象
正如以上讨论的,一个模块可以导出许多命名对象。如果另一模块想导入这些命名对象,需要在导入声明中一一列出这些对象。举个例子:
import {Employee, getEmployee} from './module1.js';
- 1
当然也可在同一个声明中导入默认对象和命名对象。这种情况下,默认对象必须定义一个别名,如下例。
import {default as d, Employee} from './module1.js';
- 1
导入所有对象
以上几种情况,只有import声明中列举的对象才会被导入并被使用,而其它对象则无法在导入模块中使用。当然,这就要求用户了解哪些对象可以导出并加以利用。如果模块导出大量对象,另一模块想引入所有导出的对象,就必须使用如下声明:
import * as allFromModule1 from './module1.js';
- 1
allFromModule1这一别名将指向所有从module1导出的对象。在导入模块中,它们作为属性可被访问。
学习宝典
对我们开发者来说,一定要打好基础,随时准备战斗。不论寒冬是否到来,都要把自己的技术做精做深。虽然目前移动端的招聘量确实变少了,但中高端的职位还是很多的,这说明行业只是变得成熟规范起来了。竞争越激烈,产品质量与留存就变得更加重要,我们进入了技术赋能业务的时代。
不论遇到什么困难,都不应该成为我们放弃的理由!
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
档,BAT大厂面试真题解析】**
[外链图片转存中…(img-FGlTsiGI-1714955564861)]
【算法合集】
[外链图片转存中…(img-7sUjnDTW-1714955564862)]
【延伸Android必备知识点】
[外链图片转存中…(img-lAatmW1W-1714955564863)]
【Android部分高级架构视频学习资源】
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!