博客
关于我
node.js 导出模块的两种方式 exports module.exports
阅读量:254 次
发布时间:2019-03-01

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

导出模块的两种方式

参考

  • exports
  • module.exports
// 定义方法,常量const myPI = 3.14const add = (a,b) => a + b;// 导出,两种方法任意都可以// 方法一:exports.myPI = myPIexports.add = add// 方法二:module.exports.myPI = myPImodule.exports.add = add// 方法二(变形)module.exports  = {       myPI,    add}

在阅读其它人的代码时,可能会遇到这两种不同的写法。所以我们还是有必要了解一下的。

cookie模块,body-parser模块,arry-flatten模块中的导出均采用不同的方式。

两个对象的关系

  • 初始exportsmodule.exports是指向同一块内存区域,其内容都是一个空对象。(exports是module.exports的别名)即:
exports === module.exports // 输出是 true

所以下面两种写法的效果是一样的:

//1 mymodule.js exports.f = function(){    } exports.pi = 3.1415926 //2 mymodule.js module.exports.f = function(){    } module.exports.pi = 3.1415926
  • 在定义模块时:
    如果直接给exports对象赋值(例如:exports={a:1,b:2}),此时,exports就不会再指向module.exports,而转而指向这个新对象,此时,exportsmodule.exports不是同一个对象。

在引入某模块时:以该模块代码中module.exports指向的内容为准。

图示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论

在导出模块过程中,建议只用一种方式(建议直接使用module.exports)

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

你可能感兴趣的文章
MySQL查询优化:LIMIT 1避免全表扫描
查看>>
MySQL查询优化之索引
查看>>
mysql查询储存过程,函数,触发过程
查看>>
mysql查询总成绩的前3名学生信息
查看>>
mysql查询慢排查
查看>>
MySQL查询报错ERROR:No query specified
查看>>
mysql查询数据库储存数据的占用容量大小
查看>>
MySQL查询数据库所有表名及其注释
查看>>
MySQL查询数据表中数据记录(包括多表查询)
查看>>
MySQL查询结果排序
查看>>
MYSQL查询语句优化
查看>>
mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层执行原理吗?
查看>>
MySQL查询语句:揭秘专家秘籍,让你秒变数据库达人!
查看>>
mysql查询超时对PHP执行的影响
查看>>
mysql查询输出到excel文件_如何保存mysql查询输出到excel或.txt文件?
查看>>
mysql查询过程
查看>>
MySQL模拟Oracle序列sequence
查看>>
Mysql模糊查询like效率,以及更高效的写法
查看>>
MySQL死锁套路:一次诡异的批量插入死锁问题分析
查看>>
Mysql死锁问题Deadlock found when trying to get lock;try restarting transaction
查看>>