weex 踩坑記(持續更新中……)
阿新 • • 發佈:2019-01-28
消失了一個月,努力為新專案倒騰 weex 中,記錄一下遇到的問題。之後還會持續更新~
目前,我使用的 weex
都是在整合Weex到Android來做的,專案使用的是 weex-toolkit
生成的專案模板,程式碼釋出使用webpack打包成js放到伺服器上,Android端讀取伺服器上的js來實現weex專案的。
雜七雜八的一些知識點
- 螢幕寬度為 750,高度一直沒查到,我用的是1300,剛好顯示下。長度單位要麼不寫,要麼就是 px,效果都一樣。
.item {
height: 1300;
width: 750px;
}
- 佈局只支援 盒子模型、flex佈局、relative定位,其他一些CSS不太支援。
- CSS的 margin、padding、border 不支援縮寫。像
border:5px solid red;
這樣寫是不行滴。 - 暫不支援像 mint-ui 這類 Vue Web UI 元件庫。
- 在 Android 中,
navigator
的push
方法跳轉的Activity
介面是需要處理的,需要建立一個帶有特殊<intent-filter>
標籤的 Activity。假如手機中沒有帶有該<intent-filter>
的Activity
就不會發生跳轉,報ActivityNotFoundException
錯誤。而如果有多個帶有該<intent-filter>
Activity
,Android 系統會讓我們去進行選擇。注:這個帶<intent-filter>
的Activity 是跨 APP 的。可以參照WEEX 使用navigator跳轉Android系統出現ActivityNotFoundException報錯 image
必須設定寬高,否則不顯示。也不能使用img
來顯示圖片- Android 手機中顯示圖片需要在
ImageAdapter
中進行處理,官網只提供了處理的位置(有註釋),但未對圖片進行處理。我使用了 picasso 來對圖片進行顯示。 - native 和 weex 的通訊通過自定義module或者傳送全域性事件來完成。參考
- weex 在Android手機中的除錯:
- 在 weex 中使用 console.log 方法來打 log,開啟Android Studio,在 logcat中可以過濾關鍵詞 jslog 來獲取log資料。
- 如果 weex 報錯,可以在 logcat 中查詢錯誤,一般錯誤都好幾行,很好找。
- 建議使用ESLint先過濾一些簡單的語法錯誤,減少手機端的除錯成本。
- weex 其他除錯方式
- 手機安裝 Playground,執行 weex 專案,網頁開啟
http://localhost:8080/
掃描二維碼進行除錯。 - 可以在Playground網頁端進行程式碼除錯,但感覺遇到有元件的專案不太好除錯。
- 在專案執行(
npm run serve
)後,直接開啟http://localhost:8080/
也能看到網頁版本的專案,可以直接除錯,不過一些設計Native端的元件用不了。
- 手機安裝 Playground,執行 weex 專案,網頁開啟
- weex中的標籤只支援官方提供的內部元件,因為那些是會被渲染成native介面的。
v-bind:class
只能使用陣列語法stream
的url
選項好像預設不支援中文,需要將中文轉為UTF-8
來傳輸。- weex 的 css 只支援 class 選擇器,並且只支援單個類的選擇器,如
.item .item-content {}
是錯誤的~ - weex有點選特效的,參照偽類。
- 不支援
display:none
即不支援v-show
,需要使用v-if
來實現顯示和隱藏。 - 預設flex佈局,要設定
flex-direction
。我懷疑我的web端顯示錯誤可能就是沒有設定flex-direction
,移動端沒有錯誤是因為預設flex-direction:column
- 儲存、網路等很多都是非同步的,需要注意順序
storage
只能儲存字串,取值後再轉為json
結尾
暫時整理這麼多,之後還會有其他的東西我會持續更新的~
Android 端的 demo 我會放到我的 Github 上去,之後我會讓我的 IOS 小夥伴給一版 IOS 版本的殼子,到時候直接寫weex專案,Android端和IOS端只需要更改一下渲染的js檔案路徑就可以顯示了。