·

前端跨平台开发框架对比:Flutter vs Tauri vs React Native

Published at 2025-03-18 03:59:21Viewed 105 times
Please reprint with source link

传统移动端开发往往需要同时兼顾Android和IOS的开发,而桌面端开发又需要同时兼顾Windows、MacOS、Linux系统。如果你想要全平台覆盖,不仅意味着要同时维护多套完全不同的代码(极大提高了维护成本),并且代码和逻辑还可能不能复用,这意味着高昂的开发成本(极低开发效率),每个平台都得从零开始写。现在国内还多出个鸿蒙系统,这意味着你要同时开发和维护更多套代码,哪怕补贴钱,这成本也不是小企业能够负担得起的。

于是,跨平台框架应运而生,Facebook开源的React Native,曾经是最流行的框架,不过近几年被Flutter超越。它不仅能让你使用React语言同时开发Android和IOS APP,甚至还能进行Windows桌面端开发。而谷歌开源的Flutter,是目前最流行的跨平台框架,略微领先React Native。它能让你使用dart语言开发移动端与桌面端应用。而Tauri则允许你使用任何前端框架进行全平台开发,不过也需要你懂得一些Rust语言。

我们先从开发体验出发来对比这三个跨平台框架。

首先,React Native能够让你完全用JSX语言来进行跨平台开发,这对于本身熟悉Web技术的Web开发者而言无疑是非常好的。这意味着他们不需要多余学习太多东西即可直接上手。不过React Native虽然前面带个React,却跟Web端React本身有很多不一样的地方(见 给Web开发者写的React Native简介,React Native与React的区别与对比(1)),因此同样需要开发者去适应。

而Flutter对于Web开发者而言就没那么好上手了,它需要开发者掌握dart语言进行开发。dart语言跟JavaScript有很大不同,这会让Web开发者觉得“反人类”设计。不过dart的语法跟Java或者Swift有点像,对于Android或者IOS开发者而言,Flutter或许倒没那么难上手。

最后Tauri可以说是对Web开发者最友好的跨平台框架了,它允许你使用任何前端框架进行开发。不过想要开发完整的应用,你免不了得懂一些Rust,毕竟Tauri其实就是个Rust GUI框架。而Rust对于新人而言,学起来可比学C++要难一些。

接着从性能出发(不准确),React Native会将所有代码编译成原生组件,生成UI画面则是通过原生的渲染,性能上比较接近原生应用。而Flutter则不使用原生的渲染模式,它自己在不同平台使用不同方法实现画面的渲染,性能方面比React Native稍好。最后Tauri通过调用各个平台的WebView来渲染画面,底层使用Rust来进行WebView与OS系统的通信,性能似乎比Flutter和React Native差一些。更细节、更准确的对比网上已经有许多了,我就不过多评价了毕竟性能这方面我也不太懂。

最后从生态出发,React Native许多功能的实现非常依赖于社区的第三方库,而有很多库已经没人维护了。Flutter据说也好不到哪里去,但根据我自己的搜索,像渲染HTML、富文本编辑器、渲染数学公式,以及微信、支付宝接口,这些功能Flutter的支持似乎比React Native的要好,故而从整体上而言,Flutter的生态比React Native的要好,这也意味着在React Native想要实现相同的功能,可能要耗费更多时间。而Tauri呢能够完全使用整个Web端的生态,前端方面自然不用多说,主要是Rust的生态还是太不成熟了,有些Rust库早已过时但也没人维护,这就导致有些Tauri的插件用不了,因此你可能会在Rust方面耗费大量时间。

总之,移动端方面React Native、Flutter、Tauri各有优劣,对于熟悉Web技术的开发者而言,React Native可能是最好的选择,Tauri次之。但从整体出发,Flutter可能是最好的选择,React Native次之。

0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

中国当前的教育最缺少什么?

