JavaScriptES6

ES6模块化

2019-10-02  本文已影响0人  Aniugel
模块化:
    js不支持模块化
        ruby   require
        python  import
    
    在ES6之前,社区制定一套模块规范:
        Commonjs        主要服务端  nodeJs    require('http')
        AMD         requireJs, curlJs
        CMD         seaJs

    ES6出来,同意服务端和客户端模块规范:
        import {xx} ddd
        
        Math.pow()
        Math.abs()

        import {pow, abs} from 'Math'       我自己瞎想


    模块化:
        注意: 需要放到服务器环境
        a). 如何定义模块?
            export  东西
            export const a =12;
            export{
                a as aaa,
                b as banana
            }
        b). 如何使用?
            import
            import './modules/1.js'; 
            import {a as a, banana, c} from './modules/2.js'
            import * as modTwo from './modules/2.js';
    使用模块:
        <script type="module"></script>


    import:  特点
        a). import 可以是相对路径,也可以是绝对路径
            import 'https://code.jquery.com/jquery-3.3.1.js';
        b). import模块只会导入一次,无论你引入多少次
        c). import './modules/1.js';  如果这么用,相当于引入文件
        d). 有提升效果,import会自动提升到顶部,首先执行
        e). 导出去模块内容,如果里面有定时器更改,外面也会改动,不想Common规范缓存


    * import()  类似node里面require, 可以动态引入, 默认import语法不能写到if之类里面
        返回值,是个promise对象

        import('./modules/1.js').then(res=>{
            console.log(res.a+res.b);
        });

        优点:
            1. 按需加载
            2. 可以写if中
            3. 路径也可以动态

        Promise.all([])
    =============================================
    ES2017加  async  await:
=============================================

    'use strict'        以后默认就是严格模式
上一篇下一篇

猜你喜欢

热点阅读