ES6的export与Nodejs的module.exports比较
首先我们要明白一个前提,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比较相关推荐
- nodejs中module.exports和exports的区别
最近在学习nodejs,这篇文章就权当是一篇笔记,如果有什么地方有误,望指出. 首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范 Com ...
- 一句话说清楚NodeJS中module.exports和exports的区别
关于这个问题NodeJS的官方文档中有一句很精辟的解释: What's the difference between module.exports and exports? The first exp ...
- import、require、export、module.exports详解
前言 import ,export default,export遵循 es6 制定的规范 require, module.exports,exports遵循commonjs 制定规范 注意事项 mod ...
- export / import与module.exports/require的关系与用法
在项目开发中一些命令的使用是必不可少的,模块化开发中对于模块的导入或导出都会用到. 一.使用规范 require: node 和 es6 都支持的引入 module.exports / exports ...
- (区别、详解、使用)module.exports与exports,export与export default,import 与require
目录 导出简介(里面有小细节请仔细阅读) module.exports与exports 1.该js文件要导出的值即为test 2.该js文件要导出的值即为test1和test2 3. 注意这里我是先给 ...
- exports和module.exports的区别
请牢记一条原则:无论使用 exports 暴露成员,或是 module.exports 暴露成员,最终暴露的结果,都是以 module.exports 所指向的对象为准. 1.module 对象 看一 ...
- 【nodejs】import、export、exports、module.exports
1.import 和 export(ES6特性) 目录结构 export_file.js export const myNumbers = [1, 2, 3, 4]; const animals = ...
- ES6 module.exports和export详解
module.exports和export详解 前言 一.commonJs: 使用步骤 1.导出属性 2.导出类 二.ES6规范 对外暴露的方式 分别暴露 统一暴露 暴露的时候指定别名 默认暴露 引入 ...
- module.exports 和 export default
CommonJS模块规范和ES6模块规范完全是两种不同的概念 CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一 ...
最新文章
- 汇编语言w3c_w3cschoolc语言教程
- CoordinatorLayout、AppBarLayout、Toolbar使用详解
- python怎么读文件名-python读取文件名并改名字的实例
- Py之matplotlib:matplotlib绘图自定义函数总结
- TCP/IP的七层模型
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1085:球弹跳高度的计算
- 润乾集算报表呈现输出之表头重复
- The superclass javax.servlet.http.HttpServlet was not found on the Java Build
- anaconda安装python视频_怎么安装anaconda?
- dict后缀_学习词根dict 成片记单词
- 常用Latex表达式符号——组合数学篇
- HDU-5718 Oracle
- Html5的测试总结
- 经典论文学习笔记——13篇对比学习(Contrastive Learning)
- 公众号滑动图代码_微信公众号的代码块插入,及一键排版
- 方差(variance)、标准差(Standard Deviation)、均方差、均方根值(RMS)、均方误差(MSE)、均方根误差(RMSE)
- Unity3D场景制作基本操作
- 电压放大倍数公式运放_运放电路放大倍数的计算
- 插入排序一块说说-很合适~~~二分查找和折半
- ebay详情页html,eBay详情页商品的basic Description没有了?