5G到来,App的未来,是JavaScript,Flutter还是Native ?
时间:2025-11-05 15:58:10 出处:应用开发阅读(143)
Native App
React Native(RN)发布于2015年,也是使用JavaScript语言进行跨平台APP的开发。与H5开发不同的是,它使用JS桥接技术在运行时编译成各个平台的Native代码,其使用的技术Facebook的Flux技术。

其特点是:
使用JavaScript语言,由于JS被广泛地使用,所以RN也很容易被接受。 RN依赖JS的运行时环境,也就是JS桥接技术。其使用Facebook的Flux架构。 RN仅提供了UI渲染和设备访问的API,很多功能必须依赖第三方库来实现对本地组件的使用。 生态目前比较完善,使用的公司也比较多,特别是对JS比较熟悉的同学容易上手。 支持热部署,开发过程中可以节约很多时间。高防服务器但是它也有缺点的:
它的渲染方式还是调用各个平台的原生控件,有时需要针对不同的平台做不同的优化。 其性能相对于H5有很大的提高,但是并没有解决,白屏,丢帧问题依然存在。 传统的原生APP开发模式,有IOS和AOS两大系统,需要各自语言开发各自APP。 目前也有很多跨平台应用使用React Native。它也是跟Flutter对比的主要对象。优点:其优点是目前的生态相对比较成熟
缺点:开发和发布成本高
举个栗子:网易管家APP (Tab1,Tab2)应用技术:Swift,OC,JAVA
WebApp
常被人提起的H5技术,其实就是网页+JavaScript。比如目前的云南idc服务商一些流行的JS框架Vue,React,AngularJS等都是为了构建网页。针对移动端构建出来的网页可以实现在跨平台的功能,但是其缺点也很明显:
渲染效率低下,用户体验差。很多H5在iOS平台表现尚可,但是在Android上特别是一些低端机上的表现确实让人不敢恭维。 网页调用设备硬件相关API比较困难,而且支持的功能较少,实现此类需求是H5的短板。 移动端的网站,常被称为H5应用,说白了就是特定运行在移动端浏览器上的网站应用。一般泛指 SPA(Single Page Application)模式开发出的网站,与MPA(Multi-page Application,再后面做介绍)对应。优点 :开发和发布成本很低
缺点 :性能和体验不能讲是企商汇最差的,但也受到浏览器处理能力的限制,多次下载同样会占用用户一定的流量
举个栗子:网易管家APP(Tab3)应用技术:ReactJS,RegularJS等
Hybrid App
混合模式移动应用,介于web-app、native-app这两者之间的app,兼具“Native App良好交互体验的优势”和“Web App跨平台 开发的优势”(百度百科解释) 主要的原理是,由Native通过JSBridge等方法提供统一的API,然后用HTML+CSS实现界面,JS来写逻辑,调用API,最终的页面在webview中显示,这种模式下,Android、iOS的API一般有一致性,Hybrid App所有有跨平台效果。
优点: 开发和发布都比较方便,效率介于Native App、Web App之间
缺点: 学习范围较广,需要原生配合
举个栗子:网易云音乐,我爱我家App应用技术:PhoneGap,AppCan,Wex5
React Native App
Facebook发现Hybrid App存在很多缺陷和不足,于是发起开源的一套新的APP开发方案RN App。。使用JSX语言写原生界面,
js通过JSBridge调用原生API渲染UI交互通信。
优点:效率体验接近Native App,发布和开发成本低于Native App
缺点: 学习有一定成本,且文档较少,免不了踩坑
举个栗子:youtube、discord、QQ、百度等等WEEX App
阿里巴巴开发团队在RN的成功案例上,重新设计出的一套开发模式,站在了巨人肩膀上并有淘宝团队项目做养料,广受关注,
2016年4月正式开源,并在v2.0版本官方支持Vue.js,与RN分庭抗礼。
优点:开发效率和体验上跟RN不相上下,并且跨平台性更强
缺点:刚刚起步,社区没有RN活跃
举个栗子:淘宝、天猫、饿了么等 Flutter 咸鱼正在使用 , 而且他们也推荐大家尝试新技术 来自谷歌,不过貌似国内岗位少,有人说写这个35岁后可以出国。(我等将信将疑)Flutter介绍
Flutter是Google推出的开源移动应用开发框架。开发者可以通过开发一套代码同时运行在iOS和Android平台。
它使用Dart语言进行开发,并且最终编译成各个平台的Native代码,这样既保证了开发效率,也保证了各个平台的运行效率。其相当于从头到尾重写了一套UI框架,不依赖具体平台的组件。其所有的组件都是"Widget"。渲染引擎则依靠高效渲染库Skia实现。
Flutter也看到了目前的跨平台解决方案有缺点,所以它借鉴了React Native的一些思想,做出了很大的优化。它将代码编译成原生代码,并且直接在各个平台中使用其高效渲染引擎Skia进行渲染,没有桥接,不调用平台相关控件。
这种设计思想解决了不同平台的性能问题。
归功于其设计思想,我们可以真正实现一套代码,运行不同的平台。在其推出之后,关注的开发者数量和相关的教程的增长速度远超当时的React Native。
其特点包括:
使用Google自主开发的Dart语言。Dart语言是一个强类型的语言,很好地支持面向对象,并且易于学习和使用。 使用谷歌自己的Skia渲染引擎,Android自带Skia引擎,iOS平台上Flutter也会把Skia引擎打包到APP中,实现高效渲染。 目前有非常丰富的视图组件,可以点击这里查看其组件目录,包括Android上常用的材料设计(Material Design)的UI风格,和iOS风格(Cupertino)。由于其渲染不依赖各平台相关组件,所以运行在不同平台上的效果是一致的。同样支持热部署,开发时可以像网页开发一样实时看到效果。
目前它存在的一些问题是:
国内学习资源目前并不丰富,使用Flutter的公司也比较少。 相关的生态还没有React Native那样丰富,但是其发展速度大大超过了React Native。总结
运用于跨平台开发的语言还有很多,如PWA,Uni App等。个人看来,Flutter有发展潜力,虽然Flutter目前并不是非常流行,但是笔者相信它是跨平台解决方案的未来。如果谷歌的新系统Fuchsia OS能像当今的Android这样如日中天,甚至替代掉Android的话,Flutter的发展也会迎来它的顶峰。
如果你想做一个企业名片之类的东西,让更多人知道自家产品,那也许一个网站就够了;但如果产品核心功能只有native app才能提供,或者你想要确保用户有更好的体验、更强的黏性,那可能就需要做native app。
猜你喜欢
- 南坪万达广场魅族维修中心的服务质量如何?(南坪万达广场魅族维修中心值得信赖吗?)
- 域名为什么有需要升级呢?升级的域名又有哪些好处呢?
- 你知道 Redis 使用的什么协议吗?
- com域名为什么那么火?
- There are many ways to control brightness. According to this discussion[1] and this wiki page [2], the control method could be divided into these categories: brightness is controlled by vendor specified hotkey. And there is no interface for OS to adjust brightness. brightness could be controlled by ACPI ACPIIt is often possible to adjust the backlight by ACPI. This controls the actual LEDs or cathodes of the screen. When this ACPI option is available, the illumination is controllable using a GUI slider in the Display/Screen system settings or by simple commands on the CLI. Different cards might manage this differently. Check /sys/class/backlight to find out: # ls /sys/class/backlight/intel_backlight The directory contains the following files and folders: actual_brightness brightness max_brightness subsystem/ uevent # cat /sys/class/backlight/acpi_video0/max_brightness # echo 5 >/sys/class/backlight/acpi_video0/brightness acpi_osi=Linux acpi_backlight=vendor acpi_osi=Linux acpi_backlight=legacy 看了这个之后,很显然,问题就在于acpi_backlight=vendor will prefer vendor specific driver (e.g. thinkpad_acpi, sony_acpi, etc.) instead of the ACPI video.ko driver. 本文来源:博客园 作者:浮沉雄鹰
- 大厂都这样使用MySQL8进行条件查询
- 面试命中率90%的点:MySQL锁
- 对标微软 SQL Server,AWS 计划开源 Babelfish 数据库产品
- 4s升级9系统(了解4s升级至iOS9系统的关键优势与新特性)