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

相关推荐
东风破_6 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_7 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric7 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_017 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余8 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei8 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神8 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
kyriewen11 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马11 小时前
大模型落地实践中的技术选型思路与方案对比
前端
IT_陈寒12 小时前
Vite打包时的静态资源坑,我帮你踩过了
前端·人工智能·后端