zoukankan      html  css  js  c++  java
  • 前端模块化CommonJs、AMD(require.js)、CMD(sea.js)、ES6 Module的浅析

    • CommonJS
    • AMD(require.js)
    • CMD(sea.js)
    • ES6 Module

    CommonJS

    通过require加载模块并执行,返回一个引用文件的export对象.

    var test = require('./test');

    该方式属于同步加载,适用于服务器端。浏览器更适合异步加载方式。

    AMD(require.js)

    推崇的是依赖前置,提前执行。(一些该页面不需要的模块也加载了进来)

    // 配置路径
    require.config({
        baseUrl: "js/lib",
        paths: {
            "jquery": "jquery.min",
            "underscore": "underscore.min"
        }
    });
    
    // 模块加载
    require(["jquery", "underscore"], function($, _) {
        $(body).css("background", "#6fc");
        var result = _.map([1, 2, 3], function() {
            return num * 3;
        });
    })
    
    // 自定义模块,第一个参数为可选,表示模块依赖的模块
    define(["underscore"], function(_) {
        var minNumIndex = function(arr) {
            return arr.indexOf(_.min(arr))
        };
        return {
            minNumIndex: minNumIndex 
        };
    })
    
    

    CMD(sea.js)

    推崇依赖就近,延迟执行。(也就是按需加载)

    // 定义模块 math.js
    define(function(require, exports, module) {
        var $ = require("jquery.js");
        var add = function(a, b) {
            return a + b;
        };
        export.add = add;
    });
    
    // 加载模块
    seajs.use(["math.js"], function(math) {
        var sum = math.add(1, 2)
    });
    

    ES6 Module

    export => 导出模块
    import => 引入模块

    // math.js
    const NUM = 1;
    const add = (a, b) => a + b;
    export {
        add
    }
    
    // 引入模块
    import add from "./math";
    

    CommonJS && ES6 Module

    • CommonJS: 值拷贝,
    • ES6 Module: 值引用
    • CommonJS: 运行时加载。即加载整个模块后,生成一个对象,然后从这个对象上读取相应值或方法。
    • ES6 Module: 编译时加载。即import时指定加载某个输出值,而非整个模块。(按需加载)
  • 相关阅读:
    Deep Learning(深度学习)学习笔记整理系列五
    Deep Learning(深度学习)学习笔记整理系列四
    Deep Learning(深度学习)学习笔记整理系列三
    Deep Learning(深度学习)学习笔记整理系列二
    Deep Learning(深度学习)学习笔记整理系列 一
    java对象转为json字符串
    eclipse常用功能及快捷键
    fiddler详解
    http状态码
    eclipse中文乱码
  • 原文地址:https://www.cnblogs.com/miku561/p/10507991.html
Copyright © 2011-2022 走看看