RN 渲染原理:不依赖WebView,原生控件渲染

React Native(RN)的渲染原理可以概括为:

RN 不依赖 WebView,而是使用原生控件(Native Views)进行渲染。

具体原理如下:

1. JavaScript 层

开发者使用 JavaScript(React)编写 UI。

例如:

复制代码
<View>
  <Text>Hello React Native</Text>
</View>

这里的 View、Text 并不是 HTML 标签,而是 React Native 提供的组件。


2. React 生成虚拟树(Virtual Tree)

React 根据 JSX 构建组件树,并通过 Diff 算法计算哪些地方发生了变化。

复制代码
JSX
   │
   ▼
React Fiber
   │
   ▼
Virtual Tree

3. Bridge(旧架构)或 JSI/Fabric(新架构)

RN 不会把页面放进 WebView。

而是把需要创建、更新控件的信息发送给原生。

旧架构:

复制代码
JavaScript
      │
      ▼
   Bridge
      │
      ▼
Native(UI)

Bridge 采用异步通信。


新架构(Fabric + JSI):

复制代码
JavaScript
      │
      ▼
     JSI
      │
      ▼
Fabric Renderer
      │
      ▼
Native UI

JSI 不需要传统 Bridge,通信效率更高,延迟更低。


4. 原生创建真正的控件

RN 最终调用的是系统原生控件,而不是浏览器 DOM。

例如:

RN组件 Android iOS
View android.view.View UIView
Text TextView UILabel
TextInput EditText UITextField
Image ImageView UIImageView

所以用户看到的是系统真正的原生界面。


5. GPU 渲染

原生控件最终交给系统渲染:

复制代码
RN JS
   │
React Fiber
   │
Bridge / JSI
   │
Native View
   │
Android View 或 UIView
   │
GPU
   │
屏幕

为什么说 RN 不依赖 WebView?

React Native 与传统 Hybrid(如早期 Cordova、PhoneGap)最大的区别就是:

React Native WebView Hybrid
使用原生控件 使用 HTML + CSS
没有 DOM 有 DOM
不运行在浏览器 运行在 WebView 中
调用系统控件 页面由浏览器内核绘制
性能接近原生 性能受 WebView 限制

例如:

复制代码
<Text>Hello</Text>
  • React Native :最终渲染为 Android 的 TextView 或 iOS 的 UILabel。

  • WebView :最终渲染为 HTML 的 <span> 或 <div>,由浏览器引擎(如 Chromium/WebKit)绘制。

因此,React Native 的核心特点就是不依赖 WebView,而是通过原生渲染引擎将 React 组件映射为平台原生控件,从而获得接近原生应用的性能和体验。

相关推荐
跨境数据猎手1 小时前
跨境电商系统三大 Web 漏洞的防护:SQL 注入、XSS、CSRF
前端·sql·xss
冒险的豆子1 小时前
Proxy & Vue 响应式(合并精简版,适合面试)
前端·javascript·vue.js
Java后端的Ai之路2 小时前
前端技术Vue-18-视图中的渲染
前端·javascript·vue.js
程序员海军8 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
zttbee9 小时前
echarts图表tooltip色块失效
前端·javascript·echarts
excel10 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构
子兮曰10 小时前
CSS 复现 23 种设计风格:从拟物到液态玻璃的成本阶梯与兜底写法【实战】
前端·css·视觉设计
虚无境11 小时前
如何用AI帮我写出实用的插件
前端·javascript·ai编程
柳杉12 小时前
从数字化到数智化:3D 可视化大屏的下一个五年
前端·ai编程·数据可视化
濮水大叔12 小时前
函数式与对象式:前端架构的两种成本曲线
vue.js·react.js·函数式编程