跨端的三种方案原理和对比(WebView,ReactNative,Flutter)

一、定义

WebView

WebView是什么? 

答: 第一代跨平台框架,代表者为:PhoneGap、微信小程序。

WebView标签是一种用于在网页中嵌入浏览器窗口的HTML元素。它的底层原理是通过原生平台提供的浏览器引擎来实现网页的渲染和交互。

在Android平台上,WebView使用的是Android系统提供的WebView组件,它基于WebKit引擎。

为什么WebView会被认为性能不如ReactNative呢?

答:因为WebView标签(或叫组件),本质上是原生平台提供的一个组件,对它的优化就不是很好。 并且一个完整HTML5页面的展示要经历浏览器控件的加载、解析和渲染三大过程,性能消耗要比原生开发增加N个数量级。 这也就导致了很多无用的性能消耗。

ReactNative

ReactNative具有很强的平台关联性。(也导致它的版本升级优化都有瓶颈)

ReactNative是什么?底层原理是?

答:是第二代跨平台框架,采用原生自带的UI组件代替了核心的渲染引擎,所以这种方案的性能比第一代方案要好很多,代表者就是RN、Weex。

原理:通过在JS层写react代码,然后C++通过JSCore解析JS层的代码并生成一颗DOM树,然后通过Bridge去调用平台层的原生组件(也叫OEM Widget)去组合成一个页面。

简单来说就是 通过写 JS 代码配置页面布局,然后 React Native 最终会解析渲染成原生控件

Flutter  

Flutter跟平台关联性不大,只要给他一个canvas就行了。

如果说 React Native 是为开发者做了平台兼容,那 Flutter 则更像是为开发者屏蔽平台的概念。

Flutter是什么?底层原理是?

答:Flutter,第三代跨平台框架,号称也确实,一次编写多平台运行(APP,H5,WEB,PC)。

因为他采用了一种「自绘引擎」的方式,和以往的方案都不一样。不使用原生组件进行渲染,他完全自己搞了一套跨平台UI渲染框架,渲染引擎依靠跨平台的Skia图形库来实现,手机平台只需要提供一块画布即可。

为什么网上普遍认为Flutter性能比ReactNative更快?

因为Flutter直接通过渲染引擎Skia(canvas)绘制UI,相当于直接操作GPU。 

ReactNative还有一个桥接的机制,有大量的通讯操作,既会操作CPU,也会操作GPU。

补充:

  1. UI渲染方式:Flutter使用自己的渲染引擎Skia来绘制UI,可以实现高性能的自定义UI。React Native则使用原生组件来渲染UI,通过桥接机制将JavaScript代码转换为原生代码执行。

  2. 性能:由于Flutter使用自己的渲染引擎,可以实现高性能的UI渲染,具有更好的性能表现。React Native在性能方面可能受限于桥接机制的性能损耗,但通过优化和使用原生模块可以提高性能。

如果Flutter都是基于canvas直接去实现组件(例如div,button这些,后面统称Widget),那它如何实现视频等?

具体我就不写了,我也没特别深究。比较特别,这些组件从 flutter的实现原理角度来看,是比较难实现的,也是他弱于RN的一个点。

三个图片,分别是WebView,ReactNative,Flutter

------

上面只是做个简单总结,更加详细请看下面文字。

参考:「ReactNative」原理剖析 - 知乎

React Native原理之跨端通信机制 - 知乎

全网最全 Flutter 与 React Native 深入对比分析 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下DSS界面本地集成linkis管理台

说明:当前开发环境为windows,node版本使用16.15.1。启动web时,确保后端服务已准备就绪。 1.linkis web编译 #进入项目WEB根目录 $ cd linkis/linkis-web #安装项目所需依赖 $ npm install参考官方编译说明,windows下编译一直异常…

代理IP和网络加速器的区别有哪些

随着互联网的普及,越来越多的人开始使用网络加速器来提高网络速度。然而,很多人并不清楚代理IP和网络加速器之间的区别。本文将详细介绍两者的概念及区别。 一、代理IP 代理IP是一种通过代理服务器进行网络连接的方式。在使用流冠代理IP时,用…

数据结构算法-希尔排序

引言 在一个普通的下午,小明和小森决定一起玩“谁是老板”的扑克牌游戏。这次他们玩的可不仅仅是娱乐,更是要用扑克牌来决定谁是真正的“大老板”。 然而,小明的牌就像刚从乱麻中取出来的那样,毫无头绪。小森的牌也像是被小丑掷…

视觉检测系统在半导体行业的应用

一、半导体产业链概述 半导体产业链是现代电子工业的核心组成部分,涵盖了从原材料到最终产品的整个生产过程。这个产业链主要分为以下几个环节: 1.原材料供应:半导体行业的基石是半导体材料,如硅片、化合物半导体等。这些材料需要…

搭建CIG容器重量级监控平台

CIG简介 CIG监控平台是基于CAdvisor、InfluxDB和Granfana构建的一个容器重量级监控系统,用于监控容器的各项性能指标,通过三者的结合,CIG监控平台可以实现对容器性能的全面监控和可视化展示,为容器的性能和运行状态提供了一个全面…

