JavaScript高级程序设计第四版学习--第二十六章


title: JavaScript高级程序设计第四版学习–第二十六章
date: 2021-5-31 15:50:31
author: Xilong88
tags: JavaScript

本章内容
理解模块模式
凑合的模块系统
使用前ES6模块加载器
使用ES6模块
可能出现的面试题:
1.ES6模块的基本使用方法
2.判断export和import语句是否合法的程序题

凑合的模块系统 略
ES6之前的模块加载器 略

知识点:

1.理解模块模式
把逻辑分块,各自封装,相互独立,每个块自行决定对外暴露什么,同时自行决定引入执行哪些外部代码。

模块标识符
模块标识符是所有模块系统通用的概念。

模块依赖
模块系统的核心是管理依赖。指定依赖的模块与周围的环境会达成一种契约。本地模块向模块系统声明一组外部模块(依赖),这些外部模块对于当前模块正常运行是必需的。模块系统检视这些依赖,进而保证这
些外部模块能够被加载并在本地模块运行时初始化所有依赖。

模块加载

加载模块的概念派生自依赖契约。当一个外部模块被指定为依赖时,本地模块期望在执行它时,依赖已准备好并已初始化。

加载模块涉及执行其中的代码,但必须是在所有依赖都加载并执行之后。

入口

相互依赖的模块必须指定一个模块作为入口(entry point),这也是代码执行的起点。

JavaScript高级程序设计第四版学习--第二十六章_第1张图片

模块加载是“阻塞的”,这意味着前置操作必须完成才能执行后续操作。每个模块在自己的代码到达浏览器之后完成加载,此时其依赖已经加载并初始化。

2.异步依赖

因为JavaScript可以异步执行,所以如果能按需加载就好了。换句话说,可以让JavaScript通知模块系统在必要时加载新模块,并在模块加载完成后提供回调。

动态依赖

有些模块系统要求开发者在模块开始列出所有依赖,而有些模块系统则允许开发者在程序结构中动态添加依赖。

if (loadCondition) {
     
  require('./moduleA');
}

在这个模块中,是否加载moduleA 是运行时确定的。加载moduleA 时可能是阻塞的,也可能导致执行,且只有模块加载后才会继续。无论怎样,模块内部的代码在moduleA 加载前都不能执行,因为moduleA 的存在是后续模块行为正确的关键。

3.循环依赖
模块之间相互依赖,但是指定了入口后,每个依赖都只被加载一次。

4.使用ES6模块

模块标签及定义

ECMAScript 6模块是作为一整块JavaScript代码而存在的。带有type=“module” 属性的

你可能感兴趣的:(JavaScript学习,javascript,前端)