美文网首页
AMD、CommonJS、UMD

AMD、CommonJS、UMD

作者: 苦苦修行 | 来源:发表于2018-07-29 14:29 被阅读0次

    要点总结:

    • AMD:异步模块写法(define中可以用exportsexports其实就是导出的模块对象)
    • CommonJS:同步模块写法(使用exportsmodule.exports来导出模块)
    • UMD:通用模块写法,即 AMD + CommonJS

    UMD写法示例:

    (function(root, factory) {
        if (typeof define === 'function' && define.amd) {
            // AMD
            define(['jquery'], factory);
        } else if (typeof module === "object" && typeof module.exports === "object") {
            // Node, CommonJS之类的
            module.exports = factory(require('jquery'));
        } else {
            /**
             * 浏览器全局变量(root 即 window)
             * returnExports即绑定到window对象上的变量名
             */
            root.returnExports = factory(root.jQuery);
        }
    }(this, function($) {
        // 方法
        function myFunc() {
            // 与 $ 有关的一些逻辑代码
        };
    
        // 暴露公共方法
        return myFunc;
    }));
    

    注意事项:

    AMD定义模块时,define方法的第三个参数,即回调方法中也可以使用 requireexportsexports就是你导出的模块对象,所以,你可以将属性或方法挂载到exports

    define("alpha", ["require", "exports"], function (require, exports) {
        var app_root_1 = require("./components/app/app-root");
        exports.IonicApp = app_root_1.IonicApp;
    });
    

    像上面这个例子,在回调函数中又依赖了其他模块(./components/app/app-root),导出的模块alpha其实就是exports对象,上面挂载了IonicApp属性


    参考文献:

    延伸阅读:

    相关文章

      网友评论

          本文标题:AMD、CommonJS、UMD

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