• 模块化


    CommonJS

    默认情况下,浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到<script>标签就会停下来,等到执行完脚本,再继续向下渲染。

    browserify

    http://browserify.org/


    浏览器端的打包工具,和 webpack 类似

    打包后的bundle.js也是一个封闭的模块。在 index.html 中通过 script 标签引入后,也无法访问里面的变量
    如果需要,可以在模块中用 window.变量的方式将变量挂载到全局。

    导入导出方式

    // exports带s
    require();
    module.exports = value;
    module.exports.a = b;
    exports.a = b;
    

    AMD

    模块的加载是异步的

    定义一个只是对象的模块

    // moduleA.js
    define({
        name: "djh",
        nickname: "flyerya",
    });
    
    // app.js
    require(["moduleA"], function (obj) {
        //obj 就是 {name:'djh',nickname:'flyerya'}
    });
    

    定义没有依赖的模块

    define(function () {
        // 暴露模块
        return xx;
    });
    

    定义有依赖的模块

    define(["moduleA", "moduleB"], function (A, B) {
        // 暴露模块
        return xx;
    });
    

    ES6

    单个暴露

    export const a = "这是a";
    export const b = "这是b";
    export const c = "这是c";
    
    import { a, b, c } form ".js";
    

    export 没有 s,接受必须以{}接收

    统一暴露

    const a = "这是a";
    const b = "这是b";
    const c = "这是c";
    export { a, b, c };
    
    import { a, b, c } form ".js";
    

    export 没有 s,接受必须以{}接收

    默认暴露

    export default value;
    import value from ".js";
    

    只能默认暴露一次,多了会报错,直接接收暴露变量

  • 相关阅读:
    codeforce 896A
    CQH分治与整体二分
    [CQOI2011]动态逆序对
    codeforce Hello 2018 913F sol
    A*算法[k短路([SDOI2010]魔法猪学院)]
    bzoj3524 [POI2014]Couriers
    整体二分
    bzoj5016 [SNOI2017]一个简单的询问
    CF176E Archaeology
    bzoj4551 [TJOI2016&HEOI2016]树
  • 原文地址:https://www.cnblogs.com/flyerya/p/13955821.html
Copyright © 2020-2023  润新知