寫一個易於維護使用方便性能可靠的Hybrid框架(一)—— 思路構建

《寫一個易於維護使用方便性能可靠的Hybrid框架(一)—— 思路構建》

《寫一個易於維護使用方便性能可靠的Hybrid框架(二)—— 插件化》

《寫一個易於維護使用方便性能可靠的Hybrid框架(三)—— 配置插件》

《寫一個易於維護使用方便性能可靠的Hybrid框架(四)—— 框架構建》

前言

原本上一篇博文寫完,我就告訴本身,這是最後一篇,以後再也不總結和Cordova相關和web容器相關的內容,可是,很不巧,我昨天總結完《關於Cordova框架對URL攔截致使通訊丟失問題的處理》以後,又看了味精大佬的文章(別問我3月份的文章爲什麼纔看到,由於我才路轉的掘金)以後,我又按耐不住本身了(PS:我原本是沒想研究這麼深的,可是,停不下來了),那我就問本身,若是是我呢,由於我一直在總結Cordova的思想,那麼若是是我設計一個Hybrid框架,我要怎麼作?因而我又陷入了沉思...由於我原本是想在後續着重研究weex,RN等動態UI方面的實現的,講真的經過味精大佬的分析,我如今也不肯定究竟是咱們的web容器更好仍是基於weex等的動態UI更好,因而我又陷入了沉思...通過深思以後,我的以爲後者是大前端的趨勢,什麼是大前端,就是各類的各類前端客戶端糅合在了一塊兒,四處交叉延伸,不分你我。前端

不扯那麼多了,仍是基於這個想法,我決定給本身總結一個本身的Hybird框架,一方面屬於知識的總結,年紀大了不總結就忘是真的,另外一方面算是對本身知識的擴展延伸,但願多像大神學習...另外,味精大佬的思想是框架內並不本身構建webView,而是開發人員徹底使用本身的webView便可,那麼我也在糾結,到底要不要開發者本身控制webView仍是說框架內控制?那麼我先在大佬的基礎上作下延伸擴展,決定框架內不提供webView,webView的建立由開發者本身控制。ios

那麼如今就有了兩個前提:一是webView使用WKWebView,二是框架內不提供webView,webView須要開發者本身建立。下面進入正題:web

一個好的Hybrid框架應該具備哪有特色:

1.插件化,這個是必須的,解耦沒毛病,什麼叫插件化,就是可插拔,用的時候拽進來,不用的時候拖出去,其他什麼都不用幹。說實話這很符合Cordova(優勢太多離不開了),插件化又能夠細分:

  • 1.webView的代理方法具體實現插件化,這樣無論哪一個webView的代理方法均可以隨意設置而不會影響業務。
  • 2.js與native交互插件化,就是咱們所謂的js插件,native插件,它們統一叫插件(好比fetch,io等),配對插配對拔,具體看業務需求。

2.可配置性,就是說一切皆可配置,全部的插件,都是被一個配置文件搞定的,也就是說一個配置文件便可搞定上面提到的一切插件。配置又能夠細分:

  • 1.插件可配置,插件的可配置又細分爲native端的插件可配置和js端的插件可配置。
  • 2.插件是否在加載webView時就加載到緩存裏面仍是說在調用的時候在加載,這個要看具體業務,我的以爲經常使用的插件,例如fetch插件,js的網絡請求都使用native來作,這種插件是徹底有必要提早加載的,像地圖這類插件,可能偶爾會用一次或者用戶一時半會用不到,這類插件就徹底能夠在調用的時候再實例化放入緩存。

3.對於前端開發者來講接口統一,而且框架內怎麼變也不須要js作改動,對於前端來講,始終是一套接口,他不須要關心webView具體是啥。

  • 須要提供出一套前端接口給前端開發者。

4.通訊上必須用WKWebView,由於它對性能的提高是顯而易見的,並且不得不用,webView這一塊打算參考味精大佬所選擇的通訊方式。具體能夠參考

《從零收拾一個hybrid框架(一)-- 從選擇JS通訊方案開始》緩存

5.js與native插件交互的性能優化。這一塊又能夠細分三部分:

  • 1.js調用native是否須要搞個隊列,像我上一篇所提到的,是否是不須要每次調用都要通過webView?那麼一樣native端是否同樣也須要搞個隊列出來(Cordova思想,別問我爲何,我也不知道)。
  • 2.插件回調一旦耗時,是否須要將其放入後臺線程執行?
  • 3.我在《iOS 源碼解讀 -- cordova-ios》裏面提到過一點,若是插件執行時間過長形成卡頓,向runloop中添加了一個timer來喚醒runloop繼續幹活,防止休眠,那麼咱們是否是也能夠將它帶過來。

我就想到了上面的五點,不過感受有這五點也差很少了,就這些吧,那接下來要作的事情就是,一步一步的解決上面的五個問題,主題思想仍是抽離前兩篇文章外加Cordova框架思想,畢竟Cordova有點重量級有些是咱們平時開發用不到的,並且集成起來也比較麻煩,基於此,打算造一個性能可靠,使用方便,易於維護且輕量級的Hybrid框架出來。目前構建了思路,具體實現準備放在下一篇(PS:由於我如今也沒想好,太晚了,就到這吧)來寫。性能優化

相關文章
相關標籤/搜索