js module.exportss是什么知识点

nodejs中exports与module.exports的区别详细介绍
nodejs中exports与module.exports的区别详细介绍
发布时间: 13:46:34
编辑:www.fx114.net
本篇文章主要介绍了"nodejs中exports与module.exports的区别详细介绍",主要涉及到nodejs中exports与module.exports的区别详细介绍方面的内容,对于nodejs中exports与module.exports的区别详细介绍感兴趣的同学可以参考一下。
看了好多篇关于exports与module.exports的区别的介绍,好多感觉讲的都不够准确,最后才明白两者用法的区别为:如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的“实例化对象”就用exports。
你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块。例如:(假设这是rocker.js文件)&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
在另一个文件中你这样引用&
var rocker = require('./rocker.js');&
rocker.name(); // 'My name is Lemmy Kilmister'&
那到底Module.exports是什么呢?它是否合法呢?&
其实,Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。
所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。
修改rocker.js如下:&
module.exports = 'ROCK IT!';&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
再次引用执行rocker.js&
var rocker = require('./rocker.js');&
rocker.name(); // TypeError: Object ROCK IT! has no method 'name'&
发现报错:对象“ROCK IT!”没有name方法&
rocker模块忽略了exports收集的name方法,返回了一个字符串“ROCK IT!”。由此可知,你的模块并不一定非得返回“实例化对象”。你的模块可以是任何合法的javascript对象--boolean, number, date, JSON, string, function, array等等。
你的模块可以是任何你设置给它的东西。如果你没有显式的给Module.exports设置任何属性和方法,那么你的模块就是exports设置给Module.exports的属性。
下面例子中,你的模块是一个类:&
module.exports = function(name, age) {&
this.name =&
this.age =&
this.about = function() {&
console.log(this.name +' is '+ this.age +' years old');&
可以这样应用它:&
var Rocker = require('./rocker.js');&
var r = new Rocker('Ozzy', 62);&
r.about(); // Ozzy is 62 years old&
下面例子中,你的模块是一个数组:&
module.exports = ['Lemmy Kilmister', 'Ozzy Osbourne', 'Ronnie James Dio', 'Steven Tyler', 'Mick Jagger'];&
可以这样应用它:&
var rocker = require('./rocker.js');&
console.log('Rockin in heaven: ' + rocker[2]); //Rockin in heaven: Ronnie James Dio&
现在你明白了,如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的“实例化对象”就用exports。
给Module.exports添加属性类似于给exports添加属性。例如:&
module.exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
同样,exports是这样的&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
请注意,这两种结果并不想同。前面已经提到module.exports是真正的接口,exports只不过是它的辅助工具。推荐使用exports导出,除非你打算从原来的“实例化对象”改变成一个类型。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:nodejs中exports与module.exports的区别详细介绍
看了好多篇关于exports与module.exports的区别的介绍,好多感觉讲的都不够准确,最后才明白两者用法的区别为:如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的&实例化对象&就用exports。
你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块。例如:(假设这是rocker.js文件)&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
在另一个文件中你这样引用&
var rocker = require('./rocker.js');&
rocker.name(); // 'My name is Lemmy Kilmister'&
那到底Module.exports是什么呢?它是否合法呢?&
其实,Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。
所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。
修改rocker.js如下:&
module.exports = 'ROCK IT!';&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
再次引用执行rocker.js&
var rocker = require('./rocker.js');&
rocker.name(); // TypeError: Object ROCK IT! has no method 'name'&
发现报错:对象&ROCK IT!&没有name方法&
rocker模块忽略了exports收集的name方法,返回了一个字符串&ROCK IT!&。由此可知,你的模块并不一定非得返回&实例化对象&。你的模块可以是任何合法的javascript对象--boolean, number, date, JSON, string, function, array等等。
你的模块可以是任何你设置给它的东西。如果你没有显式的给Module.exports设置任何属性和方法,那么你的模块就是exports设置给Module.exports的属性。
下面例子中,你的模块是一个类:&
module.exports = function(name, age) {&
this.name =&
this.age =&
this.about = function() {&
console.log(this.name +' is '+ this.age +' years old');&
可以这样应用它:&
var Rocker = require('./rocker.js');&
var r = new Rocker('Ozzy', 62);&
r.about(); // Ozzy is 62 years old&
下面例子中,你的模块是一个数组:&
module.exports = ['Lemmy Kilmister', 'Ozzy Osbourne', 'Ronnie James Dio', 'Steven Tyler', 'Mick Jagger'];&
可以这样应用它:&
var rocker = require('./rocker.js');&
console.log('Rockin in heaven: ' + rocker[2]); //Rockin in heaven: Ronnie James Dio&
现在你明白了,如果你想你的模块是一个特定的类型就用Module.exports。如果你想的模块是一个典型的&实例化对象&就用exports。
给Module.exports添加属性类似于给exports添加属性。例如:&
module.exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
同样,exports是这样的&
exports.name = function() {&
console.log('My name is Lemmy Kilmister');&
请注意,这两种结果并不想同。前面已经提到module.exports是真正的接口,exports只不过是它的辅助工具。推荐使用exports导出,除非你打算从原来的&实例化对象&改变成一个类型。exports和module.exports的区别? - 简书
exports和module.exports的区别?
用一句话来说明就是,require方能看到的只有module.exports这个对象,它是看不到exports对象的,而我们在编写模块时用到的exports对象实际上只是对module.exports的引用。export default 可以用import 来引用例如:import Config from './containers/Config';在使用webpack 的require.ensure 时定要用module.exports而不能用export default什么情况下使用module.exports,什么时候用exports.attr?
虽然老师说了传统的模块和那什么什么的(=_=),感觉概念还是不太清楚,有谁能详细解释一下,module.exports和exports.attr在实际业务中我该如何选择?
卧槽,这么一讲就完全明白了
非常感谢!
写下你的评论...
写下你的评论...
Copyright (C)
All Rights Reserved | 京ICP备 号-2微信小程序中module.exports和exports的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微信小程序中module.exports和exports的区别
上传于|0|0|文档简介
&&微信小程序中module.exports和exports的区别
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 react module.exports 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信