热搜词
发表于 2022-7-28 09:24:05 | 显示全部楼层 |阅读模式
uni-app中的#ifdef #ifndef #endif的用处,通过条件编译实现多平台融合

条件编译:

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。


语法:

以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

  1. // #ifdef %PLATFORM%
  2.     这些代码只在该平台编译
  3. // #endif
复制代码

释义:

%PLATFORM%:平台名称

#ifdef:if defined 仅在某平台存在

#ifndef:if not defined 除了某平台均存在

#endif:结束条件编译


平台标识的意思(%PLATFORM% 可取值)
01.png

标识                         平台
APP-PLUS        5+App
MP                         微信小程序/支付宝小程序/百度小程序/头条小程序/QQ小程序
MP-WEIXIN        微信小程序
MP-ALIPAY        支付宝小程序
MP-BAIDU        百度小程序
MP-TOUTIAO        头条小程序
MP-QQ                QQ小程序
H5        H5
APP-PLUS-NVUE        5+App nvue
————————————————

条件编译写法说明



结合使用例子

例子1(仅在5+app平台上此代码生效)
  1. /*
  2.         可以使用// 或者
  3. */
  4. // #ifdef APP-PLUS
  5. <view>仅在5+app平台上显示代码</view>
  6. // #endif

  7. methods: {
  8.         // #ifdef APP-PLUS
  9.         click(){
  10.                 console.log('仅在5+app平台上生效的事件')
  11.         },
  12.         // #endif
  13. }
复制代码
例子2(非5+app平台上此代码生效)
  1. /*
  2.         可以使用// 或者
  3. */
  4. <!-- #ifndef APP-PLUS -->
  5. <view>只要不是5+app平台上此代码会显示</view>
  6. <!-- #endif -->

  7. methods: {
  8.         <!-- #ifndef APP-PLUS -->
  9.         click(){
  10.                 console.log('非5+app平台上生效的事件')
  11.         },
  12.         <!-- #endif -->
  13. }
复制代码



全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2025-1-16 00:20 , Processed in 0.186487 second(s), 25 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2025 Discuz! Team