zoukankan      html  css  js  c++  java
  • 把自己的js模块兼容到AMD CMD CommonJS

       为了让同一个模块可以运行在前后端,在写作过程中需要考虑兼容前端也实现了模块规范的环境。为了保持前后端的一致性,类库开发者需要将类库代码包装在一个闭包内。以下代码演示如何将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;
    });

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

  • 相关阅读:
    Eureka Server的多级缓存和过期机制
    eureka-client拉取注册表
    Ribbon的调用流程
    EurekaServer启动
    eureka的注册
    Eureka的客户端是怎么启动的?
    Ribbon的负载均衡源码
    Ribbon是怎么重构URL的?
    Maven添加本地jar
    window 常用软件记录
  • 原文地址:https://www.cnblogs.com/yonglin/p/7857614.html
Copyright © 2011-2022 走看看