在我看来,目前国内教育最大的问题之一,就是不告诉学生这个社会残酷的真相,只会不断给学生灌输好好读书,以后勤奋工作才能出人头地、赚钱的错误观念。这导致大学里一个非常奇怪的现象,很多人明明没有赚钱的本事,却拿着父母赚的辛苦钱无所事事,在学校享受人生,俨然一副天堂的样子。因为到了大学,好好读书这个意念也随着高考结束而逐渐淡化,没有人再管你的学习,你只需要期末考试及格,干啥都可以,甚至不及格还能补考。然而殊不知这样的学生出来以后,大概率很快会被社会毒打。被当成螺丝钉是小事,最怕的是连当螺丝钉的资格都没有。目前国内教育的目的就是为了产生好的螺丝钉。但是讽刺的是,学校即便连螺丝钉都不能好好培养出来。因为学校教育与社会现实严重脱轨,以计算机编程类的课程为例,很多课里面的内容还停留在十几年前,完全没有与时俱进,也没考虑生产实际。这也意味着,在学校哪怕你认真上好每一节,学好所有的知识,也并不能在社会的竞争中脱颖而出,你必须自学加量,疯狂内卷,在自我内耗中度过。学校只是个没有感情的流水线工厂,只会机械性的给你灌输教材的内容,不会教你如何赚钱、如何社交、如何对待感情等等更加重要的问题,最后导致很多人遇到感情 ...

是否存在人类大脑永远无法理解的数学结构?

是否存在人类大脑永远无法理解的数学结构?答案是存在也不存在。这个问题重点在于“理解”这个词,怎么样才算是理解?本文中,我们就将理解分为直观理解和抽象理解吧。所谓直观理解,指的是能够通过五官直接感受到。基于这个定义,数学从线性代数中最基础的n维线性空间开始,就不是人脑能够直观理解的了,毕竟人脑只能理解四维以下的空间,即只能理解三维的空间,不能理解处在第四维度的时间。到目前为止,四维时空是否存在都还存在争议,因为并没有直接证据表明四维时空真实存在。因此,从物理世界来看,人脑从四维线性空间开始就无法直观理解了。抛开四维空间是否真实存在的物理争议,考虑纯粹数学上的定义,四维空间是存在的。那么有可能通过作图的方式来直观理解高维空间呢?不能。那些所谓画出四维及以上空间的图,其实是通过投影等方法实现降维,将高维空间的东西通过三维的形式表现出来,并不是真正的高维空间。既然存在那么多大脑无法理解的数学结构,这时数学就派上用场了。数学正是人类用于理解人脑无法直观理解的工具,因为人脑有个很强大的功能——抽象化,既然你无法想象、也无法理解,那干脆就将它抽象化为一个数学对象来研究,即抽象理解。人类对于高维空间的 ...

数学与物理公式可以精准简洁地描述自然现象,究竟是世界本就如此巧妙,还是科学家努力简化后的结果?

这个问题有点像数学究竟是人发明的,还是人发现的?每个人基于不同理念、哲学观,会有不同的答案。而如今这个问题,可以引申出几个类似的问题。世界的底层运行规律究竟是复杂的,还是简洁的?物理定律究竟是真理,还是人类为解释宇宙而创造的?(类似于数学是否人造?)数学定理或者物理定律是绝对真理吗?或者说存在绝对真理的数学定理或者物理定律吗?这些问题都涉及到一种哲学观,没有标准答案,只是你观念的不同。回到这个问题,我是持爱因斯坦的那种观点,认为宇宙能够由简洁而优美的数学所描述,因为宇宙的底层规律本身就是足够简单的,只是人类未曾发现。换句话说,这就有点像线性空间的基底一样,只需要几条简单的定律,就可以通过线性组合,不断复杂化,最终产生如今的宇宙。这里又涉及到一个问题,即这个线性空间到底是有限维的,还是无穷维的?不过基于世界本质的简单性,从审美角度出发,我更倾向于假设这个线性空间是有限维的。因此,从这个角度看,如果数学或物理公式不够简洁和美妙,那么其本身所蕴含的奥秘也就越浅显,并且距离世界的本质就更远,即引用高斯的话“距离神更远”。故而简洁的数学或物理公式,更多的是科学家们发现的结果,是自然的,而不是刻意 ...

国内曾经出现过很多的数学论坛,但是为什么如今大多数都访问不了了?

今天我在知乎宣传弦圈的时候,回答了一个问题有哪些数学论坛值得推荐?,结果发现有好几个回答里的数学网站已经访问不了了。这些回答里的几乎所有数学网站,我都未曾听说过(正如弦圈很多人不知道一样),这证明国内曾经也出现过很多数学论坛,有些或许曾经也辉煌过,但是最后都坚持不下去了。我做数学的时候,用的数学论坛基本上都是国外的MathStackExchange和Mathoverflow,知乎也很少用。可以说国内目前除了知乎,就没有高人气的数学论坛。毕竟本来纯数学就是一种非常小众的文化,而数学这种严肃的内容,也注定不会有高活跃、高互动的用户。因此可以看到很多国内的数学网站都已经不能访问了,有些还“活”着的,其实也是半死不活,空有用户量,但活跃度却低得可怜。而知乎的数学也早就变味了,彻底娱乐化了,真正有营养的内容已经没多少,真正有实力的大佬也相继退乎,回答都删得干干净净的。似乎中文互联网中已经没有太多数学文化的栖息之地了。国外虽然也好不到哪里去,但却跟国内天差地别,最大的MathStackExchange和Mathoverflow两个数学论坛,虽然也是不能盈利,纯粹靠捐赠维持生计,但是却能保持纯粹的数 ...

