1、条件编译
#ifdef APP-PLUS
需条件编译的代码 仅出现在 App 平台下的代码
#endif
ifdef:if defined 仅在某平台存在
ifndef:if not defined 除了某平台均存在
值 | 平台 |
---|---|
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 | 快应用华为 |
2、注意事项
条件编译是利用注释实现的,在不同语法里注释写法不一样。
-
js 使用
// 注释
; -
css使用
/* 注释 */
; -
vue/nvue 模板里使用
<!-- 注释 -->
; -
条件编译APP-PLUS包含APP-NVUE和APP-VUE,APP-PLUS-NVUE和APP-NVUE没什么区别,为了简写后面出了APP-NVUE;
-
使用条件编译请保证编译前和编译后文件的正确性,比如json文件中不能有多余的逗号;
-
VUE3 需要在项目的 manifest.json 文件根节点配置 “vueVersion” : “3;
-
Android 和 iOS 平台不支持通过条件编译来区分,如果需要区分 Android、iOS 平台,请通过调用 uni.getSystemInfo 来获取平台信息。支持ifios、ifAndroid代码块,可方便编写判断;
-
有些跨端工具可以提供js的条件编译或多态,但这对于实际开发远远不够。uni-app不止是处理js,任何代码都可以多端条件编译,才能真正解决实际项目的跨端问题。另外所谓多态在实际开发中会造成大量冗余代码,很不利于复用和维护。举例,微信小程序主题色是绿色,而百度支付宝小程序是蓝色,你的应用想分平台适配颜色,只有条件编译是代码量最低、最容易维护的;
-
有些公司的产品运营总是给不同平台提不同需求,但这不是拒绝uni-app的理由。关键在于项目里,复用的代码多还是个性的代码多,正常都是复用的代码多,所以仍然应该多端。而个性的代码放到不同平台的目录下,差异化维护。