博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
module.exports,exports,export和export default,import与require区别与联系
阅读量:4317 次
发布时间:2019-06-06

本文共 997 字,大约阅读时间需要 3 分钟。

首先

module.exportsexports、exportexport default都是导出模块;

importrequire则是导入模块。

而且

module.exportsexports以及require是属于CommonJS模块规范!

exportexport default以及import是属于ES6语法.

 

三、module.exportsexports的区别与联系

讲到这里就不得不稍微提一下模块化:

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

 

看了刚刚这段commonjs规范上面的介绍可以知道以下区别与联系:

 

其实exports变量是指向module.exports,加载模块实际是加载该模块的module.exports。这等同在每个模块头部,有一行这样的命令。

 

var exports = module.exports;

 

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

转载于:https://www.cnblogs.com/shenlan88/p/11150509.html

你可能感兴趣的文章
关于集合常见的问题
查看>>
车牌正则表达式
查看>>
使用类的成员函数来实现回调函数
查看>>
Win form碎知识点
查看>>
避免使用不必要的浮动
查看>>
cocos2dx 编辑框 CCEditBox
查看>>
第一节:ASP.NET开发环境配置
查看>>
PHP全栈学习笔记7
查看>>
表单脚本基础知识
查看>>
开源分享 Unity3d客户端与C#分布式服务端游戏框架
查看>>
浏览器默认缓存时间-(为什么浏览器时而缓存,时而不缓存)
查看>>
2013年最佳的16个 Photoshop 设计教程推荐
查看>>
15个优秀的 Material Design(材料设计)案例
查看>>
sql 列转行
查看>>
Html5 手机端网页不允许缩放
查看>>
Myeclipse 常用操作(待补充)
查看>>
PHP 获取当前所在的类名、方法名等
查看>>
基本数据类型和引用类型
查看>>
关于移动端APP开发-字体样式变大问题
查看>>
leetcode4568
查看>>