ES6中export default 命令的详解

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

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

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

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

//export-default.js 这是一个模块文件export-default.js,它的默认输出是一个函数
export default function () {
  console.log('foo');
}
  • 1
  • 2
  • 3
  • 4
//import-default.js
import customName from './export-default';
customName();  //'foo'
//这是的import命令,可以用任意名称指向export-default.js输出的方法,这时就不需要知道原模块输出的函数名。
需要注意的是,这时import命令后面,不使用大括号。
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

// export-default.js
export default function foo() {
  console.log('foo');
}

// 或者写成

function foo() {
  console.log('foo');
}

export default foo;
//上面代码中,foo函数的函数名foo,在模块外部是无效的。加载的时候,视同匿名函数加载。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、export 加default和加的区别

// 第一组
export default function crc32() { // 输出
  // ...
}
import crc32 from 'crc32'; // 输入


// 第二组
export function crc32() { // 输出
  // ...
};
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的变量或方法,然后系统允许你为它取任意名字

// 正确
export var a = 1;

// 正确
var a = 1;
export default a;

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

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

// 正确
export default 42;

// 报错 原因这一句报错是因为没有指定对外的接口,而前一句指定外对接口为default。
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语句如下。

export default function (obj) {
  // ···
}

export function each(obj, iterator, context) {
  // ···
}

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

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

// MyClass.js
export default class { ... }

// main.js
import MyClass from 'MyClass';
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


  • 18
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值