ES6语法--导入、导出

一、export 导出
export default 是默认导出
export const 是命名导出

module.exports与exports,export与export default之间的关系和区别
Node应用由模块组成,采用CommonJS模块规范。
根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

var x = 5;
var addX = function (value) {
return value + x;
};
module.exports.x = x;
module.exports.addX = addX;
require方法用于加载模块。

var example = require('./example.js');
console.log(example.x); // 5
console.log(example.addX(1)); // 6
exports 与 module.exports
为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。

var exports = module.exports;
ES6模块规范
不同于CommonJS,ES6使用 export 和 import 来导出、导入模块。

// profile.js
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;

export {firstName, lastName, year};


二、import ... form...替代 require()
基本导入导出
// 不接收对象
require:require('s.css'); //(es5)
improt 's.css' //(es6)

// 接收对象
var o = require('s.js'); //es(5)
import o form s.js //(es6)
对象的写法:
// 导出一个模块对象(es5):
module.exports={
add:add,
sub:sub
}
// 导出一个模块对象(es6):
module.exports={
add,
sub
}
// 注意:上es6这种写法属性名和属性值变量是同一个,否则要分开写
module.exprots={
addFn:add,
sub
}

一个对象中方法的写法:
// es5
module.exports={
addFun:function(x,y){
return x+y;
}
}
// es6
module.exports={
addFun(x,y){
return x+y;
}
}
导出对象
calc.js中有两个函数:
function add(){}
function sub(){}

//写法一

es5写法:
module.exports.add = add;
module.exports.sub = sub;

es6写法:
exprot function add(){}
exprot function sub(){}

使用:
var calc = require('./calc.js');

//写法二
es5:
module.exports = {add:add,sub:sub};
es6:
exprot default{
add,sub
}
//表示取得calc.js中所有暴露出来的对象(es6)
import calc from './calc.js'
//只获取到calc.js中的add方法(按需获取)
import {add} from './calc.js'

用export 和import 的写法注意点
1、如果模块中使用 export default {}
只能通过 import 对象名称 from '模块路径'
不能通过 import {对象名称} from '模块路径'
2、如果使用 import {对象名称} from '模块路径' 导出具体某个对象或者方法名称

需要单独导出对象或者方法:
export function add(){}
export function sub(){}

使用:
import {add, sub} from '模块路径'
直接使用 add,sub方法

注意:不能直接使用 import 对象名称 from '模块路径'


export default 和 export 区别

1、export与export default均可用于导出常量、函数、文件、模块等
2、你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用
3、在一个文件或模块中,export、import可以有多个,export default仅有一个
4、通过export方式导出,在导入时要加{ },export default则不需要

 

posted on 2020-06-12 16:22  ranyonsue  阅读(1708)  评论(0编辑  收藏  举报

导航