目录
1.Node.js的模块系统
2.Node.js 异步编程
3.Node.js常用核心模块
Node.js的模块系统
1.module和exports
export.A === module.exports.A
错误:export = "Hello world!"
上述错误将不会导出Hello world
原因:不能对export赋值,会导致export的指向被改变
正确:module.export = 'Hello world!'
export.A=''
2.require
require接受一个js模块,没有该模块会抛出异常
加载规则:
- 以’ / ‘开头:绝对路径
- 以’ ./ ‘开头:相对路径
- 若不以1.2.两方式开头则为核心模块或当前工作目录中node_modules模块
- 如果没找到,js会自动添加.js .json .node去寻找
- 如果传入目录,会自动寻找package.json 中的 main字段加载入口文件,若还是没有则会尝试加载index.js或index.node
3.自定义模块例子
Node.js 异步编程
1.回调函数
1 | function test(callback){ |
以上是回调函数但是不是异步的
读取桌面data.txt文件
1 | // 回调函数 |
链式调用
bad
1 | //链式调用bad |
这种写法可读性和可维护性差
good
1 | //链式调用good |
链式调用中只要有一个出错就会调用catch函数
Promise其他操作
1 | console.log('Promise.resolve(true):', Promise.resolve(true)) //Promise { true } |
.reject(reason)
.all(promises)
.race(promises)
async/await
1 | //async.js |
看似是同步编程,实则是异步
1 | async function dosome(a, b) { |
asfnc函数一定返回的是Promise,需要将结果交给then
await
只能在async函数中使用
Node.js常用核心模块
1.events
基本使用
1 | const EventEmitter = require('events'); |
2.fs
1 | //文件操作 |
注意
读取文件夹内容返回一个文件名字和后缀组成的数组
3.stream接口
1.通过流的方式读取文件
优点
内存占用小
1 | const fs = require('fs'); |
2.写入流
1 | const fs = require('fs'); |
3.管道流
1 | //管道流 |
4.数据转换流
1 | //数据装换流 |