RN是個奇怪的東西,是Facebook於2015年4月開源的跨平臺移動應用開發框架,是Facebook早先開源的JS框架 React 在原生移動應用平臺的衍生產物,目前支持iOS和安卓兩大平臺。但自開發以來一直是詬病不斷,雖然一直在升級修復問題,問題仍是五花八門。本人苦逼的iOS程序猿一枚,在RN中不斷趟坑。在作登陸模塊從原生到RN時出現下面的打印。web
相信你們都知道從原生到RN這段時間是有短暫白屏的,在首次跳轉的時候較爲明顯。網絡
RN須要一個JS的運行環境,在IOS上直接使用內置的JavaScriptCore做爲JS的解析引擎,在Android則使用webkit.org官方開源的jsc.so。此外還集成了其餘開源組件,如fresco圖片組件,okhttp網絡組件等。RN會把應用的JS代碼(包括依賴的framework)編譯成一個js文件(通常命名爲index.bundle), RN的總體框架目標就是爲了解釋運行這個js 腳本文件,若是是js 擴展的API, 則直接經過bridge調用native方法; 若是是UI界面, 則映射到virtual DOM這個虛擬的JS數據結構中,經過bridge 傳遞到native , 而後根據數據屬性設置各個對應的真實native的View。 bridge是一種JS 和 JAVA代碼通訊的機制, 用bridge函數傳入對方module 和 method便可獲得異步回調的結果。數據結構
有開發說請求過程當中,經過URL連接下載文件,報錯:([BoringSSL]nw_protocol_boringssl_error(1584)),是後臺那邊的問題。實則否則BoringSSL確實的是谷歌的一個底層(Google在2014年推出的機遇OpenSSL的分支)。但出現這種狀況的緣由是網絡請求https設置的問題。修改方法以下:框架
1.在iOS項目中找到info.plist文件異步
2.修改App Transport Security Settings下的Allow Arbitrary Loads函數
或者直接去掉。爲了對應後臺多變的狀況,既要支持http也要支持https,建議採起第一中方法。3d
修改後的效果還算不錯,算是解決了。orm