uniApp 条件编译

参考C语言的,详细如下:

  • 大量写 if else,会造成代码执行性能低下和管理混乱。
  • 编译到不同的工程后二次修改,会让后续升级变的很麻烦。

在 C 语言中,通过 #ifdef、#ifndef 的方式,为 windows、mac 等不同 os 编译不同的代码。 uni-app 参考这个思路,为 uni-app 提供了条件编译手段,在一个工程里优雅的完成了平台个性化实现。

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

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

  • #ifdef:if defined 仅在某平台存在
  • #ifndef:if not defined 除了某平台均存在
  • %PLATFORM%:平台名称

例子:

条件编译写法说明
#ifdef APP-PLUS
需条件编译的代码#endif
仅出现在 App 平台下的代码
#ifndef H5
需条件编译的代码#endif
除了 H5 平台,其它平台均存在的代码
#ifdef H5 || MP-WEIXIN
需条件编译的代码#endif
在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

%PLATFORM% 可取值如下:

生效条件
VUE3HBuilderX 3.2.0+ 详情
APP-PLUSApp
APP-PLUS-NVUE或APP-NVUEApp nvue
H5H5
MP-WEIXIN微信小程序
MP-ALIPAY支付宝小程序
MP-BAIDU百度小程序
MP-TOUTIAO字节跳动小程序
MP-QQQQ小程序
MP-KUAISHOU快手小程序
MP-360360小程序
MP微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW快应用通用(包含联盟、华为)
QUICKAPP-WEBVIEW-UNION快应用联盟
QUICKAPP-WEBVIEW-HUAWEI快应用华为

支持的文件

  • .vue
  • .js
  • .css
      • pages.json    这个用的比较少
  • 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug

注意:

  • 条件编译是利用注释实现的,在不同语法里注释写法不一样,js使用 // 注释、css 使用 /* 注释 */、vue/nvue 模板里使用 <!-- 注释 -->
  • 条件编译APP-PLUS包含APP-NVUE和APP-VUE,APP-PLUS-NVUE和APP-NVUE没什么区别,为了简写后面出了APP-NVUE ;
  • 使用条件编译请保证编译前编译后文件的正确性,比如json文件中不能有多余的逗号;
  • VUE3 需要在项目的 manifest.json 文件根节点配置 "vueVersion" : "3"

上面说那么多 现在开始实战,我们分别以 vue  、js 、 css  来写:

 

<template>
    <view>
        
        <!-- #ifdef H5 -->
        <view>这行文字 只有在H5的环境下才能被看到!</view>
        <!--#endif-->
        
        <!-- #ifdef MP -->
        <view>这行文字 只有在小程序(微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序)的环境下才能被看到!</view>
        <!--#endif-->
        
        <!-- #ifdef APP-PLUS -->
        <view>这行文字 只有在IOS / 安卓的环境下才能被看到!</view>
        <!--#endif-->
        
        <!-- #ifndef MP  -->
        <view>这行文字 只有在IOS / 安卓 / H5 的环境下才能被看到! 小程序不可能被看到!</view>
        <!--#endif-->
        
    </view>
</template>

<script>
    export default {
        data() {
            return {
                
            }
        },
        methods: {
            
        },
        onLoad() {
            //#ifdef MP-WEIXIN
            console.log("只有微信小程序才能看到我输出这行");
            //#endif
            //#ifdef H5
            console.log("只有H5才能看到我输出这行");
            //#endif
        }
    }
</script>

<style>

</style>
flagCompile.vue

C3哪里没实践,按照这 /**/ 照猫画虎即可  很简单啊!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp条件编译是一种根据平台不同执行不同代码的技术。使用uniapp提供的条件编译代码,可以在不同平台上执行特定的代码。在代码,可以使用条件编译指令来限定代码在特定平台上执行。例如,使用#ifdef和#endif指令来限定代码块只在APP端执行,而不在H5端执行。除了代码,还可以使用条件编译来处理组件的分端逻辑。条件编译的使用方法是,在代码使用特定的条件编译指令,以平台名称作为条件,来限定代码的执行范围。平台名称可以取以下几个值:APP-PLUS、App、nvue、H5、MP-WEIXIN。条件编译的格式是以#ifdef或#ifndef加上平台名称开头,以#endif结尾。其#ifdef表示仅在某平台存在,而#ifndef表示除了某平台均存在。%PLATFORM%是一个占位符,表示平台名称。通过使用条件编译,可以根据不同的平台做出相应的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uniapp条件编译](https://blog.csdn.net/qq_45689942/article/details/118330469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uni-app条件编译](https://blog.csdn.net/ajdhakj6/article/details/128480497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值