回覆列表
  • 1 # 青天青雲

    upload successful

    Flutter 和 RN/Weex 的差異,核心在於渲染的基礎由自己實現,簡單來說,

    Flutter 的程式碼經過 Flutter 引擎直接就渲染到了螢幕上

    而 RN/Weex 的程式碼需要先跑到 Native 層處理一下,然後經過 Native 層渲染到螢幕

    很顯然前者效率會更高。由於 Native 元件可能會隨著系統的升級跟著一起升級(API 增、刪或變化),RN/Weex 需要寫很多膠水層程式碼來適配不同版本、不同平臺的 Native 元件,而 Flutter 就不存在這個問題,但 Flutter 卻不能像 RN/Weex 那般可以直接使用 Native 提供的豐富元件和屬性,它需要使用 Flutter 引擎暴露出來的底層 API 做封裝,

    比如要具備 Flex 佈局能力,就需要寫一個 Flex 引擎來識別上層的 Flex 語法

    比如想使用 React 的 DSL,上層就必須實現一個類 React 框架來對接 Flutter 引擎提供的渲染 API

    再比如想使用圓角、投影等等,就必須增加一種渲染策略來實現圓角效果和陰影效果等等

    好在 Flutter 社群針對 Android 和 iOS 分別實現了一套適合各自系統風格的元件,長得跟 Native 一樣。如果這些元件不能滿足開發者的需求,開發者也可以很輕鬆地定義一種新的元件,這對開發者顯然是十分友好的,我們可以拿到非常底層的 API 做各種想實現的效果,而且效能還特別高。

    Flutter 引擎之上有一層是 Dart,事實上它就提供了上面我們所說的 Flex 佈局能力、類 React 的 DSL 能力、各種動畫、CSS rule 等,其實現方式就利用 Flutter 引擎提供的比較底層的可以直接在 GPU 上渲染的 API 能力。

    如果你想用 Vue 的 DSL 寫 Flutter 行不行?其實也是可以的,但是需要有人寫一個 Vue 的框架來對接 Flutter 引擎提供的渲染 API,Flutter 引擎就像一個 Driver 層,保證了在各端上的渲染一致性,需要開發者在 Driver 之上進行自己的框架抽象、元件抽象等。

    以上,可能表述存在一些偏差,但是基本就是這麼個意思。

  • 2 # 凡泰極客

    flutter和react-native都是跨端技術。各有各的優勢。react-native經過這幾年的發展,生態比較成熟,有非常多的開源外掛可以使用,對比flutter的生態則剛剛開始。flutter優勢在於外掛開發方便,開發效率也比較高。其實跨端開發還有一種選項就是小程式。在flutter、react-native環境下面其實也是可以結合小程式的。如果可以在flutter、react-native環境下面可以執行小程式、熱更新、灰度釋出,這個體驗也是非常棒的。以下有兩個demo可以實現flutter、react-native混合程式設計。

    react-native: https://github.com/finogeeks/mop-react-native-demo

    flutter:

    https://github.com/finogeeks/mop-flutter-demo

  • 中秋節和大豐收的關聯?
  • 如何測試專網80埠是否開通?