[TOC]
# uniapp平台特性
## 条件编译
由于各个平台有起独特性,可以使用类似于C语言的条件编译语句,指定一段代码只在特定的环境中被编译。
判断某个平台存在:
```js
//#ifdef %PLATFORM%
需条件编译的代码
//#endif
```
判断某个平台不存在:
```js
//#ifndef %PLATFORM%
需条件编译的代码
//#endif
```
%PLATFORM% 可取值如下:
**%PLATFORM%** **可取值如下:**
| 值 | 平台 |
| :---------------------- | :----------------------------------------------------------- |
| APP-PLUS | App |
| APP-PLUS-NVUE | App nvue |
| H5 | H5 |
| MP-WEIXIN | 微信小程序 |
| MP-ALIPAY | 支付宝小程序 |
| MP-BAIDU | 百度小程序 |
| MP-TOUTIAO | 字节跳动小程序 |
| MP-QQ | QQ小程序 |
| MP-360 | 360小程序 |
| MP | 微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序 |
| quickapp-webview | 快应用通用(包含联盟、华为) |
| quickapp-webview-union | 快应用联盟 |
| quickapp-webview-huawei | 快应用华为 |
**支持的文件**
- .vue
- .js
- .css
- pages.json
- 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug
例如:
```js
//#ifdef APP-PLUS
plus.push.addEventListener('click', function (msg) {
var payload = null;
var action = '';
if (msg.payload) {
if (typeof msg.payload === 'string') {
payload = JSON.parse(msg.payload);
}
action = payload.action;
if (action === 'open') {
plus.webview.open(payload.url);
}
}
});
//#endif
```
在HTML或CSS中也可以使用条件编译:
```xml
<!-- #ifdef MP-WEIXIN -->
需条件编译的代码
<!-- #endif -->
```
```js
/* #ifdef %PLATFORM% */
需条件编译的代码
/* #endif */
```
可以使用 `||` 连接多个平台,例如:
```js
// #ifdef H5 || MP-WEIXIN
需条件编译的代码
// #endif
```
## 参考资料
- [uni-app 条件编译](https://uniapp.dcloud.io/platform)
- uniapp项目搭建
- 通过cli创建uniapp项目
- uniapp平台特性
- uniapp基础
- 在uniapp中使用字体图标
- uniapp全局变量的几种实现方式
- uniapp自定义页面返回逻辑
- uniapp进阶
- 在网页中打开uniapp应用
- uniapp状态栏与导航栏
- 在uniapp中优雅地使用WebView
- uniapp Android离线打包
- Android原生工程搭建
- 在uni-app项目中集成Android原生工程
- uniapp热更新和整包更新
- Android Q启动白屏的问题
- uniapp原生插件开发与使用
- Android 原生插件使用
- uniapp基础模块配置
- uniapp定位及地图
- uniapp第三方支付、登录
- 常见问题及解决方案
- Android端常见问题解决方案
- H5端常见问题解决方案
- 微信小程序常见问题解决方案