node之旅-day1

day1 node in action chapter3

exports 和 module.exports的区别

exports

var module = require('module');

当require一个module后,require函数会返回这个module中exports对象中的内容,然后通过module.xxx便可以使用模块内暴露的内容。

module.exports

Node中不能用任何其他对象、函数或者变量给exports对象赋值,例如在learn_module_exports.js里,直接将Base赋给exports就是错误的。

exports = Base;

这个时候就需要用到module.exports,用于对外提供单个变量、函数或者对象。

注意

如果一个module中同时有exports和module.exports,那么将会返回module.exports,而exports将会失效。
那么为什么导出的对象会是module.exports呢?

原因

在module中,exports对象只是module.exports的一个全局引用,是一个控对象,可以往里面添加属性

var exports = {};

所以exports.add()其实是module.exports.add(),如果这个时候将exports指向其他,就断开了exports和module.exports之间的引用关系,exports就会失效,如果想要再次连接,就写成

module.exports = exports = Base

继承

继承有两种简洁的写法:

var util = require('util');
util.inherits(child,parent);
child.prototype = new parent();

匿名函数解决异步时序混乱问题

var color = 'blue';
setTimeout(() => {
    console.log('the color is :' + color);
}, 200);
var color = 'green';

在上面这个代码里,最后输出的颜色是green,因为输出是异步执行的,延迟了200ms,这个时候color已经改变,这样就会导致时序混乱,要解决可以用闭包匿名函数,color变成了函数内部的本地变量,不受外部影响。

var color = 'blue';
(function (color) {
    setTimeout(() => {
        console.log('the color is :' + color);
    }, 200)
})(color);
var color = 'green';

项目地址:https://github.com/KinsomyJS/Node-Journey

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值