展开目录
判断javascript运行环境
amdcommonjs
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

自从使用amd规范js编码风格之后,所有的代码我都是以模块方式对外提供接口。因为有些模块代码是nodejs(nodejs原始支持CommonJS规范)和浏览器端通用的,所以每次写到接口的时候都要判断运行上下文对模块定义方式的支持,籍此来兼容不同环境的写法。

判断的代码如下,很基础的用法:

<script>
void function(){
  switch(true){
    case typeof define!=='undefined' && define.amd:
      console.log('amd');
      break;
    case typeof module==='object' && !!module.exports:
      console.log('CommonJS');
      break;
    default:
      throw 'unknown context environment';
  }
}();
</script>

然后模块定义的时候就这样写:

void function(){

  // 模块功能代码部分
  // 因为这里讨论的是通用模块,这类模块是不应该存在必须外部依赖的,否则这个模块就是渣,所以不需要用到require的方法
  // 直接定义exports
  var exports={test:1};
  // ...

  switch(true){
    case typeof define!=='undefined' && define.amd:
      console.log('amd');
      define(function(){ return exports; });
      break;
    case typeof module==='object' && !!module.exports:
      console.log('CommonJS');
      module.exports=exports;
      break;
    default:
      throw 'unknown context environment';
  }
}();

相关文档

暂无

随便看看

  1. git 大小写不区分问题

  2. react项目webpack打包时拆分异步加载的文件

  3. sass变量和继承类写法

  4. npm包命令行调用

  5. 树莓派实现用pi用户自动登录

  6. 判断变量是否 0 或者 '0'

  7. npm设置仓库地址和代理

  8. webrtc服务搭建

  9. TIME_WAIT过多

  10. git配置服务端支持http认证

  11. 把树莓派的存储空间拓展到整张TF卡中

  12. mongodb2.4 添加用户

  13. mysql选取内容导出到文件

  14. bootstrap modal弹框导致ie无法获取焦点

  15. youku电脑版跳过广告代码

  16. 配置mysql ssl连接

畅言模块加载中