aro 在编译时提供了一些内置的环境变量来帮助用户做一些特殊处理

process.env.TARO_ENV

用于判断当前编译类型,目前有 weapp / swan / alipay / h5 / rn / tt / qq / quickapp 八个取值,可以通过这个变量来书写对应一些不同环境下的代码,在编译时会将不属于当前编译类型的代码去掉,只保留当前编译类型下的代码,例如想在微信小程序和 H5 端分别引用不同资源

  1. if (process.env.TARO_ENV === 'weapp') {
  2. require('path/to/weapp/name')
  3. } else if (process.env.TARO_ENV === 'h5') {
  4. require('path/to/h5/name')
  5. }

同时也可以在 JSX 中使用,决定不同端要加载的组件

  1. render () {
  2. return (
  3. <View>
  4. {process.env.TARO_ENV === 'weapp' && <ScrollViewWeapp />}
  5. {process.env.TARO_ENV === 'h5' && <ScrollViewH5 />}
  6. </View>
  7. )
  8. }

样式文件中跨平台支持

为了方便大家书写样式跨端的样式代码,在样式文件中支持条件编译的特性。
指定平台保留样式:

  1. /* #ifdef %PLATFORM% */
  2. 样式代码
  3. /* #endif */

指定平台剔除样式:

  1. /* #ifndef %PLATFORM% */
  2. 样式代码
  3. /* #endif */

其中 PLATFORM 的取值与 process.env.TARO_ENV 保持一致
例如,希望某段样式只在 微信小程序中 生效,可以如下写法

  1. /* #ifdef weapp */
  2. 样式代码
  3. /* #endif */

如果是多个平台,之间可以使用空格隔开。