ES6模块化

作者: Aniugel | 来源:发表于2019-10-02 17:03 被阅读0次
    模块化:
        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'        以后默认就是严格模式
    

    相关文章

      网友评论

        本文标题:ES6模块化

        本文链接:https://www.haomeiwen.com/subject/tzolpctx.html