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
.css
pages.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: 38 · Posted: 2025-08-18
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓

Loading...