条件编译uniapp
条件编译的概念
条件编译是指在代码中根据不同的平台或环境条件,选择性编译和执行特定代码块的功能。在Uniapp中,条件编译主要用于处理多端差异,实现一套代码适配多个平台(如H5、小程序、App等)。
基本语法
Uniapp的条件编译采用特殊注释语法,以 #ifdef(如果定义)、#ifndef(如果未定义)开头,以 #endif 结束。平台标识符为 PLATFORM(如 H5、MP-WEIXIN、APP 等)。
// 仅在小程序中生效
#ifdef MP-WEIXIN
console.log('这段代码仅在微信小程序中执行');
#endif
// 在非H5平台生效
#ifndef H5
console.log('这段代码在非H5平台执行');
#endif
常用平台标识符
H5:Web浏览器环境MP-WEIXIN:微信小程序MP-ALIPAY:支付宝小程序APP:App(iOS/Android)APP-PLUS:App(包含nvue)APP-NVUE:App的nvue页面
多平台联合判断
通过逻辑运算符 ||(或)、&&(与)组合多个条件:

// 在微信小程序或支付宝小程序中生效
#ifdef MP-WEIXIN || MP-ALIPAY
console.log('小程序平台通用逻辑');
#endif
文件级条件编译
文件名或目录名可以通过后缀标识平台,例如:
index.vue:通用文件index.weixin.vue:仅微信小程序使用/pages-weixin/:微信小程序专用目录
样式条件编译
在 <style> 标签中通过注释实现:

/* #ifdef H5 */
body { background-color: #f0f0f0; }
/* #endif */
模板条件编译
在 <template> 中使用 v-if 结合全局变量判断平台:
<view v-if="process.env.VUE_APP_PLATFORM === 'H5'">
仅H5显示的组件
</view>
动态环境变量
通过 process.env.UNI_PLATFORM 获取当前平台,实现动态逻辑:
const platform = process.env.UNI_PLATFORM; // 输出 'H5'、'MP-WEIXIN' 等
注意事项
- 条件编译代码块需完整闭合,避免嵌套错误。
- 平台标识符区分大小写,需严格匹配。
- 生产环境下,未匹配的代码块会被移除,不影响包体积。
通过合理使用条件编译,可以高效维护多端兼容的Uniapp项目,减少冗余代码。






