uniapp-条件编译

uni-app 将已经将可以跨平台兼容处理的组件及 API 等进行了封装,但是部分平台的特性无法跨平台。
由此,uni-app 提供了条件编译的方案,来处理不同平台的特定或差异。

- ifdef:if defined 正向条件,也就是说在 XX 平台下生效。

- ifndef:if not defined 反向条件,在 XX 平台不生效。即除了 XX 平台,其它平台都生效

- endif:条件结束

- %PLATFORM%:平台名称

%PLATFORM% 可取值

  1. - APP-PLUS
  2. - APP-PLUS-NVUE
  3. - H5
  4. - MP-WEIXIN
  5. - MP-ALIPAY
  6. - MP-BAIDU
  7. - MP

示例

以下这段代码,只会在 5+App 环境下生效/存在。

  1. // #ifdef APP-PLUS
  2. const uuid = plus.device.uuid;
  3. // #endif

除了支持单个平台的条件编译外,还支持使用 || 来满足多平台条件编译。

这个组件会在微信小程序及百度小程序环境下生效:

  1. <!-- #ifdef MP-WEIXIN || MP-BAIDU -->
  2. <button @getuserinfo="getUserInfo">获取用户信息</button>
  3. <!-- #endif -->

不同文件或语言中,注释的方式有所不同。在实际使用中一定要注意,不要随意复制导致语法错误。

组件

  1. <!-- #ifdef MP-WEIXIN -->
  2. <ad unit-id="123456789"></ad>
  3. <!-- #endif -->

css

  1. /* #ifdef MP-ALIPAY*/
  2. input {
  3. padding: 0;
  4. }
  5. /* #endif */