博客
关于我
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/

    你可能感兴趣的文章
    Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime(93)解决
    查看>>
    Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
    查看>>
    Node 裁切图片的方法
    查看>>
    node+express+mysql 实现登陆注册
    查看>>
    Node+Express连接mysql实现增删改查
    查看>>
    node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
    查看>>
    Node-RED中Button按钮组件和TextInput文字输入组件的使用
    查看>>
    vue3+Ts 项目打包时报错 ‘reactive‘is declared but its value is never read.及解决方法
    查看>>
    Node-RED中Switch开关和Dropdown选择组件的使用
    查看>>
    Node-RED中使用exec节点实现调用外部exe程序
    查看>>
    Node-RED中使用function函式节点实现数值计算(相加计算)
    查看>>
    Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
    查看>>
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用json节点解析JSON数据
    查看>>
    Node-RED中使用node-random节点来实现随机数在折线图中显示
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>
    Node-RED中使用node-red-contrib-image-output节点实现图片预览
    查看>>
    Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
    查看>>
    Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
    查看>>
    Node-RED中使用range范围节点实现从一个范围对应至另一个范围
    查看>>