0
点赞
收藏
分享

微信扫一扫

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% 可取值如下:


生效条件

VUE3

HBuilderX 3.2.0+ ​​详情​​

APP-PLUS

App

APP-PLUS-NVUE或APP-NVUE

App nvue

H5

H5

MP-WEIXIN

微信小程序

MP-ALIPAY

支付宝小程序

MP-BAIDU

百度小程序

MP-TOUTIAO

字节跳动小程序

MP-QQ

QQ小程序

MP-KUAISHOU

快手小程序

MP-360

360小程序

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  来写:

 

uniApp 条件编译_#endifuniApp 条件编译_h5_02

<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哪里没实践,按照这 /**/ 照猫画虎即可  很简单啊!

 


本文来自博客园,作者:​​咸瑜​​​,转载请注明原文链接:​​javascript:void(0)p/15271902.html​​

举报

相关推荐

0 条评论