這類框架大的特點就是從底層的渲染引擎、布局引擎,到中層的DSL,再到上層的框架全部由自己開發,代表框架是Qt和Flutter。這類框架優點非常明顯:性能(的上限)高;各平臺渲染結果壹致。缺點也非常明顯:需要完全重新學習DSL(QML/Dart),以及難以適配中國特色的端:小程序。
這類框架是原始也是純正的的多端開發框架,由於底層到上層每個環節都掌握在自己手裏,也能大可能地去保證開發和跨端體驗壹致。但它們的框架研發成本巨大,渲染引擎、布局引擎、DSL、上層框架每個部分都需要大量人力開發維護。
2.Web技術型
這類框架把Web技術(JavaScript,CSS)帶到移動開發中,自研布局引擎處理CSS,使用JavaScript寫業務邏輯,使用流行的前端框架作為DSL,各端分別使用各自的原生組件渲染。代表框架是ReactNative和Weex,這樣做的優點有:
開發迅速;
復用前端生態;
易於學習上手,不管前端後端移動端,多多少少都會壹點JS、CSS。
缺點有:
1.交互復雜時難以寫出高性能的代碼,這類框架的設計就必然導致JS和Native之間需要通信,類似於手勢操作這樣頻繁地觸發通信就很可能使得UI無法在16ms內及時繪制。ReactNative有壹些聲明式的組件可以避免這個問題,但聲明式的寫法很難滿足復雜交互的需求。
2.由於沒有渲染引擎,使用各端的原生組件渲染,相同代碼渲染的壹致性沒有壹種高。
3.JavaScript編譯型
這類框架就是我們這篇文章的主角們:Taro、WePY、uni-app、mpvue、chameleon,它們的原理也都大同小異:先以JavaScript作為基礎選定壹個DSL框架,以這個DSL框架為標準在各端分別編譯為不同的代碼,各端分別有壹個運行時框架或兼容組件庫保證代碼正確運行。