Vue | 青训营笔记

75 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

ES6模块化&一步编程高级用法

ES6模块化

(1)目的实现模块化统一规范。ES6是浏览器端和服务器端通用的模块化开发规范

    ES6中模块化规范定义
  • 每个js文件都是一个独立的模块
  • 导入其他模块成员使用import关键字
  • 向外共享模块成员使用export关键字
(2)在node.js中体验es6模块化配置

(3)基本语法

image.png 默认导出:export default

export default { n1 }

默认导入:import from

//从01.js模块当中导入export default向外共享的成员
import m1 from './01.js'

按需导出:export

export let s1 = '111'
export function say(){}

按需导入:import{}from'模块标识符'

import{ s1,s2 } from './01.js' 

直接导入并执行模块中的代码:import '模块路径'

import{ s1,s2 } from './01.js' 

image.png

Promise

为了解决回调地狱的问题

(1)回调地狱 多层回调函数的相互嵌套,就形成了回调地狱

缺点:代码耦合性太强,牵一发而动全身,难以维护;大量冗余的代码相互嵌套,可读性变差

(2)Promise

image.png (3)基于回调函数顺序读取文件的内容

image.png then-fs的基本使用

image.png then()方法的特性————返回一个新的Promise实例对象

image.png

通过catch捕获错误————Promise.prototype.catch方法

//例如:
then.readFile('./01.txt','utf8').catch(err=>{ console.log(err.message)}

async/await

目的:简化Promise异步操作

image.png 此时,加上了await,r1,r2,r3不再是一个Promise对象,而是文件里面真正的内容。并且注意,如果使用了await,就要加上async

注意事项:

1.如果在function 中使用了 await,则function 必须被 async 修饰

2.在 async 方法中,第一个 await 之前的代码会同步执行,await 之后的代码会异步执行

EventLoop

异步同步任务

为了防止某个耗时任务导致程序假死的问题,JavaScript 把待执行的任务分为了两类

同步任务 (synchronous) 又叫做非耗时任务,指的是在主线程上排队执行的那些任务只有前一个任务执行完毕,才能执行后一个任务 异步任务 (asynchronous) 又叫做耗时任务,异步任务由JavaScript 委托给宿主环境进行执行当异步任务执行完成后,会通知JavaScript 主线程执行异步任务的回调函数

同步任务和异步任务执行过程

image.png

EventLoop(事件循环)概念

如上图,JavaScript主线程从“任务队列”中读取异步任务的会带哦函数,放到执行栈中依次执行。这个过程不断循环,整个运行机制又称为EventLoop.