前端跨平台开发框架对比:Flutter vs Tauri vs React Native

传统移动端开发往往需要同时兼顾Android和IOS的开发,而桌面端开发又需要同时兼顾Windows、MacOS、Linux系统。如果你想要全平台覆盖,不仅意味着要同时维护多套完全不同的代码(极大提高了维护成本),并且代码和逻辑还可能不能复用,这意味着高昂的开发成本(极低开发效率),每个平台都得从零开始写。现在国内还多出个鸿蒙系统,这意味着你要同时开发和维护更多套代码,哪怕补贴钱,这成本也不是小企业能够负担得起的。于是,跨平台框架应运而生,Facebook开源的React Native,曾经是最流行的框架,不过近几年被Flutter超越。它不仅能让你使用React语言同时开发Android和IOS APP,甚至还能进行Windows桌面端开发。而谷歌开源的Flutter,是目前最流行的跨平台框架,略微领先React Native。它能让你使用dart语言开发移动端与桌面端应用。而Tauri则允许你使用任何前端框架进行全平台开发,不过也需要你懂得一些Rust语言。我们先从开发体验出发来对比这三个跨平台框架。首先,React Native能够让你完全用JSX语言来进行跨平台开发,这对于本身 ...

给Web开发者写的React Native简介,React Native与React的区别与对比(2)

