开发环境和生产环境

uni-app 可通过 process.env.NODE_ENV 判断当前环境是开发环境还是生产环境。
一般用于连接测试服务器或生产服务器的动态切换。

  • 在HBuilderX 中,点击“运行”编译出来的代码是开发环境,点击“发行”编译出来的代码是生产环境
  • cli模式下,是通行的编译环境处理方式。

    1. if(process.env.NODE_ENV === 'development'){
    2. console.log('开发环境')
    3. }else{
    4. console.log('生产环境')
    5. }

    如果你需要自定义更多环境,比如测试环境:

  • 假设只需要对单一平台配置,可以 package.json 中配置,在HBuilderX的运行和发行菜单里会多一个出来。https://uniapp.dcloud.io/collocation/package

  • 如果是针对所有平台配置,可以在 vue-config.js 中配置。https://uniapp.dcloud.io/collocation/vue-config

快捷代码块
HBuilderX 中敲入代码块 uEnvDevuEnvProd 可以快速生成对应 developmentproduction 的运行环境判定代码。

  1. // uEnvDev
  2. if (process.env.NODE_ENV === 'development') {
  3. // TODO
  4. }
  5. // uEnvProd
  6. if (process.env.NODE_ENV === 'production') {
  7. // TODO
  8. }


判断平台

平台判断有2种场景,一种是在编译期判断,一种是在运行期判断。

编译期判断 编译期判断,即条件编译

不同平台在编译出包后已经是不同的代码。详见:条件编译

  1. // #ifdef H5
  2. alert("只有h5平台才有alert方法")
  3. // #endif

如上代码只会编译到H5的发行包里,其他平台的包不会包含如上代码。

运行期判断

运行期判断是指代码已经打入包中,仍然需要在运行期判断平台,此时可使用 uni.getSystemInfoSync().platform 判断客户端环境是 Android、iOS 还是小程序开发工具(在百度小程序开发工具、微信小程序开发工具、支付宝小程序开发工具中使用 uni.getSystemInfoSync().platform 返回值均为 devtools)。

  1. switch(uni.getSystemInfoSync().platform){
  2. case 'android':
  3. console.log('运行Android上')
  4. break;
  5. case 'ios':
  6. console.log('运行iOS上')
  7. break;
  8. default:
  9. console.log('运行在开发者工具上')
  10. break;
  11. }

如有必要,也可以在条件编译里自己定义一个变量,赋不同值。在后续运行代码中动态判断环境。