ES6学习笔记四(模块)

第十三章 用模块封装代码

模块是自动运行在严格模式下并且没有办法退出运行的JavaScript代码,在模块顶部创建的变量不会自动被添加到全局共享作用域,这个变量尽在模块的顶级作用域中存在,而且模块必须到处一些外部代码可以访问的元素,如变量或函数。

  • 在模块的顶部,thisundefined

导出的基本语法

// 导出数据
export var color = "red";
export let name = "NowhereToRun";
export const MAGICNUMBER = 7;

// 导出函数
export function sum(num1, num2) {
    return num1 + num2
}

// 导出类
export class Rectangle {
    constructor(length, width) {
        this.length = length;
        this.width = width;
    }
}

// 这个函数是模块私有的
function subtract(num1, num2) {
    return num1 - num2;
}

// 定义一个函数 之后将它导出 重命名,使用as指定函数在模块外的名称
function multiply(num1, num2) {
    return num1 * num2
};

export { multiply as mul };

导入的基本语法

import {identifier1, identifier2} from "./example.js"
浏览器使用的路径与传给

Web浏览器中的模块加载顺序

模块与脚本不同,他是独一无二的,可以通过import关键字来指明其所依赖的其他文件,并且这些文件必须被加载进该模块才能正确执行。为了支持该功能,

这三个script元素按照它们被指定的顺序执行,所以模块module1保证会在内联模块之前执行。
每个模块都可以从一个或多个其他的模块导入,这会使问题复杂化。因此,首先解析模块以识别所有导入语句;然后,每个导入语句都触发一次获取过程(网络或者缓存),并且在所有导入资源都被加载和执行后才会执行当前模块。

你可能感兴趣的:(ES6学习笔记四(模块))