HTML5+CSS3+JS小实例:焦点图波浪切换动画特效

实例:焦点图波浪切换动画特效 技术栈:HTML+CSS+JS 字体图标库:Font Awesome 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name=&…

simulink同步机储能二次调频AGC,连续扰动负荷,储能抑制频率波动振荡震荡

若想观测二次调频性能&#xff0c;&#xff0c;切换为单一扰动即可&#xff0c;如下图所示。 AGC调速器都已经封装。后续也可加入风机光伏水电等资源。

【技术分享】ORACLE数据库相关操作

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502[欢迎关注微信公众号&#xff1a;厦门微思网络] -- 截断表 TRUNCATE TABLE TABLE_NAME; -- …

最新关于openai.APIConnectionError: Connection error.的解决方法

其实是和以前一样的处理方式&#xff0c;&#xff08;挂魔法&#xff09;修改代理&#xff0c;但是openai的源码改了&#xff0c;好多博客的方法不能用了。现在给一个新的修改方式&#xff0c;自己用的&#xff0c;发现可以。 1.找到pip下载的openai的Lib&#xff0c;找到_base…

01数仓平台 Hadoop介绍与安装

Hadoop概述 Hadoop 是数仓平台的核心组件。 在 Hadoop1.x 时代&#xff0c;Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源调度&#xff0c;耦合性较大。在 Hadoop2.x 时代&#xff0c;增加了 Yarn。Yarn 只负责资源的调度&#xff0c;MapReduce 只负责运算。Hadoop3.x 在…

区块链optimism主网节点搭建

文章目录 官方参考资料编译环境搭建编译Optimism Monorepo编译op-geth 执行下载数据快照生成op-geth和op-node通信密钥op-geth执行脚本 op-node执行脚本 启动日志op-gethop-node 本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。 官方参考资料 源码&#xff1…

【链表Linked List】力扣-114 二叉树展开为链表

目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应…

蓝桥杯每日一题2023.12.5

题目描述 1.一步之遥 - 蓝桥云课 (lanqiao.cn) 题目分析 对于本题遵循多了就减少了就加的原则&#xff0c;用while进行计算即可 #include<bits/stdc.h> using namespace std; int x, ans; int main() {while(x ! 1){if(x < 1)x 97;else x - 127;ans ;}cout <&…

2023母婴行业矩阵营销洞察报告

二胎政策以来新生儿数量不增反减&#xff0c;根据国家统计局公布的2022年出生人口相比2021年减少 108 万。 从我国母婴行业总体市场规模来看&#xff0c;市场增速在逐渐减缓&#xff0c;整体规模仍呈现平稳增长趋势&#xff0c;预计2023年母婴市场规模超5万亿。 母婴消费潜力正…

C语言之程序的组成和元素格式

目录 关键字 运算符 标识符 姓名和标识符 分隔符 常量和字符串常量 自由的书写格式 书写限制 连接相邻的字符串常量 缩进 本节我们来学习程序的各组成元素&#xff08;关键字、运算符等&#xff09;和格式相关的内容。 关键字 在C语言中&#xff0c;相if和else这样的标识…

【Git】ssh: connect to host github.com port 22: Connection refused

错误展示&#xff1a; 错误原因&#xff1a;22端口被拒绝访问 解决办法 在~/.ssh/config文件&#xff08;有就直接编辑&#xff0c;没有就创建&#xff09;里添加以下内容&#xff0c;这样ssh连接GitHub的时候就会使用443端口。 Host github.comHostname ssh.github.comPort…

CleanMyMac X软件到底好不好用?有哪些优势

为了维护mac系统健康&#xff0c;优化系统功能&#xff0c;我们需要定期给电脑进行清理。那么作为mac清理软件CleanMyMac X软件具备哪些独特性和实用性呢&#xff1f;今天就给大家说明一下。 1、 简洁大气的外观。 用户正版官方下载安装之后&#xff0c;软件运行仅需几秒&…

详解python 面向对象三大特征

文章目录 一、面向对象三大特征介绍1、封装&#xff08;隐藏&#xff09;2、继承3、多态 二、继承1、语法格式2、类成员的继承和重写3、super()获得父类定义4、设计模式\_工厂模式实现 5、设计模式\_单例模式实现关于Python技术储备一、Python所有方向的学习路线二、Python基础…

UE5 - 把ArchvizExplorer项目改造成自己的数字孪生项目 - 开发记要

参考&#xff1a; https://blog.csdn.net/qq_17523181/article/details/133853099 https://blog.csdn.net/qq_17523181/article/details/134455597 1. 安装项目 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-exp…

如何用好金鸣表格文字识别电脑客户端的“图片编辑”功能?

想要让文字识别效果更上一层楼&#xff0c;图片编辑处理少不了&#xff0c;今天就来教大家如何运用金鸣表格文字识别电脑客户端编辑器提升图片质量。 首先&#xff0c;点击顶部导航菜单中的“软件下载”&#xff0c;下载安装金鸣表格文字识别电脑客户端&#xff0c;并将图片添加…