gdjlc

培养良好的习惯,每天一点一滴的进步,终将会有收获。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

模块使用不同方式加载的JS文件。
模块化分为导出(export)@与导入(import)两个模块。
特点:
(1)模块自动开启严格模式;
(2)每一个模块内声明的变量都是局部变量;
(3)模块中可以导入和导出各种类型的变量;
(4)每一个模块只加载一次(是单例的),若再去加载同目录下同文件,直接从内存中读取;
(5)对于需要让模块外部代码访问的内容,模块必须导出它们;


基本的导出
使用export关键字将已发布代码部分公开给其他模块。
新建一个example.js文件,内容如下:

// 导出数据
export var color = "red";
export let name = "Nicholas";
export const magicNumber = 7;
// 导出函数
export function sum(num1, num2) {
    return num1 + num1;
}
// 导出类
export class Rectangle {
    constructor(length, width) {
        this.length = length;
        this.width = width;
    }
}
// 此函数为模块私有
function subtract(num1, num2) {
    return num1 - num2;
}
// 定义一个函数……
function multiply(num1, num2) {
    return num1 * num2;
}
// ……稍后将其导出
export { multiply };

单个导入

import { sum } from "./example.js";
let result = sum(1,2);
console.log(result); //3

多个导入

import { sum, multiply, magicNumber } from "./example.js";
console.log(sum(1,magicNumber)); // 8
console.log(multiply(1, 2)); // 2

完全导入(命名空间导入)

import * as example from "./example.js";
console.log(example.sum(1, example.magicNumber)); // 8
console.log(example.multiply(1, 2)); // 2

重命名导出,使用as关键字指定新名称

function sum(num1, num2) {
    return num1 + num2;
}
export { sum as add };

重命名导入

import { add as sum } from "./example.js";

导出默认值,使用default关键字,函数不需要名称,因为代表此模块自身。

export default function(num1, num2) { //方式1
    return num1 + num2;
}

导出默认值也可以使用下面两种方式

function sum(num1, num2) {
    return num1 + num2;
}
export default sum; //方式2
//export { sum as default }; //方法3

导入默认值(不使用花括号)

import sum from "./example.js";
console.log(sum(1, 2)); // 3

既导出默认值,又导出非默认的绑定模块

export let color = "red";
export default function(num1, num2) {
    return num1 + num2;
}

同时导入 color 以及作为默认值的函数:

import sum, { color } from "./example.js";
//import { default as sum, color } from "example"; //使用重命名语法进行默认值的导入,等价于上行

console.log(sum(1, 2)); // 3
console.log(color); // "red"

当前模块已导入内容再导出

//方式1
import { sum } from "./example.js";
export { sum }

//方式2
//export { sum } from "./example.js";

//方式3:将一个值用不同名称导出
//export { sum as add } from "./example.js";

//方式4:将所有值完全导出
//export * from "./example.js";

无绑定的导入,如有些模块只是修改全局作用域的对象,则导入时可以简化为

import "./example.js";

Web浏览器使用模块

<!-- type="module"表示将指定文件中的代码当作模块 -->
<script type="module" src="module.js"></script>

<!-- 内联脚本导入模块 -->
<script type="module">
import { sum } from "./example.js";
let result = sum(1, 2);
</script>

 

posted on 2021-03-26 17:21  gdjlc  阅读(53)  评论(0编辑  收藏  举报