node应用中的require 和 exports、module.exports

node应用中的require 和 exports、module.exports

挂载到一个对象上导出多个

const canadianDollar = 0.91;
function roundTwo(amount) {
 return Math.round(amount * 100) / 100;
}
// 挂载到exports上
exports.canadianToUS = canadian => roundTwo(canadian * canadianDollar);
exports.USToCanadian = us => roundTwo(us / canadianDollar); 
// 引入的是一个对象
const currency = require('./currency');
console.log('50 Canadian dollars equals this amount of US dollars:');
// 调用对象上挂载的函数
console.log(currency.canadianToUS(50));
console.log('30 US dollars equals this amount of Canadian dollars:');
console.log(currency.USToCanadian(30));

导出单个模块

class Currency {
 constructor(canadianDollar) {
 this.canadianDollar = canadianDollar;
 }
 roundTwoDecimals(amount) {
 return Math.round(amount * 100) / 100;
 }
 canadianToUS(canadian) {
 return this.roundTwoDecimals(canadian * this.canadianDollar);
 }
 USToCanadian(us) {
 return this.roundTwoDecimals(us / this.canadianDollar);
 }
}
// 不允许向exports 赋值  这样就改变了exports的引用
// exports = Currency;
module.exports = Currency

exports 只不过是对module.exports 的引用

最终在程序里导出的是 module.exports。exports 只是对 module.exports 的一个全 局引用,最初被定义为一个可以添加属性的空对象。exports.myFunc 只是 module.exports. myFunc 的简写。

所以,如果把 exports 设定为别的,就打破了 module.exports 和 exports 之间的引用 关系。可是因为真正导出的是 module.exports,那样 exports 就不能用了,因为它不再指向 module.exports 了。如果你想保留那个链接,可以像下面这样让 module.exports 再次引用 exports:

module.exports = exports = Currency; 根据需要使用 exports 或 module.exports 可以将功能组织成模块,规避掉程序脚本 一直增长所产生的弊端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值