uni-app 条件编译不同平台编写不同代码
uni-app About 1,812 words条件编译
条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。
使用方法
以#ifdef或#ifndef加%PLATFORM%开头,以#endif结尾。
#ifdef:if defined仅在某平台存在#ifndef:if not defined除了某平台均存在%PLATFORM%:平台名称
仅出现在App平台下的代码
#ifdef APP-PLUS
需条件编译的代码
#endif
除了H5平台,其它平台均存在的代码(注意if后面有个n)
#ifndef H5
需条件编译的代码
#endif
在H5平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)
#ifdef H5 || MP-WEIXIN
需条件编译的代码
#endif
%PLATFORM% 可取值
| 值 | 生效条件 |
|---|---|
| H5 | H5(推荐使用 WEB) |
| WEB | web(同H5) |
| MP-WEIXIN | 微信小程序 |
| MP-ALIPAY | 支付宝小程序 |
| MP-BAIDU | 百度小程序 |
| MP-TOUTIAO | 抖音小程序 |
| MP-LARK | 飞书小程序 |
| MP-QQ | QQ小程序 |
| MP-KUAISHOU | 快手小程序 |
| MP-JD | 京东小程序 |
| MP-360 | 360小程序 |
| MP-HARMONY | 鸿蒙元服务 |
| MP-XHS | 小红书小程序 |
| MP | 小程序合集 |
| APP-ANDROID | App Android 平台 |
| APP-IOS | App iOS 平台 |
| APP-HARMONY | App HarmonyOS Next 平台 |
| APP | App |
| APP-PLUS | uni-app js引擎版编译为App时 |
| APP-PLUS-NVUE或APP-NVUE | App nvue 页面 |
| VUE3 | uni-app js引擎版用于区分vue2和3 |
| VUE2 | uni-app js引擎版用于区分vue2和3 |
| UNI-APP-X | 用于区分是否是uni-app x项目 |
| uniVersion | 用于区分编译器的版本 |
| QUICKAPP-WEBVIEW | 快应用通用(包含联盟、华为) |
| QUICKAPP-WEBVIEW-UNION | 快应用联盟 |
| QUICKAPP-WEBVIEW-HUAWEI | 快应用华为 |
支持的文件
.vue/.nvue/.uvue.js/.uts.csspages.json- 各预编译语言文件,如:
.scss、.less、.stylus、.ts、.pug
注意
条件编译是利用注释实现的,在不同语法里注释写法不一样,js/uts使用//注释、css使用/* 注释 */、vue/nvue/uvue模板里使用<!-- 注释 -->。
代码示例
JSON
{
"key": "a"
// #ifdef MP-WEIXIN
,"key": "b"
// #endif
}
JS
// #ifdef MP-WEIXIN
import a as aWx from 'a/wx'
// #endif
// #ifndef MP-WEIXIN
import a as aIndex from 'a/index'
// #endif
var a
// #ifdef MP-WEIXIN
a = aWx
// #endif
// #ifndef MP-WEIXIN
a = aIndex
// #endif
资源目录条件编译
static目录下,新建不同平台对应的目录,专有目录下的静态资源只有在特定平台才会编译进去。
如以下目录结构,a.png只有在微信小程序平台才会编译进去,b.png在所有平台都会被编译。
┌─static
│ ├─mp-weixin
│ │ └─a.png
│ └─b.png
├─main.js
├─App.vue
├─manifest.json
└─pages.json
官方文档
Views: 489 · Posted: 2025-08-18
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...