在JS模块化编程中,之前使用的是require.js或者sea.js。随着前端工程化工具webpack的推出,使得前端js可以使用CommonJS模块标准或者使用ES6 moduel特性。

在CommonJs模块标准中我们载入模块使用的是require(),输出模块用的是exports或者module.exports

在ES6中载入模块我们用的是import ,输出模块用的是export

exports与module.exports的区别

//载入模块
var m = require('./moduleA.js')
m.callName()
//输出模块
exports.callName = function(){
console.log('jesse')
}
//也可以这样输出
module.exports.callName = function(){
console.log('jesse')
}

module.exports才是module模块的真正接口,而exports可以理解为它的一个副本

虽然修改exports对象的时候也会修改module.exports对象,但最终返回给调用的是module.exports对象

当module.exports对象通过赋值方式进行设定后,就已经和exports对象没关系了

so,我的理解是exports输出的只是要输出的对象的某个属性,module.exports才真正输出的是要输出的对象。

一个模块文件中可以有多个exports输出,但只能有一个module.exports输出

这种方式普遍用于node中模块的编写

export与export.defult区别

es6moduel特性在node环境中并不能完全支持,解决方法是用babel编译

//载入模块
import {callName} from './moduleA.js'
callName()
//输出模块
export function callName (){
console.log('jesse')
}

1.export与export default均可用于导出常量、函数、文件、模块等

2.你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用

3.在一个文件或模块中,export、import可以有多个,export default仅有一个

4.通过export方式导出,在导入时要加{ },export default则不需要

最新文章

  1. (原)3.1 Zookeeper应用 - Master选举
  2. eclipse debug小技巧
  3. SOLID architecture principles using simple C# examples
  4. skip32
  5. Linux环境进程间通信(五): 共享内存(下)
  6. Sql Server尝试读取或写入受保护的内存。这通常指示其他内存已损坏
  7. 使用splice实现高效的代理服务器
  8. node.js连接MySQL操作及注意事项
  9. 基于Android P系统对selinux相关整理
  10. 用es6类封装的图片预加载技术!
  11. Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
  12. 在Java的Condition接口【唤醒全部线程】
  13. python 爬虫 记录
  14. Zabbix监控MySQL免密码设置
  15. HTML+CSS写下拉菜单
  16. QTQuick控件基础(2)
  17. AngularJS通过$location获取及改变当前页面的URL
  18. 11 stark组件之delete按钮、filter过滤
  19. 【arc073D】Many Moves
  20. 动态规划-House Robber

热门文章

  1. ionic hidden scroll bar
  2. 【shiro】(1)---了解权限管理
  3. 【云服务器部署】---Linux下安装nginx
  4. IntelliJ IDEA中用Git插件操作
  5. Struts1入门实例(简单登录)
  6. 解决Unity中模型部件的MeshCollider不随动画一起运动的问题
  7. Magicodes.NET框架之路——让Magicodes.NET帮你编写代码
  8. Spring Boot (五)Spring Data JPA 操作 MySQL 8
  9. Deep Learning中的Large Batch Training相关理论与实践
  10. spark之java程序开发