• 微信
您当前的位置: 首页> uni-app> 知识点>

uni-app开发:ifdef判断平台

作者:Alpha时间:2020-07-16 阅读数:3566 +人阅读

uni-app编写一套代码可以运行到各家的小程序、H5、APP,虽然uni-app抹平了各平台的大多数语法差异,但是差异还是存在的,在进行一些特殊操作的时候,个别代码不通用,这就需要判断平台后有针对性的运行。


平台判断有2种场景,一种是在编译期判断,一种是在运行期判断。

1、编译期判断 

编译期判断,即条件编译,不同平台在编译出包后已经是不同的代码

// #ifdef H5
    
alert("只有h5平台才有alert方法")
// #endif

如上代码只会编译到H5的发行包里,其他平台的包不会包含如上代码。

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

写法:以 #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% 可取值如下:

平台
APP-PLUS App
APP-PLUS-NVUE App nvue
H5 H5
MP-WEIXIN 微信小程序
MP-ALIPAY 支付宝小程序
MP-BAIDU 百度小程序
MP-TOUTIAO 字节跳动小程序
MP-QQ QQ小程序
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 模板里使用 <!-- 注释 -->;

更多详细请参考官方文档:点击前往


2、运行期判断 

运行期判断是指代码已经打入包中,仍然需要在运行期判断平台,此时可使用 uni.getSystemInfoSync().platform 判断客户端环境是 Android、iOS 还是小程序开发工具(在百度小程序开发工具、微信小程序开发工具、支付宝小程序开发工具中使用 uni.getSystemInfoSync().platform 返回值均为 devtools)。

switch(uni.getSystemInfoSync().platform)
{
    
    case 'android':
       
        console.log('运行Android上')
       
        break;
    
    case 'ios':
       
        console.log('运行iOS上')
       
        break;
    
    default:
       
        console.log('运行在开发者工具上')
       
        break;
}

如有必要,也可以在条件编译里自己定义一个变量,赋不同值。在后续运行代码中动态判断环境。

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com

标签: 小程序 小程序

上一篇:没有了

下一篇:uni-app自定义组件

阿尔法

软件开发工程师#全栈工程师

{include file=foot.html}