• ES6的模块化历史


    ES6模块化开发历史

    js不支持模块化
    一些支持模块化开发的语言
    ruby require
    python import

    ES6之前,社区制定一套模板模块化规范:
    Commonjs 主要用于服务器 nodejs require('http')
    AMD requirejs, curljs
    CMD sealJs


    由于社区大量使用模块化,加上各个模块化的语法很多差异
    所以ES6的模块化开发就诞生了 开始统一规范

    但是ES6还未能完全统一规范

    所以现在我们先学习下如果 模块化开发:


    模块化使用:【重点】
    模块化:
    a.如何定义模块?
    export 关键字

    export let a=1;
    export let b=2;
    可以导出多次

    导出是可以起别名
    export {
    a as aaa,
    b as bbb
    }

    导入时也可以起别名
    import {aaa as a,bbb as b}
    //可以简化的导入所有
    import * as allexport from 'xx,js'
    console.log(allexport); 
    b.如何使用模块?
    import 关键字 
    // JS 中的require 和 import 区别 看此链接https://www.cnblogs.com/liaojie970/p/7376682.html

    import特点:
    1.impot可以是相对路径,也可以是绝对路径
    2.import模块只会导入一次,无论你引入多少次
    3.import './modules/1.js' //相当于引入一个文件
    【重点】 4.import会做提升,不管import写在哪里,会先别放在最上边执行
    例子:
    console.log(a,b);//只要本文件中有导入的a,b就能执行
    import {a,b} from 'xx.js'
    【重点】 5.import导入模块内容是,如果被导入的模块内部的变量修改了,这边会更新,就是这么给力,就是这么劲爆

    【重点】 6.由于第四条原因所有不能够动态引入,即不能写在if()类似的条件块中,会报错
    可以用import() 动态导入, 类似nodejs中的require,

    例子: //可以通过这种方式动态调用 jq
    import('https://code.jquery.com/jquery-3.3.1.min.js').then(res=>{// import()返回的是一个Promise对象
    $(function(){
    $('body').css({
    background:'green'
    })
    })
    });
    优点:
    1.按需求加载
    2.可以写在if条件块中
    3.路径可以动态拼接或计算出来
    【重点】 6.续 import()返回的是一个Promise对象,所以可以用Promise内的一些方法
    例子:
    Promise.all([
    import('./1.js'),
    import('./2.js'),
    ]).then([mod1,mod2]=>{
    console.log(mod1);
    console.log(mod2);
    })

    【扩展】async function main(){
    const mod1 = await import('./1.js');
    const mod2 = await import('./2.js');
    console.log(mod1,mod2);
    //这两种方式基本差不多 //虽说async 和 await还没看呢 但是大概意思差不多

    //用Promise.all()或的返回值并解构
    const [m1,m2] = await Promise.all([
    import('./1.js'),
    import('./2.js')
    ]);
    console.log(m1,m2);
    }

  • 相关阅读:
    不支持ie9一下代码
    jquery ajax done 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
    WaitMe是一款使用CSS3来创建加载动画的jQuery插件
    Masked Input这个jQuery插件让用户能够按照预先设定好的固定格式输入数据(如日期、电话号码等)
    Autosize插件允许textarea元素根据录入的内容自动调整元素的高度
    两个列表选项插件bootstrap-duallistbox.js
    jquery滚动插件slimscroll
    modernizr.custom.js应用
    bootbox基于bootstrap的扩展弹窗
    洛谷P3503 [POI2010]KLO-Blocks 单调栈
  • 原文地址:https://www.cnblogs.com/bigfire/p/9518004.html
Copyright © 2020-2023  润新知