ES6模块化规范
在此之前,JavaScript社区已经提出AMD、CMD、CommonJS等模块化规范。
社区的规范标准存在一定的差异性和局限性、并不是浏览器和服务器通用的模块化。
ES6模块化规范中定义:
- 每个js文件都是一个独立的模块
- 导入其他模块成员使用
import
关键字 - 向外共享模块成员使用
export
关键字
node版本高于v14.15.1才支持ES6模块化语法
在package.json的根节点中添加"type":"module"
节点
ES6基本语法
- 默认导出与默认导入
- 按需导出与按需导入
- 直接导入并执行模块中的代码
默认导出
export default
默认导出的成员
注意事项:只允许使用一次默认导出。
默认导入
import 接收名称 from '模块标识符'
注意事项:导入命名时,不能使用数字开头。
按需导出
export
按需导入
import {} from '模块标识符'
基于then-fs
读取文件内容
由于node.js
官方提供的fs
模块仅支持以回调函数的方式读取文件,不支持Promise
的调用方式。因此,需要先安装then-fs
这个第三方包,从而支持我们基于Promise
的方式读取文件的内容。
readFile().then()
进行异步读取文件。
可以通过.then()
函数的链式调用,解决回调地狱的问题。同时保证文件的读取顺序。
通过.catch()
可以捕获链式调用中产生的错误。
Promise.all()
此方法会发起并行的Promise异步操作,等所有的异步操作全部结束后才会执行下一步的.then
操作
Promise.race()
此方法会将最快执行出结果的异步操作取出,执行后续操作。
async/await
function
中使用了await
,则function
必须被async
修饰- 在
async
方法中,第一个await
之前的代码会同步执行,await
之后的代码会异步执行。
EventLoop
- 同步任务:又叫非耗时任务,指的是在主线程上排队执行的那些任务。只有前一个任务执行完毕,才能执行后一个任务。
- 异步任务:又叫耗时任务,异步任务由JavaScript委托给宿主环境进行执行。当异步任务执行完成后,会通知JavaScript主线程执行异步任务的回调函数。
异步任务划分为:宏任务、微任务
- 宏任务:异步Ajax请求、setTimeout、setInterval、文件操作、其他宏任务
- 微任务:Promise.then、.catch、.finally、process.nextTick、其他微任务
- 本文链接:https://archer-lan.github.io/2023/11/20/ES6%E6%A8%A1%E5%9D%97%E5%8C%96%E8%A7%84%E8%8C%83/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。