博客
关于我
module.exports和exports
阅读量:127 次
发布时间:2019-02-26

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

在Node.js中,模块化编程中的变量导出是通过module.exports和exports来实现的。这两个关键字看似相似,但实际上有细微的差别。理解这些差别对于写出高效且可维护的代码至关重要。

模块化编程中的变量导出

模块在Node.js中可以通过module.exports来导出变量、函数或对象供其他模块使用。module.exports实际上是模块的主要导出接口,用于向外暴露模块的功能和数据。

exports的作用

exports并非一个直接的导出接口,而是一个指向module.exports的引用。初始时,exports和module.exports指向同一个对象。当对exports进行赋值时,实际上是修改了module.exports所指向的对象。例如:

exports = {  name: 'Alice'}

这会导致module.exports也变成 { name: 'Alice' }。因此,修改exports会影响module.exports。

module.exports的作用

相比之下,module.exports是一个可控的接口,可以通过它重新导出变量或对象。例如:

module.exports = {  name: 'Alice'}

此时,exports仍然指向原来的对象,而module.exports被重新赋值为新的对象。这种行为允许开发者在不影响其他模块的情况下,重新导出变量或对象。

示例比较

  • 修改module.exports后,exports变化
  • module.exports.name = 123;console.log(exports); // { name: 123 }console.log('------------------');console.log(module); // { id: '.', exports: { name: 123 }, ... }
    1. 重新赋值module.exports,不影响exports
    2. exports.name = 123;module.exports = { name: 234 };console.log(exports); // { name: 123 }console.log('------------------');console.log(module); // { id: '.', exports: { name: 234 }, ... }

      总结

      理解这两者的区别对编写模块化代码至关重要。exports和module.exports在某些情况下会共享同一个对象,而在其他情况下则不会。使用module.exports重新导出变量是更安全和可控的选择,尤其是当需要重新导出对象时。

    转载地址:http://kohy.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>