介紹 Taro 如何將各種語法的前端框架(如:React/Vue等)運行在小程序上,討論一個框架支持多 DSL 的實現探索,使得開發者可以使用任意熱門框架/語法/DSL 來編寫小程序應用,同時復用相關生態。
各大小程序開發框架也紛紛進行了多端適配
微信小程序主要分為 邏輯層 和 視圖層,以及在他們之下的原生部分。邏輯層主要負責 JS 運行,視圖層主要負責頁面的渲染,它們之間主要通過 Event 和 Data 進行通信,同時通過 JSBridge 調用原生的 API。這也是以微信小程序為首的大多數小程序的架構。

Taro 當前架構
Taro 當前的架構主要分為:編譯時 和 運行時。
其中編譯時主要是將 Taro 代碼通過 Babel 轉換成 小程序的代碼,如:JS、WXML、WXSS、JSON。運行時主要是進行一些:生命周期、事件、data 等部分的處理和對接。

Taro 編譯時
有過 Babel 插件開發經驗的應該對一下流程十分熟悉,Taro 的編譯時也是遵循了此流程,使用 babel-parser 將 Taro 代碼解析成抽象語法樹,然后通過 babel-types 對抽象語法樹進行一系列修改、轉換操作,最后再通過 babel-generate 生成對應的目標代碼。

整個編譯時最復雜的部分在於 JSX 編譯。
我們都知道 JSX 是一個 JavaScript 的語法擴展,它的寫法千變萬化,十分靈活。這里我們是采用 窮舉 的方式對 JSX 可能的寫法進行了一一適配,這一部分工作量很大,實際上 Taro 有大量的 Commit 都是為了更完善的支持 JSX 的各種寫法。
經觀察 個人認為不推薦使用Taro Next框架。
