module.exports、exports、export、import、require乱七八糟的导入导出方式

首先
module.exports/exports是Node才支持的导出方式
export/import是ES6才制止的导入导出方式
require是Node和ES6都支持的导入方式

Node里面的模块系统遵循的是CommonJS规范。
CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)

当Node执行一个文件时,会给该文件生成module对象和exports对象。其中module对象又有一个exports对象属性。
初始情况下,module.exports和exports指向同一块内存。也就是说你是用module.exports导出还是用exports导出,用require接收的结果是一样的。但给二者赋不同的值时:

//1.js
module.exports={name:'aa'}
exports={name:'bb'}
//2.js
var a=require('./1.js')
console.log(a)//{name:'aa'}
//3.js
exports={name:'cc'}
console.log(module.exports)//{name:'cc'}
//4.js
var a=require('3.js)
console.log(a)//{name:'cc'}

require接收的是module.exports导出的。
export可以有多个,export default只能有一个。

// 1. 
// 引入模块的某些变量(方法、类),配合4、5使用
import {xxx, xxxx} from 'xxx'  

// 2. 
// 引入模块的默认变量(方法、类),配合6使用
import xxx from 'xxx' 

// 3.
// 实现动态加载,适用于按需加载等
import('../xxx') 

// 4.
// 输出模块的变量(方法、类),对应引入方法为1
let xxx = 'x'; export {xxx}
// 5.
// 输出模块的变量(方法、类),对应引入方法为1
export class xxx {}
// 6.
// 输出模块默认的变量(方法、类),对应引入方法为2
export default {}
// 7.
// 待更新
exports.post()
// 8.
module.exports.init = init;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值