在 UniApp 中,#ifndef
是 条件编译 的语法,意思是 "if not defined"(如果未定义)。
基本语法
javascript
#ifndef 平台名称
// 这里的代码只在指定平台不存在时编译
#endif
实际应用示例
1. 平台特定代码
javascript
// 只有在非 H5 平台才编译这段代码
#ifndef H5
console.log('这段代码在 H5 平台不会执行');
// 可以写一些小程序特有的 API 调用
#endif
// 只有在非微信小程序才编译
#ifndef MP-WEIXIN
console.log('这段代码在微信小程序不会执行');
#endif
2. 与 #ifdef 配合使用
javascript
#ifdef MP-WEIXIN
console.log('只在微信小程序执行');
#else
console.log('在除微信小程序外的其他平台执行');
#endif
3. 多平台判断
javascript
#ifndef APP-PLUS && !H5
console.log('既不是 App 也不是 H5 平台');
#endif
常用平台标识符
H5
- H5 平台MP-WEIXIN
- 微信小程序MP-ALIPAY
- 支付宝小程序APP-PLUS
- App 平台MP
- 所有小程序平台
实际使用场景
javascript
// 根据不同平台使用不同的 API
#ifndef H5
// 小程序和 App 中使用 uni 的 API
uni.showToast({
title: '提示信息'
});
#endif
#ifdef H5
// H5 平台使用浏览器原生 API
alert('提示信息');
#endif
总结 :#ifndef
让你可以针对不同平台编写不同的代码,在编译时只会保留对应平台的代码,其他平台的代码会被过滤掉。