nodejs中使用exports与module.exports进行模块导出 |
您所在的位置:网站首页 › js文件导出函数 › nodejs中使用exports与module.exports进行模块导出 |
关于nodejs
nodejs是JavaScript的运行时环境,它既不是语言也不是框架。nodejs是后台开发的一个工具。 前端开发的JavaScript: ES语法DOMBOMnodejs中JavaScript: ES语法没有BOM和DOM nodejs中的模块导出 module.exports示例1:通常我们使用module.exports进行单个成员的导出,例如: //在文件a.js中 var foo = 'helloWorld' module.exports = foo在另一个文件中通过require加载该模块,可以得到导出的成员 //同目录下的b.js中加载 a模块 var a = require('./a.js') //输出 console.log(a) //输出helloWorld当然多个成员导出也能使用module.exports,这里我提供了两种方式 示例2:用module.exports挂载成员进行导出,例如: var foo='helloWorld' var msg='123' //将两个成员作为module.exports的成员进行挂载 module.exports.foo=foo module.exports.msg=msg在b.js中加载a.js模块 var a=require('./a.js') console.log(a) //得到module.exports对象,有两个成员msg和foo 示例3:module.exports直接导出对象 var foo='helloWorld' var msg='123' var msgs='111' module.exports={ foo:foo, msg:msg, msgs:msgs, }在b.js中可以的含有这三个属性的对象。 解析在模块加载的方法require中最终都会返回一个对象,它就是module.exports,所以加载的模块导出的成员都在module.exports中。 在示例1中,只导出一个成员,这其中module.exports实际上改变了指向,其指向大概如下图: 而示例2采用挂载方式导出多个成员,示意如下: 示例3使用module.exports直接对象导出多个成员,这其实与示例类似 使用exportsexports实际上是module.export的引用,这也是为简化开发人的代码而提出的。 示例4:使用exports多个成员导出 var foo='helloWorld' var msg='123' var msgs='111' //导出多个成员,实际与示例2相似 exports.foo=foo exports.msg=msg exports.msgs=msgs在b.js中加载可以得到包含这些导出成员的对象 示例5:那是否可以用示例3或者示例1的方式导出成员呢?因为前文解释了示例1和示例3的原理是一样的,这里我用示例5验证我们疑问 var foo='helloWorld' var msg='123' var msgs='111' //使用exports直接导出对象 exports={ foo:foo, msg:msg, msgs:msgs }这是我们在b.js中加载a.js模块,只能得到一个空对象,说明成员导出失败! 解析前文我们提到了exports只是module.exports的一个引用,即它们指向同一块内存,当我们将exports指向一个新的内存地址时,它已经和module.exports没有任何关系了所以无法正常导出成员。 图示: 当exports改变指向时, 总结本文解析了module.exports与exports的不同,实际上exports是module.exports的一个引用,当exports改变指向时,它就断绝了module.exports的关联,不会影响导出成员,所以之后无论怎么在exports上挂载成员也无法导出成员!因为在加载模块中使用的require方法会返回一个module.exports对象。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |