首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

exports和module.exports介绍

在nodejs中,提供了exports和module.exports导出模块, require对象从外部获取一个模块的,即所获取模块的 exports或者module.exports导出的模块。...这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。...如果你希望你的模块就想为一个特别的对象类型,请使用module.exports;如果希望模块成为一个传统的模块实例,请使用exports.xx方法;module.exports才是真正的接口,exports...原因在于我导出的如果直接是一个对象的话,那么就会出现一个数据缓存的问题,我们先来看一下修改后的代码 let cs ={ name:null, setName:function...换句话说module.exports导出模块时相当于创建了一个全局的对象,每次调用访问的都是这一个对象,数据是全局公用的,所以在以后的使用过程中需要注意。

1.6K20

exports 和 module.exports 的区别

我们只需知道三点即可知道 exports 和 module.exports 的区别了: exports 是指向的 module.exports 的引用 module.exports 初始值为一个空对象...这个空对象添加了两个属性而已,上面的代码相当于: var name = 'nswbmw'; module.exports.name = name; module.exports.sayName...,也就是说此时 exports 和 module.exports 毫无联系,也就是说 module.exports 指向的那块内存并没有做任何改变,仍然为一个空对象 {} ,也就是说 area.js 导出了一个空对象...所以,一句话做个总结:当我们想让模块导出的是一个对象时, exports 和 module.exports 均可使用(但 exports 也不能重新覆盖为一个新的对象),而当我们想导出非对象接口时,就必须也只能覆盖...的关系断裂,module.exports 指向了新的内存块,而 exports 还是指向原来的内存块,为了让 module.exportsexports 还是指向同一块内存或者说指向同一个 “对象

69310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    exports 和 module.exports 的区别

    但很多新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 exports 和 module.exports 的关系,我们先来巩固下 js 的基础。...b); 运行 test.js 结果为: { name: 1 } { name: 1 } { name: 2 } { name: 2 } { name: 2 } { name: 3 } 解释:a 是一个对象...明白了上述例子后,我们只需知道三点就知道 exports 和 module.exports 的区别了: module.exports 初始值为一个空对象 {} exports 是指向的 module.exports...我们经常看到这样的写法: exports = module.exports = somethings 上面的代码等价于: module.exports = somethings exports = module.exports...原理很简单,即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exportsexports

    1.1K40

    node.js中exports与module.exports的区别

    node.js中,每个js文件都可以当成一个模块,每个模块中,都隐含了一个名为module的对象,module对象中有一个exports属性,这个属性的功能是将模块中的变量暴露给其他模块调用。...因此node.js提供了一个变量exports作为module.exports的引用 16.js也可以写成: let name = '叶文洁' // exports 是 module.exports 的引用...默认情况下,exports是一个对象,假设我们的需求是要得到一个字符串。要怎么弄? 也许你觉得这个很简单,直接给exports重新赋值就可以了。...17.js 章北海 既然exports === module.exports,那么为何修改exports不起作用?...原因是,exports是module.exports的引用,当exports被重新赋值时,并不会影响到module.exports的值,而模块返回的是module.exports,因而只有给module.exports

    1K20

    require时,exports和module.exports的区别你真的懂吗?

    exports 与 module.exports 区别 js文件启动时 在一个 node 执行一个文件时,会给这个文件内生成一个 exports 和 module 对象, 而module又有一个 exports...原理很简单,即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exportsexports...如果你的包有两个文件,假设是“a.js” 和“b.js”,然后“b.js” 要使用“a.js” 的功能,“a.js” 必须要通过给 exports 对象增加属性来暴露这些功能: // a.js exports.verifyPassword...= function(user, password, done) { ... } 完成这步后,所有需要“a.js” 的都会获得一个带有“verifyPassword” 函数属性的对象: // b.js.... } 注意到我们是把“exports” 当做 module 对象的一个属性。

    1.7K20

    Node 导入模块:require()和导出模块:module.exportsexports的用法及注意点

    导出模块 注意:require()导入模块时,得到的永远是module.exports指向的对象 console.log('这是我的自定义模块:Riven-custom'); /* 时刻谨记,require...()模块时,得到的永远是module.exports指向的对象*/ // module.exports===exports(只是在默认情况下全等,指向改变后不是全等) /* 指向误区:谨记以module.exports...指向的对象为准 */ // 1、2指向的是不同的对象,3、4指向的是同一个对象 // 1、指向:{ username: '李四' } exports.username = '张三' module.exports...= exports module.exports.sex = '男' // module.exports===exports?...: true console.log('module.exports===exports?:', module.exports === exports)

    1.2K30

    java9 opens与exports的区别

    序 本文主要研究下java9 opens与exports的区别 open及exports open open module 主要用于解决deep reflection问题,open的作用是表示该模块下的所有的包在...runtime都允许deep reflection(包括public及private类型) 但是编译时期,仅仅允许该module中声明过exports的包可以访问,如果没有exports则该包的类在编译时期不可读...opens package 用于声明该模块的指定包在runtime允许使用反射访问 exports 表示允许在编译时和运行时访问指定包的public成员 open及exports对反射的影响 反射方法...这种情况,如果是直接访问该类来使用反射,由于没有exports该package,则直接编译报错 通过包名反射 这种情况编译可以通过,运行正常 直接open整个module,也有exports open...module packt.lib { exports com.packt.lib; exports com.packt.lib.sub1; } 两种访问方式的反射均正常编译及运行。

    44720
    领券