版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、ReactNative啟動性能優(yōu)化指南技術創(chuàng)新,變革未來為什么跨平臺?效率動態(tài)修復技術選型原生 + React Native 0.41按業(yè)務分bundle減小bundle體積局部動態(tài)修復雙刃劍加載速度慢不夠穩(wěn)定Part1:當前的優(yōu)化方案Part2:未來的優(yōu)化方向Part1:當前的優(yōu)化方案基石每次都初始化bridge,慢!Bridge實例較多,內(nèi)存占用高!Bridge全局緩存,只初始化一次。提高二次加載速度同業(yè)務共享bridge。如果有N個業(yè)務,最多有N個bridge實例。提高同業(yè)務頁面加載速度,減少內(nèi)存使用。Bridge復用接口集成復用和緩存邏輯副作用避免沖突并發(fā)加載留意“初始化”代碼RNBu
2、ndle *bundle = RNBundleManager sharendInstance bundleWithName:name;bundle loadBridge: (RCTBridge *bridge) RCTRootView *rootView = RCTRootView allocinitWithBridge:bridgemoduleName:mobile initialProperties:mProps copy;rootView.frame = self.view.bounds; self.view addSubview: rootView;一個Bridge對應多個界面,可能造
3、成數(shù)據(jù)沖突!RN為每個root view分配唯一root tag,并同步到JS??衫么藰俗R來區(qū)分不 同root view的數(shù)據(jù)。以下類型數(shù)據(jù)可能發(fā)生沖突:全局變量單例事件用戶有可能快速切換頁面,導致重復加載。標記某個bridge是否正在加載。如果在加載中,則不執(zhí)行加載。在加載完成后,統(tǒng)一調(diào)用回調(diào)block。Bridge復用可能導致一些只需要執(zhí)行一次的代碼被執(zhí)行多次。5004504003503002502001501005001234567891011121314151617181920優(yōu)化前耗時(MS)優(yōu)化后耗時(MS)優(yōu)勢簡單易實現(xiàn)。對RN源代碼無侵入。劣勢沒有做到核心、業(yè)務代碼拆分,造成
4、核心代碼多次加載。核心部分JS不能被多個業(yè)務共享。不同業(yè)務之間不能通過JS來跳轉(zhuǎn),只能推新的Container VC。還是不夠快!Part2:未來的優(yōu)化方向探究只有一個bridge。核心代碼和業(yè)務代碼分離到不同bundle。核心bundle只加載一次。業(yè)務bundle實現(xiàn)懶加載。探究bundle文件結(jié)構(gòu)。修改打包流程。實現(xiàn)業(yè)務包懶加載。三個組成部分:定義polyfills。定義模塊(JS文件)。執(zhí)行入口代碼。ModuleIdBundle中JS模塊的唯一標識。定義、獲取模塊都通過這個標識。生成全局唯一moduleId。使用文件存取用過的moduleId。下次打包時,直接取用上次生成好的modul
5、eId。如果沒有,產(chǎn)生一個 新id并存儲。分離核心、業(yè)務代碼。使用模塊路徑判斷是否為核心代碼。根據(jù)條件過濾掉不需要的代碼。業(yè)務包在最后手動require入口模塊。/ 生成moduleIdfunction createModuleIdFactory() return (path: modulePath) = if (!(modulePath in fileToIdMap) globalfileToIdMapmodulePath = globalfileToIdMapnextId; globalfileToIdMapnextId += 1;return globalfileToIdMapmodul
6、ePath;/ 讀文件var fs = require(fs)var module2Id = fs.readFileSync(/Users/admin/module2Id, utf-8) globalfileToIdMap = JSON.parse(module2Id) | nextId: 0 / 寫文件fs.writeFile(/Users/admin/module2Id, JSON.stringify(globalfileToIdMap), err = console.log(err)核心包包含RN源碼、路由系統(tǒng)。業(yè)務包包含本業(yè)務所有頁面的路由配置、所有業(yè)務模塊。跳轉(zhuǎn)到一個未注冊路由的頁面
7、時,嘗試加載業(yè)務包。需要維護頁面和業(yè)務包 的關系。function loadPage (navigator, name) if (!route.hasRoute(name) let map = page1: business1, page2: business1, page3: business2NativeModules.RNDynamic.loadJSBundle(mapname).finally() = navigator.push(route.getRoute(name)returnnavigator.push(route.getRoute(name)RCT_EXPORT_METHOD
8、(loadJSBundle:(NSString *)bundleName fullfil:(RCTPromiseResolveBlock)fullfil reject:(RCTPromiseRejectBlock)reject) NSString *bundleURL = NSBundle mainBundle pathForResource:bundleName ofType:jsbundle;if (!bundleURL) reject(0, 0, nil); return;NSData *jsData = NSData dataWithContentsOfFile:bundleURL;id exe = self.bridge moduleForName:RCTBridgeModuleNameForClass(NSClassFromString(RCTJSCExecutor); exe executeApplicationScript:jsDatasourceURL:NSURL URLWithString:bundleURL onC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輔警培訓課件教學模板
- 失能老人護理專業(yè)培訓課程
- 《GAT 797.2-2008公安基本裝備業(yè)務信息代碼 第2部分:公安基本裝備流向方式代碼》專題研究報告深度
- 2026年深圳中考物理磁場的基本性質(zhì)試卷(附答案可下載)
- 2026年深圳中考生物生物體的結(jié)構(gòu)層次試卷(附答案可下載)
- 2026年深圳中考生物高分沖刺綜合試卷(附答案可下載)
- 健身證書題庫及答案大全
- 2026年人教版物理八年級上冊期末質(zhì)量檢測卷(附答案解析)
- 大數(shù)據(jù)分析技術平臺搭建要點
- 2025云南昆華醫(yī)院投資管理有限公司(云南新昆華醫(yī)院)招聘3人備考題庫參考答案詳解
- 2024年北京第二次高中學考物理試卷(含答案詳解)
- 湖南省株洲市2023-2024學年八年級上學期語文期末考試試卷(含答案)
- 掛靠工程合同范本
- “大唐杯”全國大學生新一代信息通信技術競賽題庫
- 碧桂園物業(yè)管家述職報告
- 數(shù)字經(jīng)濟學-課件 第4章 網(wǎng)絡效應
- 2025企業(yè)年會總結(jié)大會跨越新起點模板
- GB/T 27728.1-2024濕巾及類似用途產(chǎn)品第1部分:通用要求
- 2024年山東省中考語文試卷十三套合卷附答案
- 第十五屆全國電力行業(yè)職業(yè)技能競賽(發(fā)電集控值班員)考試題庫-上(單選題)
- 中建三局工程標準化施工手冊(安裝工程部分)
評論
0/150
提交評論