
正文
Flutter和rn,flutter和rn哪个好
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
基于Weex的Flutter项目框架
最近在做的一个项目,项目的前期采用Weex开发。但是随着交互复杂度的增加,Weex一处开发多处多处运行的特征并没有很好的体现,相反很多时候我们还是需要做IOS和Android的适配。如今火热的Flutter相比Weex和Rn来说,给出了更好的跨平台解决方案。所以我们设计了一套基于Weex实现,底层跑在Flutter Engine上的框架。
底层的Runtime采用isolate engine,框架业务逻辑,Dom的解析逻辑和Render逻辑都跑在这里。
渲染引擎采用Flutter的Skia,彻底剥离了Android和IOS的差异性.
将Weex VirsualDom的解析都替换成Flutter Widget.
设计基于Weex2Dart的Brider,使JS和Dart可以相互调用
weex-demo的性能展示
release环境下采用AOT模式,性能会有质的飞跃。
Android-Release版本只有10m大小
相比Weex和Rn具有更好的性能,同时具有更好的跨平台性
相比Flutter,具有动态部署的能力(Flutter Release采用AoT模式并没有动态部署的能力,即使Debug版本也只是开发环境下才有动态化能力并没有可以实施项目的能力)
只需要会Weex开发或则Rn开发就可以,不需要额外学习Dart,已有的Weex项目可以无缝切换。
相关问答
Q1: 像美团外卖这样的APP用一种开发语言,能开发得出来吗?
像美团外卖这样的APP用一种开发语言,能开发得出来吗?答案是不能。
美团发展到现在可以说已经是一个【巨无霸】了,里面集成了很多很多功能,除了核心的外卖,还有 旅游 、 娱乐 、购物、出行,金融等等业务线,那么这么多复杂的业务根本不可能用同一种开发语言实现。
那么美团都用到哪些开发语言和技术了呢?下面就根据我的理解详细说一下。
前端是把产品的核心服务交给用户的呈现者,它的表述方式、展示形式以及交互逻辑都跟用户息息相关,都影响着用户使用产品的体验,也就是说直接影响产品的用户留存。
前端开发主要分为三大类型:Andriod、IOS和PC(H5) ,Android开发语言是Kotlin和Java,IOS开发语言是Object-c和Swift,PC(H5)开发语言就比较杂了,有JS、CSS、HTML,还有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。
关于后端的功能,这一点可以说是众说纷纭,主要需要考虑的是如何实现功能、数据的交互流程和存取、平台的稳定性与性能等。
那么后端都用到哪些开发语言和技术呢?
根据后端技术选型的标准,后端可选的开发语言和技术是非常多的。
比如Java体系的话,可以选用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;
比如Python体系的话,可以选用Django、Flask、Tarnado、Web2py等,中间件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python体系中;
当然还有PHP、C、Perl等开发语言。
综上所述,美团这个巨无霸公司,随着业务线的扩展用到的技术肯定会越来越多,而且越来越复杂,技术快速变革的时代,适者生存的竞争性也会越来越激烈。
俗话说:罗马不是一日建成的,任何事都不可能一蹴而就,包含技术。在以后的发展中美团也会逐步更新自己的技术和开发语言的。
至少三种语言。后端一种语言(比如Java丶Go丶Python丶PHP等),后端语言及生态比较成熟。下面重点聊前端App开发。
前台两种语言(Android和iOS是不同的开发环境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),称之为Native开发。
当然创业公司可以用一种前端语言写App前端,这样就不需要Android和苹果分两种语言写,写一次代码可以编译成Android和iOS的App,现在通行的方案有Vue之类的DOM渲染模式,以及ReactNative方案(RN)。性能上RN优于DOM渲染但低于用Native开发的App。所以美团这种公司,一定是Native方式写App,但RN是初创项目不错的选择。
与RN竞争的还有一种新贵flutter,是google推出来的,但设计原理与RN不同,性能方面优于RN,只是目前生态不够健全,国内有闲鱼app是采用此技术。未来可能会占一席之地。
最后,其实App开发已经是强努之末,我觉得主流应该是朝PWA和小程序方向发展。
你好,开发譬如美团这种APP,用一种语言是实现不了的,一个APP有安卓和苹果两个操作系统,开发能在安卓iOS端应用的APP主流的开发语言和技术是很多的,如后台有JAVA、C++、PHP、Python等多种开发语言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多种语言和框架。
一个APP的开发是需要前端技术和后台技术共同配合完成,这样的APP不论是功能还是性能都给用户很好的体验,单一开发语言毕竟技术支持有限,所以即使能开发出来,APP的用户体验也是不理想的。
一般APP有这几种开发组合模式:1、原生安卓iOS开发,前端:JAVA、kotlin、swift、object-c后台:JAVA、PHP、C++等后台技术,这种模式开发周期长,成本高,性能好;2、混合APP开发即hybrid app,前端以网页技术为主,穿插原生开发功能,兼具原生APP和web app的优点,如淘宝、微信等应用都是走的这个技术;3、web app,前端纯网页技术,后台为主流开发语言,这种模式开发速度快,成本低,界面体验可能弱一些。
可见开发一款APP大多数都是多种语言配合完成,谢谢阅读。
看完之前的评论,依然好奇为什么一个语言不能完全胜任。
前端跨平台的方案有react native,cordova,flutter等,如果需要兼容开发小程序,h5页面,可以采用taro来开发,一套代码,所有平台通吃。
后端的方案有服务端运行时nodejs,大数据背景下运用而生的数据库mobgodb,缓存解决方案redis,搜索工具elasticsearch,负载均衡ngix,基本上是需要什么就有什么
所以总结下来,一句话,一种语言可以实现类似美团这样的app和小程序。为什么美团使用的语言那么多,一大原因估计是美团app开发的早,当时前端技术不成熟,工具没现在这么多。
使用混合开发与C++ 进行跨平台开发,有好有坏。
C++ 进行跨平台开发
编写一次,随处运行。早在 2013 年,Dropbox 就采用上述策略进行移动开发,这背后的想法很简单:用 C++ 编写一次代码,而不是用 Java 和 Objective-C 编写两次。那时,整个移动工程团队相对还比较小,但需要支持快速增长的移动路线图。因此,公司希望找到一种方法,使这个小团队可以快速交付大量 Android 和 iOS 代码。
如今,Dropbox 完全放弃了这个策略,转而使用各个平台的原生语言(主要是 Swift 和 Kotlin ,这两种语言在刚开始制定移动策略时还不存在)。
Hybrid App混合开发
Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。Hybrid App兼具了Native App良好用户体验的优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。
目前已经有众多Hybrid App开发成功应用,比如美团、爱奇艺、支付宝等知名移动应用,都是采用Hybrid App开发模式。
移动应用开发的方式,目前主要有三种:
几种模似都可以开发出应用,小应用无所谓,但是大流量应用,对图形要求高的如 游戏 等原生开发的效果还是最好
支付宝打开很慢,就是因为采用混合开发,使用人多了不如原生开发
不行的哦。任何你看到的应用和网页,都需要多个语言开发的,大的分比如前端和后端,用的语言都是不一样的
Q2: Flutter跨平台框架(Dart语言)
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。(-中文网;-英文网)
Flutter是一种趋势,势必会取代RN,成为最主流的跨平台开发框架,基于Dart语言。ios开发必须Mac电脑。android开发window、linux、Mac均可。
Q3: Flutter之旅 02 - 创建第一个项目
Flutter项目可以用三种方式开发:
可以根据自己的需求选择,由于之前一直做iOS开发,也做过RN项目开发,Mac上装过Android Studio 和 其他安卓模拟器 Genymotion ,所以我选择Android Studio开发工具,之前装的版本 3.0.1 比较老了,所以进行了升级 3.4 。
体验Flutter
PS:第一次创建项目可以成功,之后再执行这一步操作创建新的Flutter项目时,一直卡住,重启过很多次Android Studio一直都是这样,后面查询资料,发现自己没有同意使用 android-licenses ,可以通过下列命令验证,第一步,先验证:
第一步检测结果,发现是需要同意 android-licenses :
第二步执行同意命令,操作时会有很多个 android-licenses 需要同意:
第二步检测结果:
第三步再次验证,当得到以下截图中结果时,代表所有环境配置已经完成:
上述命令创建一个Flutter项目,项目名为 myapp ,在项目目录中,有安卓和iOS两个项目目录。
Android Studio中会列出所有已经连接了电脑的设备,包括安卓和iPhone。如果想在模拟器上运行,下面可以选择对应的模拟器,如图:
PS:如果想在模拟器上运行,需要先安装一个模拟器,选择Tools AVD Manager,如图:
然后选择Create Virtual Device,根据提示一步一步操作即可(建议翻墙条件下操作),添加完成后就可以在这个界面看到自己已经添加的模拟器,点击绿色的运行按钮,即可打开该模拟器:
Q4: Archsummit 2019重磅分享|闲鱼Flutter&FaaS云端一体化架构
作者:闲鱼技术-国有
国有,闲鱼架构团队负责人。在7月13号落幕的2019年Archsummit峰会上就近一年来闲鱼在FlutterFaaS一体化项目上的 探索 和实践进行了分享。
随着无线,IoT的发展,5G的到来,移动研发越发向多端化发展。传统的基于Native+Web+服务端的开发方式,研发效率低下,显然已经无法适应发展需要。
我们希望 探索 闲鱼这样规模的独立APP的高效研发架构。主要思路是围绕Flutter解决多端问题,并使Flutter与FaaS等无服务容能力打通,形成云端一体化的研发能力,支持一云多端的发展需要。在某些场景已经取得效果,希望分享过程中的思考,与大家交流。
闲鱼选择Flutter主要是出于高性能的考虑。Flutter高性能主要来源于2个原因:
更多比较:
没有银弹的解决方案,Flutter与RN各有优点。如何选择因素很多,关键看如何取舍,举个例子:
云端技术栈的打通,是减少协同的不错的解法。以往前端+Node.js的一体化方案大家应该不会陌生,然而如果端侧使用了Flutter,那云侧Dart自然是第一选择。
FaaS的本质是运行在云端,那Dart适合用在云/Server上吗?
Dart语言早于Flutter,在最初的设计上,Dart就可以用于Web、Server。Dart具备一些服务端语言的特点:
闲鱼首先尝试将Dart作为普通的Server,替代传统的Java Server,然后再将Dart容器嵌入到FaaS容器中。建立Dart Server能力是第一步,也是主要的工作量所在。
闲鱼在Dart Server方面的建设思路:
开发期:
运行期:
上述内容实现了FlutterDart FaaS的技术栈的统一,但仅技术栈统一还远远不够,端、云的同学仍然无法真正互补和一体化打通,原因在于还有更多深入问题需要考虑:
面向这些问题,闲鱼的解法思路:
案例一,一体化在资源均衡方面的体现。在近期的一个项目中,云端一体化使原本2个月的项目时间,减少了20天。
案例二,一体化在业务闭环方面的体现。负责增长的一位开发同学,专注在增长业务上,在合适的情况下为合适的人投放合适的内容,以此带来用户的增长和活跃效果。一体化的方式下,可以统一云、端的切面,业务研发不再受云、端的限制。
一体化是建设高效研发框架的方向,并不是所有场景都需要一体化的开发,但一体化的Flutter、FaaS等技术组件,可以独立使用,也会带来效率提升,并且与原有的开发模式兼容。从一体化的思路去建设,可以使整体架构体系更加一致,也有机会做一体的架构沉淀。
未来闲鱼希望在一体化上做更多尝试和深入 探索 ,包括一体化工具、一体化业务平台、数据化智能化等方向。







