#适配器模式

适配器其实就是对不同情况进行统一适配

#业务场景

  • taro
  • axios

#生产实践:axios 中的适配器

axios 完美地抹平了浏览器和 node 环境下 api 的调用差异,靠的正是对适配器模式的灵活运用

function getDefaultAdapter() {
  var adapter
  // 判断当前是否是node环境
  if (
    typeof process !== 'undefined' &&
    Object.prototype.toString.call(process) === '[object process]'
  ) {
    // 如果是node环境,调用node专属的http适配器
    adapter = require('./adapters/http')
  } else if (typeof XMLHttpRequest !== 'undefined') {
    // 如果是浏览器环境,调用基于xhr的适配器
    adapter = require('./adapters/xhr')
  }
  return adapter
}

#小结

把变化留给自己,把统一留给用户