uniapp 中的 #ifndef 条件编译

在 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 让你可以针对不同平台编写不同的代码,在编译时只会保留对应平台的代码,其他平台的代码会被过滤掉。

相关推荐
Jmyd012336 分钟前
用 Web VR 引擎搭建 3D 虚拟展厅:从素材上云到多端实时渲染的完整数据链路
前端·3d·vr·三维数字化
刘天远1 小时前
Agent成本核算实现:事件表、状态分布与Python归集
前端·数据库·人工智能·python
欣欣之王来了1 小时前
开发环境准备:Node.js、npm、VS Code安装配置
前端·学习·架构·项目·vue3教程
xiaolinudao1232 小时前
将多个 Excel 表格中的数据合并到单个表中|6 种实现方案全解析
java·前端·excel
LRL_2 小时前
跨平台 Node 模块安装指南:如何利用 pnpm/npm 配置`supportedArchitectures` 锁定平台依赖
前端·npm·node.js
EatFan3 小时前
React 项目踩坑实录:useEffect 闭包陷阱、Context 性能陷阱与 React 18 升级避坑排查手册
前端·javascript·react.js·react·react hooks·useeffect·闭包陷阱
风骏时光牛马3 小时前
企业业务运营信息数据库
前端
IT_陈寒4 小时前
Vue的数组更新把我坑惨了
前端·人工智能·后端
于航4 小时前
分层上下文压缩,幻觉检测,错误累积概要
前端
数据掘金4 小时前
鸿蒙统计的权限弹窗怎么适配?
前端