亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

條件編譯實現跨端兼容

1. 前言

想要實現一套代碼適配多個平臺,有一個很大的門檻就是實現各平臺功能的兼容。

雖然 uni-app 已經將跨平臺兼容處理的組件及 API 等進行了封裝,日常開發過程中,我們按照 uni-app 規范開發就可以保證大部分業務在各平臺兼容。

但是有時會因為某個平臺的開發特性,出現不兼容的情況。比如單平臺適配的樣式、第三方授權登錄或者支付功能。

uni-app 是一個難得的在跨端的過程中不犧牲各平臺特色的框架,出現開發差異的時候,可以使用條件編譯來做適配,實現在一個項目中調用不用平臺的特色功能。本小節我們來了解一下條件編譯的使用。

2. 什么是條件編譯

條件編譯是用特殊的注釋作為標記,在編譯時根據這些特殊的注釋,將注釋里面的代碼編譯到不同平臺。
寫法:以 #ifdef 或 #ifndef 加 %PLATFORM% 開頭,以 #endif 結尾。

實例:

// 表示代碼僅在 H5 平臺上面執行,其他平臺不執行
#ifdef H5
  需條件編譯的代碼
#endif

// 表示代碼在 H5 平臺上面不執行,其他平臺上面執行
#ifndef H5
  需條件編譯的代碼
#endif

// 表示代碼在 H5 平臺和 App 平臺上面執行,其他平臺上面不執行
#ifndef H5 || APP-PLUS
  需條件編譯的代碼
#endif

這樣可能也比較抽象,下面我們用前面小節做的登錄彈窗給大家舉個實際項目的例子。

3.登錄彈窗組件條件編譯

3.1 編輯代碼

編輯 pages/index/index.vue 文件,在登錄彈窗組件的外面加上條件編譯,設置僅在H5平臺顯示登錄彈窗。
實例:

<!-- #ifdef H5 -->
<Login v-if="isShow" :text="text" @isShow="getShow"></Login>
<!-- #endif -->

Tips:條件編譯是注釋的狀態,不要寫錯哦~

3.2 測試效果

點擊工具欄–運行–運行到內置瀏覽器,內置瀏覽器是H5平臺,所以登錄彈窗會顯示。
圖片描述
點擊工具欄–運行–運行到小程序模擬器–微信開發者工具,因為我們用條件編譯設置了僅在H5平臺顯示登錄彈窗,所以登錄彈窗不會顯示。

運行到其他平臺也不會顯示登錄彈窗,大家可以自己測試一下。

3.3 其他條件編譯的用法

登錄彈窗在 H5 平臺上面不顯示,其他平臺上面顯示。
實例:

<!-- #ifndef H5 -->
<Login v-if="isShow" :text="text" @isShow="getShow"></Login>
<!-- #endif -->

登錄彈窗在 H5 平臺和微信小程序平臺上面顯示,其他平臺上面不顯示。
實例:

<!-- #ifndef H5 || MP-WEIXIN -->
<Login v-if="isShow" :text="text" @isShow="getShow"></Login>
<!-- #endif -->

條件編譯是用特殊的注釋作為標記,在編譯時根據這些特殊的注釋,將注釋里面的代碼編譯到不同平臺。

3.4 平臺標識

也就是%PLATFORM% 可取值如下:

平臺
APP-PLUS 5+App
H5 H5
MP-WEIXIN 微信小程序
MP-ALIPAY 支付寶小程序
MP-BAIDU 百度小程序
MP-TOUTIAO 頭條小程序
MP-QQ QQ小程序
MP 微信小程序/支付寶小程序/百度小程序/頭條小程序/QQ小程序

4. 樣式的條件編譯

接下來我們來看一下登錄按鈕樣式的條件編譯,在不同的平臺顯示不一樣的顏色。

4.1 編輯代碼

將 pages/index/index.vue 文件中,我們給 Login 組件上面加的條件編譯去掉。來編輯 components/login/login.vue 文件中的樣式部分。
實例:

/*H5平臺登錄按鈕顯示紅色,微信小程序登錄按鈕顯示藍色*/
button {
  /* #ifdef H5 */
  background:red;
  /*  #endif  */
  /* #ifdef MP-WEIXIN */
  background:blue;
  /*  #endif  */
}

4.2 測試效果

點擊工具欄–運行–運行到內置瀏覽器,測試H5平臺。

點擊工具欄–運行–運行到小程序模擬器–微信開發者工具,測試微信小程序平臺。

5. API 的條件編譯

我們來演示一下如何在不同平臺顯示不同的信息。

5.1 編輯代碼

編輯 pages/index/index.vue 文件,在 data 中編輯。
實例:

data() {
	return {
		// #ifdef H5
		text:"歡迎登錄H5平臺",
		// #endif
		// #ifdef MP-WEIXIN
		text:"歡迎登錄微信小程序",
		// #endif
		isShow:true
	};
},

5.2 測試效果

點擊工具欄–運行–運行到內置瀏覽器,測試H5平臺。

點擊工具欄–運行–運行到小程序模擬器–微信開發者工具,測試微信小程序平臺。

6. 小結

uni-app 用條件編譯的方案,來處理不同平臺的特性或差異,優雅的完成了各個平臺個性化的實現。本節課程我們主要學習了 uni-app 神奇的條件編譯,是不是一學就會,非常簡單。本節課程的需要掌握的重點如下:

  • 了解什么是條件編譯,并要注意每個平臺對應的值是什么,比如 App 平臺對應的值是 APP-PLUS,不要弄錯了;
  • 掌握組件、樣式、API 的條件編譯,雖然注釋樣式不一樣,但是原理是一樣的,跟著我們課程敲寫下來,很容易掌握。