博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「JavaScript」如何让你的插件兼容CommonJS, AMD, CMD 和 原生 JS
阅读量:7155 次
发布时间:2019-06-29

本文共 1175 字,大约阅读时间需要 3 分钟。

模块标准

CommonJS

CommonJS 有三个全局变量 moduleexportsrequire。但是由于 AMD 也有 require 这个全局变量,故不使用这个变量来进行检测。

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

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

CMD

CMD 规范中定义了 define 函数有一个公有属性 define.cmd

CMD 模块中有两种方式提供对外的接口,一种是 exports.MyModule = ...,一种是使用 return 进行返回。

AMD

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

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

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

总结

我们除了提供 AMD 模块接口,CMD 模块接口,还得提供原生的 JS 接口。

由于 CMDAMD 都可以使用 return 来定义对外接口,故可以合并成一句代码。

一个直接可以用的代码如下:

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

转载地址:http://jurgl.baihongyu.com/

你可能感兴趣的文章
CentOS 7.3 配置postfix并发送邮件
查看>>
border和background
查看>>
TCP/IP之(三)四次挥手
查看>>
设计模式之工厂模式(三)
查看>>
【木叶精品系统】木叶 GhostXP SP3 纯净版/装机版_2013.06
查看>>
spring标签的使用
查看>>
Record log while in programing
查看>>
使用python开发app后台,xml和json的区别
查看>>
Bio服务端两个实例
查看>>
PHP Warning: PHP Startup: unable to load dynamic library
查看>>
刀片(sda)Ubuntu preseed配置文件示例
查看>>
HAProxy同时对80和443做负载均衡
查看>>
关闭SELINUX
查看>>
9种用户体验设计的状态是必须知道的(三)
查看>>
关于双网卡绑定与端口聚合
查看>>
Mandriva基础知识之一:改主机名称
查看>>
OpenStack 学习笔记(四):OpenStack glance服务搭建
查看>>
Python模拟新浪微博登录
查看>>
zabbix 代理(agent)端详细安装配置一
查看>>
常见证书格式及相互转换
查看>>