本文我们继续之前的话题给Web开发者写的React Native简介,React Native与React的区别与对比(1),在上文中我们讲到在React Native想要写<p>或者<span>需要用Text组件。除了展示文本,还有一个很重要的东西就是展示图片。在React Native中你无法使用HTML的<img>,而要用React Native提供的Image组件。处理图片可以说是React Native中的一个难点,因为在React Native中无论是什么图片都需要你设置一个宽度和高度,见实例:import React from 'react'; import {Image} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const DisplayAnImage = () => ( <SafeAreaProvider> <SafeAreaView s ...

弦圈登录功能完成更新,之后只要登录一次便可长期保持登录

原标题:弦圈登录功能完成更新,之后只要登录一次便可长期保持登录。目前该功能仍在测试阶段不稳定,如果发现有登录后掉线问题,可以试试清空cookie。这几天,我对弦圈的登录功能进行了更新,换了目前最新的OAuth2技术,取代以前的session登录。基于OAuth2的登录功能有很多好处,首先第一个就是能够长时间的保持登录状态,现在大家上网,无论是哪个平台,你都会发现自己只要登录一次,哪怕过了很久再打开,仍然是登录状态。第二个好处就是,token是无状态的,因此会占用更少的服务器资源,这意味着弦圈负荷更小、访问更顺畅。旧登录功能基于session是有状态的,如果人多起来,服务器负荷直线上升,这或许也是之前卡的原因之一吧。由于我是第一次在Web端使用OAuth2实现登录功能,因此刚开始更新的时候,网站还是有很多bug。比如说最大的一个bug就是,关闭浏览器后重新打开,需要重新登录,这显然问题很大。而这个bug今天经过我整整一天的艰难调试,终于是修好了。别小看一个简单的登录功能,尤其是OAuth2,前后端实现真的挺复杂。最后虽然网站代码已经更新好了,但是用户浏览器里的cookie是不会因此自动删 ...

给Web开发者写的React Native简介,React Native与React的区别与对比(1)

React Native是React下的一个跨平台框架,能让你用熟悉的React JSX语法来进行跨平台开发。所谓的跨平台开发是如今的一种趋势,即用同一种语言来同时进行Web端、手机端安卓与IOS、桌面端Windows、MacOS、Linux的开发。这样不仅能极大的提高开发效率,同时大大增加了代码的可维护性,节省了大量的成本。然而React Native虽然带个React,用的也是JSX语言,却跟React有很多不一样的地方。因为React Native不仅面向网页端,还面向手机端APP,而React Native的代码会直接编译为native原生代码。在本文中,我将会列举说明几个React Native的不同之处。首先,在React Native中我们不能像React那样直接使用HTML语言,因为无论是Android还是IOS,都无法编译HTML语言。因此,我们需要使用React Native提供的组件。在React Native中,如果你想要写<div>,则需要换成<View>。View组件在Web端会被编译成<div>,而在Android和IO ...

React Native UI库介绍与对比

React Native的生态与React.js相比,没那么丰富,或者说手机端的生态本身就跟Web端相差甚远。React.js作为Web端虽然生态丰富,但由于其JS库大多数都不能直接用在React native中,因此很多在Web端存在诸多解决方案的问题,如代码块高亮、渲染数学公式,在手机端都难找到合适的办法。React Native的UI库,其实可以选择的并不多,不像Web端百花齐放,选个UI库都能选择困难症。在本文,我将会介绍几个我所知道的React native UI库,其中有几个我是用过的。1. React Native Paper这是一个Material Design风格的UI库,在GitHub拥有13.4k个stars,官方文档👉React Native Paper。该库安装步骤简单,组件使用以及自定义也容易,唯一的缺点就是组件不够多,有些场景需要你另外补充其他库来满足需求。React Native Paper应该是React native唯一一个Material Design UI库,该库能够跟React native navigation整合,构建Material风格的 ...

FAILED

🇪🇸 3.2 托莱多

心心念念的​西哥特和卡斯蒂利亚莱昂王都,西班牙刀匠村,又一个魂牵梦绕之地,终于朝圣成功了😭刻有前朝哈布斯堡家徽的城门,曾经圣殿骑士的城堡,宏伟的哥特式大教堂,穆斯林统治时期建造的围墙,满大街的刀剑铺(实际商业化严重,都是义乌制造),无不彰显中世纪遗风。也去了早有耳闻的宗教裁判所博物馆,看到了传说中的铁处女和西班牙绞刑架,美中不足就是托莱多城堡正在整修无法入内,最后带了一把navaja走意思一下虽然最后发现是madeinchina😓只能说曾经以精美的手工刀剑和优质托莱多钢材闻名天下的托莱多如今沦落到商业化如此严重的地步也是让人唏嘘不已

FAILED

🇪🇸 3.3 阿维拉

​宛如异世界城镇般的城市,中世纪时期的巨大的围墙将整个旧城区彻底包围,竟然没有经过火药的洗礼,一直保存至今。尖顶城垛却有着半圆形的塔楼,很明显是融合了穆斯林世界和基督教王国的风格,印证了阿维拉在再征服运动中的战略地位。不知道巨人里的玛利亚之墙灵感会不会是来自这里()没有过度的商业化和游客旅行团,所有的古迹都显得如此纯粹。以及三月正是赏樱的季节,没想到在西班牙也能欣赏到灿烂绽放的樱花,这几天在卡斯蒂利亚拉曼查的赏樱体验也是十分独特,比起虽然是漫山遍野但却人山人海的樱花园,我更喜欢一个人独自欣赏公路旁孤芳自赏无人问津的野樱。具有东方色彩的樱花竟然能与西式的城墙塔楼同框,有一说一确实有种奇妙的违和感()不过说起来不知道什么时候能有机会在樱花祭再去一次日本呢😭

由于备案需要,xianquan.net暂时关闭,原地址manitori.xyz可正常访问。由于苹果开发者账号费用过高,弦圈APP IOS版暂不支持。

这几天,我在给弦圈新域名xianquan.net以及弦圈APP备案,其中域名备案为了让管局通过,需要我暂时关闭掉xianquan.net,多有不便尽请谅解。弦圈的原地址manitori.xyz不受影响,可正常访问,然后未来manitori.xyz是不会丢弃的(见弦圈更换新网址xianquan.net,原地址manitori.xyz保留)。接着,这几天我原本打算把弦圈APP IOS版也给上线了,可惜苹果太吸血了,每年费用比微信还得高一半。因此我决定暂时只支持弦圈APP安卓版,IOS版等以后再说吧,虽然代码写了,但是无法打包IPA文件,而且就算打包完成也无法安装到苹果手机。最后不得不说,目前访问弦圈还是有点卡,虽然之前已经优化过了(最近有人反馈网站卡、打不开,我自己也试过这种情况,已再次对弦圈进行优化),但人多了还是会明星感觉到卡。原因目前也基本确定,之后我会再次更换并升级服务器,而更换服务器就需要迁移数据,迁移数据过程需要关停服务器。为了将影响降到最低,我选择关闭服务器在晚上进行,错开访问高峰。