【铺垫知识】黑马程序员 Vue 学习笔记

本文深入探讨了ES6的模块化机制,包括默认导出和按需导入等语法,并通过实例讲解了Promise解决回调地狱问题的方式,如then-fs读取文件内容。同时,介绍了async/await的使用方法及其注意事项,以及宏任务和微任务的执行顺序。最后,通过一个基于MySQL数据库和Express的API接口案例,展示了如何在实际项目中应用这些技术。

ES6模块化

1. 回顾 node.js 中如何实现模块化

node.js 遵循了 CommonJS 的模块化规范。其中:

  • 导入其他模块使用 require () 方法
  • 模块对外共享成员使用 module.exports 对象

模块化的好处:
大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用,利人利己


2. 前端模块化规范的分类

在 ES6 模块化规范诞生前,有其他如 AMD 、 CMD 、 CommonJS 模块化规范。但这些都不是官方的,还是存在一定的差异性和局限性

例如:
AMD 和 CMD 适用于浏览器端的 JavaScript 模块化
CommonJS 适用于服务器端的 JavaScript 模块化

为了降低学习难度和开发成本,统一的 ES6 模块化 就诞生了!


3. 什么是 ES6 模块化规范

ES6 模块化规范中定义:

  • 每个 JS 文件都是一个独立的模块
  • 要导入模块 使用 import 关键字
  • 向外共享模块 使用 export 关键字

4. ES6模块化的基本语法

主要包含以下三种用法

  • 默认导出和默认导入
  • 按需导出和按需导入
  • 直接导入并执行模块中的代码

4.1 默认导出

语法:export default 默认导出的成员

let n1 = 10
let n2 = 20
function show () {
   
   }

// 向外共享对象
export default {
   
   
    n1,
    show
}

4.2 默认导入

语法:import 接收名称 from ’ 模块标识符 ’

import m1 from './1. 默认导出'

console.log(m1);

只能拿到 n1 和 show


4.3 按需导出 和 按需导入

按需导出 语法:emport 按需导出的成员

export let s1 = 'aaa'
export let s2 = 'ccc'
export function say() {
   
    }

按需导入 语法:import {s1} from ’ 模块标识符 ’

import {
   
    s1, s2, say } from "./3.按需导出";

Promise

1. 回调地狱

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

setTimeout(() => {
   
      // 第一层
    console.log('延时一秒后输出');
    setTimeout(() => {
   
     //第二层
        console.log('再延时两秒输出');
        setTimeout(() => {
   
     //第三层
            console.log('再延时三秒');
        }, 3000)
    }, 2000)
}, 1000);

缺点:代码耦合性强,牵一发而动全身,难以维护

为解决这个问题,提出了 Promise 的概念


1.1 Promise的基本概念

① Promise 是一个构造函数

  • 我们可以创建 Promise 的实例 const p = new Promise()
  • new 出来的 Promise 实例对象,代表一个异步操作

② Promise.prototype 上包含一个 .then() 方法

③ .then() 方法用来预先制定成功和失败的回调函数

  • p.then( 成功的回调函数,失败的回调函数 )
  • p.then( result => { } , error => { } )
  • 成功的回调函数必选,失败的回调函数可选

1.2 then-fs 异步读取文件内容

调用 then-f 提供的 readFile() 方法,可以异步的读取文件的内容,它的返回值是 Promise 的实例对象。

因此可以调用 .then() 方法 为每个 Promise 异步操作制定成功失败之后的回调函数。

import thenFs from 'then-fs'

// thenFs.readFile('./files/1.txt', 'utf8') 会拿到它的 Promise 对象
thenFs.readFile('./files/1.txt', 'utf8').then((r1) => {
   
    console.log(r1) })
thenFs.readFile('./files/2.txt'
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值