码迷,mamicode.com
首页 > Web开发 > 详细

把自己的js模块兼容到AMD CMD CommonJS

时间:2017-11-18 20:03:30      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:common   his   代码   不同的   不同   var   浏览器兼容   类库   mod   

   为了让同一个模块可以运行在前后端,在写作过程中需要考虑兼容前端也实现了模块规范的环境。为了保持前后端的一致性,类库开发者需要将类库代码包装在一个闭包内。以下代码演示如何将hello()方法定义到不同的运行环境中,它能够兼容Node(CommonJS),AMD,CMD以及常见的浏览器环境中:

(function (name, definition) {
    //检测上下文环境是否为AMD或CMD
    var hasDefine = typeof define === ‘function‘;
    //检查上下文环境是否为Node
    var hasExports = typeof module !== ‘undefined‘ && module.exports;

    if(hasDefine) {
        //AMD环境或CMD环境
        define(definition);
    } else if(hasExports) {
        //定义为普通Node模块
        module.exports = definition();
    } else {
        //将模块的执行结果挂在window变量中,在浏览器中this指向window对象
        this[name] = definition();
    }
})(‘hello‘, function () {
    var hello = function () {};
    return hello;
});

 

兼容原理和我们平常做浏览器兼容的原理是一样的,无非就是能力检测和怪癖检测。

把自己的js模块兼容到AMD CMD CommonJS

标签:common   his   代码   不同的   不同   var   浏览器兼容   类库   mod   

原文地址:http://www.cnblogs.com/yonglin/p/7857614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!