最近正式線上上項目中內建了jspatch進行熱修複,這裡做一個簡單的總結。
工具篇:
首先,用xcode來編輯js非常困難,基本上沒有縮進,完全需要手寫;經過研究發現使用 Sublime text3 結合 jsformat 插件,可以很好的編輯js腳本。
一般來說,我們可以使用JSConvertor對js進行轉換,然後在sublime text中進行編輯和格式化,通過xcode run代碼來檢視效果。
ps: jsformat 快捷鍵: The default key binding is "ctrl+alt+f"
一次熱修複實踐中遇到的轉換問題:
1. js是動态類型的語言,是以所有的類型轉換代碼全部需要删除掉。
2. 注意不要遺漏defineClass。
3. 所有的枚舉或是宏需要用值來替換。
4. 判空不要和null比較,而是直接用(xxx)和(!xxx)。
5. selector直接替換成字元串即可。
6. console.log("testing3");
這樣的格式用來列印debug日志;建議在代碼的分段都列印一些日志,可以用來判斷是什麼環節的問題。
7. 工具自動轉換會自動去掉一個原來的@符号(在字元串拼接等情況下要注意),這個時候需要手動加回去。
8. stringwithformat隻支援%@。
9. nsstring、array、dic等注意類型,js和oc類型不同,必要時使用.toJS()來轉換到js.
10. block 作為參數傳遞的時候需要手動轉換其類型,具體參考jspatch的文檔。
上面說的其實也都是一些基本的東西,大家遇到問題去查找官方文檔對應的wiki,耐心一點就可以。
https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95#%E8%A6%86%E7%9B%96%E6%96%B9%E6%B3%95