美文网首页
「JavaScript」如何让你的插件兼容AMD, CMD 和

「JavaScript」如何让你的插件兼容AMD, CMD 和

作者: JasonQiao | 来源:发表于2017-04-17 14:17 被阅读175次

转自https://segmentfault.com/a/1190000003732752

模块标准

现在的前端模块化标准主要有两种, CMD , AMD 。

CMD

CMD 在模块定义当中有三个变量,分别是 require , exports , module 。除了这三个变量可以辨识 CMD 外, define 函数还有一个公有属性 define.cmd 。我们也可以检测这个值来判断是否是 CMD 。

如果想要对外提供接口的话,可以将接口绑定到 exports (即 module.exports ) 上。

function MyModule() {
    // ...
}

if(typeof module !== `undefined` && typeof exports === `object` && define.cmd) {
    module.exports = MyModule;
}

如果需要支持除了 CMD 之外的其他符合 CommonJS 的标准,请去掉 define.cmd

AMD

AMD 规范中, define 函数同样有一个公有属性 define.amd 。

AMD 中的参数便是这个模块的依赖。那么如何在 AMD 中提供接口呢?它是返回一个对象,这个对象就作为这个模块的接口,故我们可以这样写:

function MyModule() {
    // ...
}

if(typeof define === `function` && define.amd) {
    define(function() { return MyModule; });
}

总结

我们除了提供 AMD 模块接口, CMD 模块接口,还得提供原生的 JS 接口,一个直接可以用的代码如下:

;(function(){
    function MyModule() {
        // ...
    }
    var moduleName = MyModule;
    if (typeof module !== 'undefined' && typeof exports === 'object' && define.cmd) {
        module.exports = moduleName;
    } else if (typeof define === 'function' && define.amd) {
        define(function() { return moduleName; });
    } else {
        this.moduleName = moduleName;
    }
}).call(function() {
    return this || (typeof window !== 'undefined' ? window : global);
});

相关文章

  • 「JavaScript」如何让你的插件兼容AMD, CMD 和

    转自https://segmentfault.com/a/1190000003732752 模块标准 现在的前端模...

  • JavaScript如何让你的插件兼容AMD,CMD和原生JS

    模块标准 现在的前端模块化标准主要有两种:cmd、amd. CMD CMD在模块定义当中有三个变量,分别是requ...

  • 目前主流的JavaScript模块化实现的技术以及它们之间的区别

    目前主流的JavaScript模块有CommonJS、AMD、CMD、以及ES的模块系统。 一、CommonJS ...

  • js的模块方案:CommonJS、AMD和CMD

    什么是CommonJS、AMD和CMD CommonJS、AMD和CMD都是js的模块加载方案,JS在最初设计的时...

  • AMD CMD

    AMD CMD AMD,CMD是浏览器端模块加载器的两种规范。AMD的代表是requireJS和SeaJS。今天主...

  • Amd和Cmd

    AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD...

  • AMD和CMD

    1.不同的模块化规范 对于依赖的模块AMD是提前执行,CMD是延迟执行CMD推崇依赖就近,AMD推崇依赖前置 2....

  • AMD和CMD

    以代码爱好者角度来看AMD与CMD 随着浏览器功能越来越完善,前端已经不仅仅是切图做网站,前端在某些方面已经媲美桌...

  • AMD和CMD

    题目1: 为什么要使用模块化? 题目2:CMD、AMD、CommonJS 规范分别指什么?有哪些应用 AMD和CM...

  • AMD 和 CMD

    一、前言 这是我们经常写在 HTML 中的语句,引用了很多 js 文件,但是看不清他们彼此之间的依赖关系: 删除 ...

网友评论

      本文标题:「JavaScript」如何让你的插件兼容AMD, CMD 和

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