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时指定加载某个输出值,而非整个模块。(按需加载)
  • 相关阅读:
    Spring常用注解汇总
    Maven依赖Scope标签用法
    CRC编码
    Spring Boot中使用Spring Security进行安全控制
    Spring Cloud构建微服务架构(一)服务注册与发现
    http://www.cnblogs.com/kkdn/
    在Java中,你真的会日期转换吗
    利用SpringCloud搭建一个最简单的微服务框架
    Spring Boot微服务框架的搭建
    Spring Cloud全家桶主要组件及简要介绍
  • 原文地址:https://www.cnblogs.com/miku561/p/10507991.html
Copyright © 2011-2022 走看看