1、什么是NodeJS
1)Node.js是一个基本Chrome V8引擎的JavaScript运行环境
2)Node.js使用了一个事件驱动、非阻塞式I/o的模型,使其轻量又高效
3)Node.js的包管理器npm(node package mange)是全球最大的开源库生态系统
2、全局变量
__dirname:当前文件的路径
__filename:当前文件的绝对路径
console:控制台对象,可以输出信息
process:当前执行进程的对象,可以获取进程的相关信息,环境变量等
setTimeout/clearTimeout:延时执行, 时间到了执行, 只执行一次
setInterval/clearInterval:定时器,, 没隔一段时间执行一次
3、fs模块
fs.stat/fs.statSync:访问文件的元数据,比如文件大小,文件的修改时间
fs.readFile/fs.readFileSync:异步/同步读取文件
fs.writeFile/fs.writeFileSync:异步/同步写入文件
fs.readdir/fs.readdirSync:读取文件夹内容
fs.unlink/fs.unlinkSync:删除文件
fs.rmdir/fs.rmdirSync:只能删除空文件夹
4、说一下事件循环eventloop
1)所有同步任务都在主线程上执行,形成一个执行栈
2)当主线程中的执行栈为空时,检查事件队列是否为空,如果为空,则继续检查;如不为空,则执行3
3)取出任务队列的首部,加入执行栈
4)执行任务
5)检查执行栈,如果执行栈为空,则跳回第 2 步;如不为空,则继续检查
5、简述同步和异步的区别,如何避免回调地狱
同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续行为
异步方法调用一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中,整个过程,不会阻碍调用者的工作
避免回调地狱:
1)Promise
2)async/await
3)generator
4)事件发布/监听模式