一、开发环境和生产环境

  • uni-app 可通过 process.env.NODE_ENV 来判断当前是生产环境还是开发环境
  • 在 hbuilderx 中,点击 ‘运行’ 编译出来的代码是开发环境,点击 ‘发行’ 编译出来的代码是生产环境
// 可写在 main.js 文件中
if (process.env.NODE_ENV === 'development') {
	console.log('开发环境');
} else {
	console.log('生产环境');
}

二、判断平台

两种方法:

(1)、编译期判断 (即条件编译)

  • 不同平台在编译出包后已经是不同代码
    // #ifdef H5
    	alert('只有在H5中才能使用 alert方法')
    // #endif
     

(2)、运行期判断

  • 指代码已经打入包中,仍然需要在运行期判断平台,此时可使用 uni.getSystemInfoSync().platform 来判断客户端环境是 Android、ios、还是小程序开发工具
switch (uni.getSystemInfoSync().platform) {
		case 'android':
			console.log('运行在 android 上')
		break;
		case 'ios':
			console.log('运行在 ios 上')
		break;
		default:
			console.log('运行在 开发者工具上')
		break;
}

三、跨端兼容

        uni-app 已将常用的组件、JS API 封装到框架中,开发者按照 uni-app 规范开发即可保证多平台兼容,大部分业务均可直接满足,但每个平台有自己的一些特性,因此会存在一些无法跨平台的情况。

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

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

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

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

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

%PLATFORM% 可取值如下:

平台
APP-PLUSApp
APP-PLUS-NVUEApp、nvue
H5          H5
MP-WEIXIN微信小程序
MP-ALIPAY支付宝小程序
MP-BAIDU百度小程序
MP-TOUTIAO字节跳动小程序
MP-QQQQ小程序
MP-360360小程序
MP微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW快应用通用(包含联盟、华为)
QUICKAPP-WEBVIEW-UNION快应用联盟
QUICKAPP-WEBVIEW-HUAWEI快应用华为

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