首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念。

CommonJS模块规范

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; 

上面代码通过module.exports输出变量x和函数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;

于是我们可以直接在 exports 对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样。注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

ES6模块规范

不同于CommonJS,ES6使用 export 和 import 来导出、导入模块。

// profile.js
var firstName = 'Michael';
var lastName = 'Jackson'; var year = 1958; export {firstName, lastName, year}; 

需要特别注意的是,export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

// 写法一
export var m = 1;// 写法二 var m = 1; export {m}; // 写法三 var n = 1; export {n as m}; 

export default 命令

使用export default命令,为模块指定默认输出。

// export-default.js
export default function () { console.log('foo'); }

转载于:https://www.cnblogs.com/giserlong88/p/9534983.html

ES6的export与Nodejs的module.exports比较相关推荐

  1. nodejs中module.exports和exports的区别

    最近在学习nodejs,这篇文章就权当是一篇笔记,如果有什么地方有误,望指出. 首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Com ...

  2. 一句话说清楚NodeJS中module.exports和exports的区别

    关于这个问题NodeJS的官方文档中有一句很精辟的解释: What's the difference between module.exports and exports? The first exp ...

  3. import、require、export、module.exports详解

    前言 import ,export default,export遵循 es6 制定的规范 require, module.exports,exports遵循commonjs 制定规范 注意事项 mod ...

  4. export / import与module.exports/require的关系与用法

    在项目开发中一些命令的使用是必不可少的,模块化开发中对于模块的导入或导出都会用到. 一.使用规范 require: node 和 es6 都支持的引入 module.exports / exports ...

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

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

  6. exports和module.exports的区别

    请牢记一条原则:无论使用 exports 暴露成员,或是 module.exports 暴露成员,最终暴露的结果,都是以 module.exports 所指向的对象为准. 1.module 对象 看一 ...

  7. 【nodejs】import、export、exports、module.exports

    1.import 和 export(ES6特性) 目录结构 export_file.js export const myNumbers = [1, 2, 3, 4]; const animals = ...

  8. ES6 module.exports和export详解

    module.exports和export详解 前言 一.commonJs: 使用步骤 1.导出属性 2.导出类 二.ES6规范 对外暴露的方式 分别暴露 统一暴露 暴露的时候指定别名 默认暴露 引入 ...

  9. module.exports 和 export default

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

最新文章

  1. 汇编语言w3c_w3cschoolc语言教程
  2. CoordinatorLayout、AppBarLayout、Toolbar使用详解
  3. python怎么读文件名-python读取文件名并改名字的实例
  4. Py之matplotlib:matplotlib绘图自定义函数总结
  5. TCP/IP的七层模型
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1085:球弹跳高度的计算
  7. 润乾集算报表呈现输出之表头重复
  8. The superclass javax.servlet.http.HttpServlet was not found on the Java Build
  9. anaconda安装python视频_怎么安装anaconda?
  10. dict后缀_学习词根dict 成片记单词
  11. 常用Latex表达式符号——组合数学篇
  12. HDU-5718 Oracle
  13. Html5的测试总结
  14. 经典论文学习笔记——13篇对比学习(Contrastive Learning)
  15. 公众号滑动图代码_微信公众号的代码块插入,及一键排版
  16. 方差(variance)、标准差(Standard Deviation)、均方差、均方根值(RMS)、均方误差(MSE)、均方根误差(RMSE)
  17. Unity3D场景制作基本操作
  18. 电压放大倍数公式运放_运放电路放大倍数的计算
  19. 插入排序一块说说-很合适~~~二分查找和折半
  20. ebay详情页html,eBay详情页商品的basic Description没有了?

热门文章

  1. mysql 多表查询or_MySQL 多表查询
  2. php 解析 js new date,js new Date() 测试
  3. mysql千万级大数据SQL查询优化
  4. docker挂载目录原理
  5. java开发书籍,送大厂面经一份!
  6. VScode+SSH Remote多级连跳配置
  7. python【数据结构与算法】棋盘覆盖问题
  8. Python-random标准库知识小结
  9. php执行rsync,使用rsync工具构建php项目管理平台,rsync项目管理
  10. 网络推广外包浅析为什么网络推广外包中网站优化比百度竞价更友好?