[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端常見問題解決方案
- 微信小程序常見問題解決方案