1. 程式人生 > >weex 踩坑記(持續更新中……)

weex 踩坑記(持續更新中……)

消失了一個月,努力為新專案倒騰 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 中,navigatorpush 方法跳轉的 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返回鍵解決方案
    裡面有 native 端和 weex 端互動的細節。
  • 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端的元件用不了。
  • weex中的標籤只支援官方提供的內部元件,因為那些是會被渲染成native介面的。
  • v-bind:class只能使用陣列語法
  • streamurl 選項好像預設不支援中文,需要將中文轉為 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檔案路徑就可以顯示了。

參考文件