概览
前端跨端技术经历了从 WebView (H5) -> 逻辑跨端 (React Native / Weex) -> 渲染跨端 (Flutter) 的演进。高级前端需要理解它们在渲染机制、性能瓶颈以及动态化能力上的本质区别。
跨端技术演进路线
1. Web 技术跨端 (WebView / Hybrid App)
代表:Cordova, Ionic, 各类 App 内嵌 H5。
- 原理:App 内嵌一个浏览器控件(WebView),所有的 UI 和逻辑都在这个浏览器里用 HTML/CSS/JS 运行。
- 优点:开发成本极低,动态化能力最强(随时发版更新)。
- 缺点:性能最差。复杂的动画、长列表容易卡顿;无法完全调用原生底层能力(需借助 JSBridge)。
2. 逻辑跨端 (原生渲染)
代表:React Native (RN), Weex。
- 原理:用 JS 写业务逻辑,但在渲染时,不使用 HTML/DOM,而是将 JS 指令翻译成对应平台的原生控件(如 iOS 的
UIView,安卓的ViewGroup)进行渲染。 - 核心特点:
- 逻辑跨端是基于 JS 引擎(如 Hermes/JSC),通过 Bridge 或 JSI 注入设备能力的 API。
- 渲染跨端则是使用 Android、iOS 实现 React 的 Virtual DOM 的渲染。
- 优点:性能远超 H5,接近原生体验;保留了较好的动态化能力(支持热更新)。
- 缺点:存在 JS 和 Native 之间的通信损耗(老架构的 Bridge 瓶颈);两端原生控件的差异可能导致 UI 表现不完全一致。
3. 自绘引擎跨端
代表:Flutter。
- 原理:彻底抛弃了原生控件,自带一个高性能的 2D 渲染引擎(Skia / Impeller)。不仅逻辑跨端,连 UI 渲染都跨端了,直接调用底层图形 API (OpenGL/Metal) 画图。
- 优点:性能天花板,丝滑顺畅;真正做到双端 UI 的像素级一致。
- 缺点:动态化能力极差(iOS 政策限制执行动态下发的机器码);学习成本高(需学习 Dart 语言)。
4. 小程序跨端
代表:Taro, uni-app。
- 原理:基于编译时转换(AST)或运行时适配,将一套 React/Vue 代码编译成微信、支付宝、抖音等不同平台的小程序代码,或者编译成 H5 / RN。
- 适用场景:国内特有的生态产物,适合需要一套代码通吃国内各大流量平台(微信、字节、阿里系)的业务。