我們項目中的一些配置,布局和交互有部分,在微信和 h5 端有一些兼容問題,可能需要不一樣的接口,等等。愛掏網(wǎng) - it200.com
uni-app 已將常用的組件、JS API 封裝到框架中,開發(fā)者按照 uni-app 規(guī)范開發(fā)即可保證多平臺兼容,大部分業(yè)務(wù)均可直接滿足。愛掏網(wǎng) - it200.com
但每個平臺有自己的一些特性,因此會存在一些無法跨平臺的情況。愛掏網(wǎng) - it200.com
- 大量寫 if else,會造成代碼執(zhí)行性能低下和管理混亂。愛掏網(wǎng) - it200.com
- 編譯到不同的工程后二次修改,會讓后續(xù)升級變的很麻煩。愛掏網(wǎng) - it200.com
在 C 語言中,通過 #ifdef、#ifndef 的方式,為 windows、mac 等不同 os 編譯不同的代碼。愛掏網(wǎng) - it200.com uni-app 參考這個思路,為 uni-app 提供了條件編譯手段,在一個工程里優(yōu)雅的完成了平臺個性化實現(xiàn)。愛掏網(wǎng) - it200.com
實現(xiàn)
既然uniapp 給我們提供了方法,我們只需要按照他的邏輯去書寫即可,下面是他的語法:
以?#ifdef?或?#ifndef?加?%PLATFORM%?開頭,以?#endif?結(jié)尾。愛掏網(wǎng) - it200.com
- #ifdef:if defined 僅在某平臺存在
- #ifndef:if not defined 除了某平臺均存在
- %PLATFORM%:平臺名稱
常用平臺名稱
值 | 生效條件 |
---|---|
APP-PLUS | App |
APP-PLUS-NVUE或APP-NVUE | App nvue 頁面 |
H5 | H5 |
MP-WEIXIN | 微信小程序 |
示例:
不同平臺請求不同接口
除了js也支持 html 和 css,只是注釋不一樣: 比如我們使用不同平臺,展示不同的圖片 ?這樣只有微信平臺才會出現(xiàn)的圖片靜態(tài)就放置好了 參考文檔:什么是編譯器 | uni-app官網(wǎng) (dcloud.net.cn) getAll(keyword = '', pagenum = '') {// #ifdef APP-PLUSuni.request({url: `/search1/keyword?keyword=${this.keywordNow}&type=&pageNum=${pagenum}&pageSize=10`,success: (res) => {//console.log(res.data, this.list.length, res.data.total);this.total = res.data.totalif (this.list.length
html
css
/* #ifdef MP-WEIXIN */
.box{樣式}
/* #endif *static 目錄的條件編譯