zoukankan      html  css  js  c++  java
  • 深入理解ES6读书笔记10:模块

    模块使用不同方式加载的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>
  • 相关阅读:
    android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
    qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
    C小加 之 随机数
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    WIZnet推出串口转以太网模块WIZ550S2E
    java里,当long与上了int
    几个常见字符串处理函数的实现原理
    Android平台调用Web Service:演示样例
    怎样学好游戏编程
    void及void指针含义的深刻解析
  • 原文地址:https://www.cnblogs.com/gdjlc/p/14555678.html
Copyright © 2011-2022 走看看