总结:

require: node 和 es6 都支持的引入(CommonJS规范)
export / import : 只有es6 支持的导出引入
module.exports / exports: 只有 node 支持的导出(CommonJS规范)

使用方法:

CommonJS规范:

简单来说:CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)

module.exports 和 exports 的关系 :

exports = module.exports = {};

也就是说exports = module.exports 都指向同一个内存地址,再来看看一个例子:

// a.js
let a = 100;exports.a = 200;
// 然后把a指向另外一个地址
exports = '另外的地址'// b.js
// 引入模块var example = require('./a.js')
console.log(example.a)  // 200

可以看出,require导出的内容是module.exports的内容,而不是exports的,简单来说,exports用来帮助module.exports操作内存中的数据。

最简单的方法就是尽量都用 module.exports。避免混淆。

ES6

export 和 export default的区别:

  • 在一个文件或模块中,export、import可以有多个,export default仅有一个
  • 通过export方式导出,在导入时要加{ },export default则不需要
  • export能直接导出变量表达式,export default不行。

直接看例子,一目了然:

//a.jsexport const a = '100'  // 方式一
export dogSay = function(){ console.log('汪 汪')
}// 方式二
const catSay= function(){ console.log('喵 喵')
}
export { catSay}// export default方式
const mark85 = 1000
export default mark85
// b.js
import { a, dogSay, catSay} from './a.js';  // 引入export导出的数据
import number from './a.js' // 引入export default导出的数据
import * as obj from './a.js' // 集合成对象一并导出console.log(a) // 100
dogSay(); // 汪 汪
catSay(); // 喵 喵
console.log(number) // 1000
console.log(obj.a) // 100
console.log(obj.default) // 1000

exports、module.exports和export、export default之间的区别相关推荐

  1. require 动态加载_require,exports,module.exports和import,export,export default

    我们前端在开发过程中经常会遇到导入导出功能, 在导入时,有时候是require,有时候是import 在导出时,有时候是exports,module.exports,有时候是export,export ...

  2. exports module.exports export export default之间的关系

    exports 和module.exports是CommonJS模块规范 export export default是ES6模块的规范,两者完全是不同的概念. node应用由模块组成,采用的是Comm ...

  3. module.exports与exports,export与export default之间的关系和区别

    CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范: 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文 ...

  4. 一文解读exports、module.exports 和 export、export default

    对于前端初学者来说,exports.module.exports 和 export.export default 容易让人产生误解,笔者顺便写篇文章解读一下. 第一部分:exports 和 modul ...

  5. module.exports 和 export default

    CommonJS模块规范和ES6模块规范完全是两种不同的概念 CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一 ...

  6. 导出与导入(require,import,module.exports,exports,export,export default)

    一.不同点 1.加载时间不同 require: 运行时加载 import: 编译时加载(效率高) [先写调用,后写import导入不报错] [加载时机的原因,让import会提升到整个文件的头部] 2 ...

  7. (区别、详解、使用)module.exports与exports,export与export default,import 与require

    目录 导出简介(里面有小细节请仔细阅读) module.exports与exports 1.该js文件要导出的值即为test 2.该js文件要导出的值即为test1和test2 3. 注意这里我是先给 ...

  8. ES6的export与Nodejs的module.exports比较

    首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个 ...

  9. module.exports与exports,export与export defa

    首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个 ...

最新文章

  1. php语+言教程,写给thinkphp开发者的laravel系列教程(九)打印数据-Fun言
  2. android系统的手机目录
  3. IIS 之 失败请求跟踪规则
  4. 【算法知识】详解希尔排序算法
  5. 数组转换成json key-value形式
  6. 【Uva 12093】Protecting Zonk
  7. 渐进式web应用程序_渐进式Web应用程序与加速的移动页面:有什么区别,哪种最适合您?
  8. 趣谈程序员真香定律:源码即设计
  9. Java多线程11:ReentrantLock的使用和Condition
  10. 微信模板消息47001错误
  11. C# 根据年月日计算星期几
  12. Android技术栈总结
  13. BERT出来后难道我们无路可走了吗?错!这些新想法你需要了解!
  14. 服务器搭建bbr加速
  15. 两台局域网电脑共享文件及传输文件集锦
  16. MapReduce经典案例实战
  17. ipv4 pxe 联想start_PC开机出现Start pxe over ipv4解决办法 PC重启后显示start pxe over IPv4...
  18. leetcode【中等】781、森林中的兔子
  19. Foxmail.exe -损坏的映像 错误修复
  20. 蓝牙开发那些事(9)——结合代码看a2dp协议

热门文章

  1. js 选中下拉菜单执行事件
  2. 小鼠腹腔巨噬细胞巨噬细胞培养实验
  3. TP5.1执行SQL文件创建多个数据表MySQL提示42000错误解决方案
  4. IntelliJ Idea整理Open Recent里面的项目列表
  5. win32 zbar
  6. TweenMax+SVG礼物盒购物动画
  7. 7、注解@Mapper、@MapperScan
  8. 世界环境日征集活动 | 照片征集视频征集工具推荐
  9. channel.php id,channel.php
  10. element card实现边框有弧度