兼容多种模块规范写法
为了能够让同一个模块能够运行前后端(这里特指浏览器和Nodejs),兼容主流设计规范。模块开发者往往需要将自己的代码包装在一个函数闭包中。那么一般开发者是怎样做的呢?下面给出的示例能够兼容AMD、CMD以及CommonJS规范,能够同时运行在浏览器端和以Nodejs为后端语言的后端。
(function(id,definition){
// 判断是否是AMD或CMD
var isAmdOrCmd = typeof define === 'function'
// 判断是否是CommonJS
var isCommonjs = typeof module !== 'undefined' && module.exports
if(isAmdOrCmd){
define(definition)
}else if(isCommonjs){
module.exports = definition()
}else{
// 这里的this在浏览器中为window,在node中为global
this[id] = definition()
}
})('demo',()=>{
var demo = ()=>'this is a module demo'
return demo
})
如果对三大主流规范不清楚的,可以查看我上一篇《前端模块设计规范》博文。
基于MIT开源协议
本文链接:http://blog.godotdotdot.com/2017/03/09/兼容多种模块规范写法/