条件编译uniapp
条件编译的概念
条件编译是指在代码中根据不同的平台或环境条件,选择性编译和执行特定代码块的功能。在Uniapp中,条件编译主要用于处理多端差异,实现一套代码适配多个平台(如H5、小程序、App等)。
基本语法
Uniapp的条件编译采用特殊注释语法,以 #ifdef、#ifndef、#endif 为核心关键字:
#ifdef PLATFORM:当平台为PLATFORM时编译代码。#ifndef PLATFORM:当平台不为PLATFORM时编译代码。#endif:结束条件编译块。
示例:
// 仅在微信小程序中生效
#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端统称APP-NVUE:App端nvue页面
完整列表可参考Uniapp官方文档。
文件级条件编译
通过文件名后缀实现不同平台加载不同文件,例如:
index.vue:通用文件index.nvue:App端专用文件index.weixin.vue:微信小程序专用文件
规则:文件名格式为 原文件名.平台.后缀。

样式条件编译
在CSS中通过 /* #ifdef PLATFORM */ 和 /* #endif */ 实现:
/* #ifdef H5 */
body { background-color: #f0f0f0; }
/* #endif */
静态资源条件编译
静态资源(如图片)可通过路径后缀区分平台:
logo.png:通用资源logo-h5.png:H5专用资源logo-mp-weixin.png:微信小程序专用资源
注意事项
- 条件编译代码块需完整闭合,避免嵌套错误。
- 生产环境下,非匹配平台的代码会被移除,不会增加包体积。
- 调试时可通过
process.env.NODE_ENV区分开发/生产环境。
复杂条件组合
支持逻辑与(&&)和逻辑或(||)组合条件:
// 在微信小程序或支付宝小程序中生效
#if MP-WEIXIN || MP-ALIPAY
console.log('小程序通用逻辑');
#endif






