跨平臺開發框架 Lynx 初探

YXP發表於2018-04-03

跨平臺開發是目前開發較熱門的方向,React Native 在這方面取得了很大的成功,同時 Flutter 也獲得了非常多的關注。React Native 採用 Web 框架開發並使用 Native UI 進行渲染,很大程度上降低了 Native 開發的門檻並且提高迭代的效率,但是也不可避免地存在一些不足之處。

本人作為 RN 的長期開發體驗者,深知在有些技術在現有的 RN 這類框架上沒法得到很好的解決。比如首屏的速度,複雜的跟手動畫,和原生 Android 和 iOS 上的體驗確實有一定的差距的。當然這些小小的毛病不能阻礙跨平臺開發技術的發展。本人也在持續的關注 Flutter,這個框架解決了RN上效能的問題,但是也增加了學習成本。

Lynx

最近發現了跨平臺的一個新框架 Lynx ,從官方簡介來看這個框架還處於 alpha 狀態,目前還沒有完整的文件,只有體驗 demo 。不過在體驗了這個框架提供的 demo之後,感覺還是可以持續關注下去的。Lynx 官方宣稱擁有和 Native 一致的首屏速度和互動體驗,體驗 demo之後發現首屏速度和互動的確很優秀。

體驗

正好在之前編譯 RN 和 Flutter 已經下載好了 Android SDK 和 NDK ,按照 How To Build 進行編譯還是比較方便的。

最終效果和官方給出的動圖是一致的,就是整體的 demo 還是比較少的,略簡單。頁面開發流程暫時還沒嘗試,只能先看看效果。

跨平臺開發框架 Lynx 初探

在 Lynx 的介紹裡面看到了和其他現有的跨平臺框架相比的一些不一樣的特性,根據自己的體驗和官方介紹簡單說一下:

  1. 頁面首屏展示,看到給出的 demo 就可以知道,這個和原生的 Android 和 iOS 頁面一樣,都可以做到直出的,基本沒有任何白屏的狀況。這一點相比於 RN 確實是一個不錯的點。
  2. 互動動畫,就是跟手動畫,在 RN 上要去實現這類動畫確實是比較難(本身因為中間還要過一層 JSBridge 的原因),要麼自己擴充 Native 的模組。而在 demo 上的互動動畫非常順暢,並沒有出現任何的卡頓,在效果上甚至比 Flutter 幀率更高。
  3. JSBinding 機制,根據官方的說法有更高效的 JSBridge,但是體驗上暫時沒感覺出來,稍後去研究一下程式碼
  4. 動態釋出測試,這個是所有跨平臺框架必須有的,不算什麼新鮮事。這個看文件的介紹需要結合腳手架 lynx-cli 。

頁面直接展示和滿幀的互動動畫的實現原理是什麼呢?官方給出了一個簡單的工作流程圖和介紹。理解了這個就基本知道這個問題的答案了,頁面展示快的原因是因為將首屏的展示變成了排版檔案,從而略過了 JS 的執行生成首屏元素的步驟,而互動動畫的實現也是通過了中間的互動動畫引擎在接收到事件後直接響應,從而略過了 JS 的中間步驟。

體驗完Lynx,覺得這個框架還是值得後續觀望,看下能做到什麼程度。

最後

Lynx 框架現在還是在 alpha 階段,暫時還不能直接用來開發要上線的應用,功能也尚不完備,但是可以關注它的發展,畢竟這個技術在實現上和 RN 有所區別,也希望能有新的想法,在滿足先在的需求的情況下突破現有的侷限。

嘗試 demo 之後,準備去看看程式碼,一探內部實現。Lynx 的倉庫也給出了可以使用的 API 列表,後續會根據 API 進行簡單實踐。希望能有更多的跨平臺開發框架出現,推動技術的發展。

附上 Lynx 倉庫地址:https://github.com/hxxft/lynx-native

相關文章