2021-08-09 uni-app基础教程 条件编译

2021-08-09 uni-app基础教程 条件编译_第1张图片

一、条件编译

条件编译

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

写法:以 #ifdef#ifndef%PLATFORM% 开头,以 #endif 结尾。

  • #ifdef:if defined 仅在某平台存在
  • #ifndef:if not defined 除了某平台均存在
  • %PLATFORM%:平台名称
条件编译写法 说明
#ifdef APP-PLUS 需条件编译的代码 #endif 仅出现在 App 平台下的代码
#ifndef H5 需条件编译的代码 #endif 除了 H5 平台,其它平台均存在的代码
#ifdef H5 || MP-WEIXIN 需条件编译的代码 #endif 在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

%PLATFORM% 可取值如下:

平台
APP-PLUS App
APP-PLUS-NVUE App nvue
H5 H5
MP-WEIXIN 微信小程序
MP-ALIPAY 支付宝小程序
MP-BAIDU 百度小程序
MP-TOUTIAO 字节跳动小程序
MP-QQ QQ小程序
MP 微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序

支持的文件

  • .vue
  • .js
  • .css
  • pages.json
  • 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug

注意: 条件编译是利用注释实现的,在不同语法里注释写法不一样,js使用 // 注释、css 使用 /* 注释 */、vue/nvue 模板里使用 ;

API 的条件编译

// #ifdef  %PLATFORM%
平台特有的API实现
// #endif

示例,如下代码仅在 App 下出现:

2021-08-09 uni-app基础教程 条件编译_第2张图片

示例,如下代码不会在 H5 平台上出现:

2021-08-09 uni-app基础教程 条件编译_第3张图片

除了支持单个平台的条件编译外,还支持多平台同时编译,使用 || 来分隔平台名称。

示例,如下代码会在 App 和 H5 平台上出现:

2021-08-09 uni-app基础教程 条件编译_第4张图片

组件的条件编译


平台特有的组件

示例,如下广告组件仅会在微信小程序中出现:

uniapp

样式的条件编译

/*  #ifdef  %PLATFORM%  */
平台特有样式
/*  #endif  */

注意: 样式的条件编译,无论是 css 还是 sass/scss/less/stylus 等预编译语言中,必须使用 /注释/ 的写法。

正确写法

2021-08-09 uni-app基础教程 条件编译_第5张图片

错误写法

2021-08-09 uni-app基础教程 条件编译_第6张图片

pages.json 的条件编译

下面的页面,只有运行至 App 时才会编译进去。

2021-08-09 uni-app基础教程 条件编译_第7张图片

不同平台下的特有功能,以及小程序平台的分包,都可以通过 pages.json 的条件编译来更好地实现。这样,就不会在其它平台产生多余的资源,进而减小包体积。

注意

  • Android 和 iOS 平台不支持通过条件编译来区分,如果需要区分 Android、iOS 平台,请通过调用 uni.getSystemInfo 来获取平台信息。支持ifios、ifAndroid代码块,可方便编写判断。

你可能感兴趣的:(uin-app)