1、module.exports和exports使用方法一致
exports是module.exports的别名,他们就是两个不同名的变量,但地址都是引用的同一个模块对象,同一个文件的多个方法,既可以使用exports点方法的形式导出也能使用module.exports点方法的形式导出。但要是module.exports直接等于一个对象时,最终的导出按这个对象为准。
2、Node.js 遵循了 CommonJS 模块化规范,CommonJS 规定了模块的特性和各模块之间如何相互依赖。
CommonJS 规定:
① 每个模块内部,module 变量代表当前模块。
② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。
③ 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块。
3、this指向问题
this指向函数拥有者(通常把拥有者叫做执行上下文),且只能在函数内部使用
在全局运行的上下文中,this指向的是全局对象;在函数内部,this取决于的是函数被调用的方式(三种方式):
- 作为对象的方法
- 直接来调用函数的调用,这里的this总是默认指向全局对象,在浏览器中就是window,在Nodejs中就是global
- 构造函数,在构造函数里面使用this,this就指向新构建好的对象
针对第二种情况,绑定到当前调用函数:call/apply/bind
fun.call(this, ...args)
fun.apply(this, [..args])
fun.bind(this)
4、Retry重试策略
实现Retry的核心是递归回调
。在catch里面进行相同的回调,同时需要注意的是各个请求之间最好有个时间间隔duration。
5、fs模块
fs.write(fd, buffer[, offset[, length[, position]]], callback)
fd: 打开的文件对象
buffer: 写入文件的数据流
offset:准备将什么位置的数据流写入文件内
length: 写入数据流的长度
position:从目标文件的什么位置开始写入
网友评论