React Native与Flutter的区别

看了些文章,做下学习笔记

一、React和React Native的区别是什么?

相同

  1. React Native基于React而产生,渲染平台不同,React是浏览器,React Native是移动设备
  2. React驱动Html Dom渲染, React Native驱动 Android/Ios原生组件渲染
  3. React直接渲染Dom,React Native生成id,由Bridge生成表,等待Native去调用

区别

  1. 使用Jsx语法进行开发
  2. 由Js实现的虚拟Dom驱动界面View层渲染

二、React Native 与 Flutter的区别

Flutter和React Native都需要一个原生平台的Activity / ViewController 支持,且在原生层面属于一个 “单页面应用”

  • React Native
  1. 下载JS文件,在JavaScriptCore 中解析Bundle文件布局,堆叠一系列原生控件进行渲染
  2. 通过JS代码配置页面布局,React Native 解析渲染成原生控件
来自知乎.png
  • Flutter
  1. 基于Framework 开发 APP,使用Widget 控件搭建页面,Engine将Widget数据化,调用Skia直接绘制到屏幕上
来自知乎.png
  • DOM:
    额外补充一点,React 的虚拟 DOM 的概念相信大家都知道,这是 React 的性能保证之一,而 Flutter 其实也存在类似的虚拟 DOM 概念。

Flutter 中我们写的 Widget , 其实并非真正的渲染控件,这一点和 React Native 中的标签类似,Widget 更像配置文件, 由它组成的 Widget 树并非真正的渲染树。

Widget 在渲染时会经过 Element 变化, 最后转化为 RenderObject 再进行绘制, 而最终组成的 RenderObject 树才是 “真正的渲染 Dom” , 每次 Widget 树触发的改变,并不一定会导致RenderObject 树的完全更新。

所以在实现原理上 React Native 和 Flutter 是完全不同的思路,虽然都有类似“虚拟 DOM 的概念” ,但是React Native 带有较强的平台关联性,而 Flutter UI 的平台关联性十分薄弱。

三、Meteor 是什么

Meteor是一个基于nodejs和mongodb数据库的实时web框架,前后端代码都是基于js开发, 集成了nodejs和mongodb,另外还集成了cordova框架,用来封装App,支持Android和iOS平台

移动端跨平台开发的深度解析

你可能感兴趣的:(React Native与Flutter的区别)