uni-app 条件编译不同平台编写不同代码

uni-app About 1,812 words

条件编译

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

使用方法

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

  • #ifdefif defined仅在某平台存在
  • #ifndefif 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

官方文档

https://uniapp.dcloud.net.cn/tutorial/platform.html#%E6%9D%A1%E4%BB%B6%E7%BC%96%E8%AF%91%E5%A4%84%E7%90%86%E5%A4%9A%E7%AB%AF%E5%B7%AE%E5%BC%82

Views: 38 · Posted: 2025-08-18

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh