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()

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

  1. 一个对象中方法的写法:
// es5
module.exports={
    addFun:function(x,y){
        return x+y;
    }
}
// es6
module.exports={
    addFun(x,y){
        return x+y;
    }
}
  1. 导出对象
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'

  1. 用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则不需要

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容