一、定义一个模块

    当我们创建一个全新的JS模块时,我们需要给这个模块创建一个接口供别的JS模块调用它,配置接口需要用到 export 命令或者 export default 命令

    export命令:将指定函数暴露出去,同时一个JS页面只能有一个export命令,语法:

    let username = ‘zhangsan’;

    function fn() {

    console.log(‘我是函数’);

    }

    const obj = {

    a:1,

    b:2

    };

    class Person {

    constructor() {

    this.name = ‘wangwu’;

    }

    init() {

    console.log(this.name);

    }

    }

    export {

    username,

    fn,

    obj,

    Person

    } // 大括号内就是暴露出去的内容

    export default:只能暴露一个变量或者函数,和export命令不共存且也只能存在一个,用这个命令函数可以省略函数名,语法:

    export default function() {

    console.log(‘zhangsan’);

    }

    export default暴露的模块,我们在调用时可以随意重命名。

    二、调用模块

    import命令用于调用别的模块已经暴露的接口,如果一个模块暴露的是多个变量名或者函数,想要全部调用就需要知道暴露的变量名和接口。语法:

    important {

    暴露的函数名或变量名

    } from ‘模块存在的路径(相对路径)’

    例子:

    import {

    obj,

    Person,

    username,

    fn,

    } from’./define_module.js’;

    // 路径前的 ./ 表示引入的模块文件是在根目录下的,后续还会有别的配置模块,让我们可以引入网上几百万的别的成品模块重要!

    console.log(username);

    fn();

    console.log(obj);

    newPerson().init();

    三、加载模块

    HTML页面加载ES6模块也需要通过script标签,通过src地址引入,并且还要加上 type=’module’ 属性。

    模块可以放在任意位置加载,因为是异步加载,不会造成浏览器堵塞。

    四、模块化的其他问题

    1.改变我们引入的模块中函数或者变量的名称

    import {

    fn as fn1,

    username as user

    } // as前的是原名,as后的是重命名