node.js中module.exports与exports用法上的区别
Node.js 引入了模块(Module)概念,一个模块可以通过module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过require() 函数引入并使用。
module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {},exports 是指向的 module.exports 的引用,在模块内部大概是这样:
exports = module.exports = {};
举个栗子,在node.js中创建模块非常简单,一个文件就是一个模块,所以我们创建一个name.js文件就创建了一个模块name.js,使用exports和require对象对外提供接口和引用模块。
name.js
var myName=function(){ var name='AmberYLopez'; console.log(name); }; exports.myName=myName;
这样在使用的时候需要这样
app.js
var name=require('./name');
如果我们创建的name.js文件是使用module.exports和require对象对外提供接口和引用模块。
name.js
var myName=function(){ var name='AmberYLopez'; console.log(name); }; module.exports=myName;
app.js
var name=require('./name');
exports 赋值其实是给 module.exports 这个空对象添加myName属性而已,为什么exports要使用添加属性的方式,而不用exports=myName?
exports是引用 module.exports的值。exports 被改变的时候,module.exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports。
如果将name.js改为
var myName=function(){ var name='AmberYLopez'; console.log(name); }; exports=myName;
app.js
var name=require('./name');<br>console.log(name);
运行会报错。因为,前面是通过给 exports 添加属性,而现在对 exports 指向的内存做了修改,exports 和 module.exports 不再指向同一块内存,即 module.exports 指向的那块内存并没有做任何改变,仍然为一个空对象 {},所以会报错。
- CommonJS与ES6 Module的使用区别分析
- JavaScript ES6 Module模块详解
- node.js的exports、module.exports与ES6的export、export default深入详解
- ES6入门教程之Class和Module详解
- ES6中module模块化开发实例浅析
- ES6新特性之模块Module用法详解
- Node.JS中的模块、exports和module讲解
- Node.js 中的 module.exports 与 exports区别介绍
- Node.js中module.exports 和exports使用误区
- 详解Node.js中exports和module.exports的区别
- Node.js 中exports 和 module.exports 的区别
- module.exports和exports使用误区案例分析
相关文章
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
这篇文章主要介绍了使用Node.js爬取任意网页资源并输出高质量PDF文件到本地,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编就来和大家一起学习吧2019-06-06Linux CentOS系统下安装node.js与express的方法
这篇文章主要给大家介绍了在Linux CentOS系统下安装node.js与express的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。2017-04-04node puppeteer(headless chrome)实现网站登录
这篇文章主要介绍了node puppeteer(headless chrome)实现网站登录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-05-05
最新评论