ES6中export default 命令的详解

@




我们知道在学习VUE的时候 export default{} 是不可缺少的,但是它的含义我们必须理解。 

export default{}这是在复用组件的时候用到的。假设我们写了一个单页面组件 A 文件,而在另一个文件 B 里面需要用到它,那么就要用 ES6 的 import/export 语法 ,在文件 A 中定义输出接口 export ,在文件 B 中引入 import ,把引入的组件用起来,这样就可以复用组件 A 去配合文件 B 生成 html 页面了。

为了加深印象特在此总结如下

使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。但是,用户肯定希望快速上手,未必愿意阅读文档,去了解模块有哪些属性和方法。为了给用户提供方便,让他们不用阅读文档就能加载模块,就要用到export default命令,为模块指定默认输出。 
1、基本用法例如


   
   
  1. // export - default .js 这是一个模块文件 export - default .js,它的默认输出是一个函数
  2. export default function () {
  3. console.log( ‘foo’);
  4. }
  • 1
  • 2
  • 3
  • 4

   
   
  1. //im port- default.js
  2. import customName from ‘./export-default’;
  3. customName(); // ‘foo’
  4. //这是的 import命令,可以用任意名称指向 export- default.js输出的方法,这时就不需要知道原模块输出的函数名。
  5. 需要注意的是,这时 import命令后面,不使用大括号。
  • 1
  • 2
  • 3
  • 4
  • 5

其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。

2、export default命令用在非匿名函数前


   
   
  1. // export-default.js
  2. export default function foo() {
  3. console.log( ‘foo’);
  4. }
  5. // 或者写成
  6. function foo() {
  7. console.log( ‘foo’);
  8. }
  9. export default foo;
  10. //上面代码中,foo函数的函数名foo,在模块外部是无效的。加载的时候,视同匿名函数加载。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、export 加default和加的区别


   
   
  1. // 第一组
  2. export default function crc32() { // 输出
  3. //
  4. }
  5. import crc32 from ‘crc32’; // 输入
  6. // 第二组
  7. export function crc32() { // 输出
  8. //
  9. };
  10. import {crc32} from ‘crc32’; // 输入
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

第一组是使用export default时,对应的import语句不需要使用大括号; 
第二组是不使用export default时,对应的import语句需要使用大括号。 
export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。

4、export default就是输出一个叫做default的变量或方法,然后系统允许你为它取任意名字


   
   
  1. // 正确
  2. export var a = 1;
  3. // 正确
  4. var a = 1;
  5. export default a;
  6. // 错误
  7. export default var a = 1;
  8. // 上面代码中, export default a的含义是将变量a的值赋给变量 default 。所以,最后一种写法会报错。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5、因为export default 命令的本质是将后面的值,赋给default变量,所以可以直接将一个值写在export default之后


   
   
  1. // 正确
  2. export default 42;
  3. // 报错 原因这一句报错是因为没有指定对外的接口,而前一句指定外对接口为default。
  4. export 42;
  • 1
  • 2
  • 3
  • 4
  • 5

6、export default命令,输入模块时就非常直观了,以输入 lodash 模块为例

import _ from ‘lodash’;
   
   
  • 1

如果想在一条import语句中,同时输入默认方法和其他接口,可以写成下面这样

import _, { each, each as forEach } from ‘lodash’;
   
   
  • 1

对应上面代码的export语句如下。


   
   
  1. export default function (obj) {
  2. // ···
  3. }
  4. export function each(obj, iterator, context) {
  5. // ···
  6. }
  7. export { each as forEach }; //暴露出forEach接口,默认指向each接口,即forEach和each指向同一个方法。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

7、export default也可以用来输出类


   
   
  1. // MyClass.js
  2. export default class { }
  3. // main.js
  4. import MyClass from ‘MyClass’;
  5. let o = new MyClass();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

export 命令和 import 命令 详见参考地址http://es6.ruanyifeng.com/?search=import&x=0&y=0#docs/module#export-default-%E5%91%BD%E4%BB%A4


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值