您好,欢迎访问一九零五行业门户网

flutter会取代rn吗

如果你想了解更多知识,可以点击:常见问题
flutter会取代rn吗?这是很多网友问到的问题,但是我想说的是,任何一项技术都有它的优点,缺点,没有什么替代一说,只有它适不适合你。
flutter
flutter是谷歌的移动ui框架,可以快速在ios和android上构建高质量的原生用户界面。 flutter可以与现有的代码一起工作。在全世界,flutter正在被越来越多的开发者和组织使用,并且flutter是完全免费、开源的。
flutter 是由 google 的工程师团队打造的,用于创建高性能、跨平台的移动应用的框架。
flutter 针对当下以及未来的移动设备进行优化,专注于 android and ios 低延迟的输入和高帧率
flutter的设计跟react-native很像,但是比rn进了一步
flutter的开发语言是dart
移动端跨平台开发技术演进
现在主流的移动开发平台是android和ios,之前还有过windows phone。从最开始的hybrid混合开发技术,到rn的桥接技术,到现在新兴的flutter技术,跨平台开发技术一直在演进。
跨平台开发第一个考虑的就是性能问题
rn的效率由于是将view编译成了原生view,所以效率上要比基于cordova的html5高很多,但是它也有效率问题,rn的渲染机制是基于前端框架的考虑,复杂的ui渲染是需要依赖多个view叠加.比如我们渲染一个复杂的listview,每一个小的控件,都是一个native的view,然后相互组合叠加.想想此时如果我们的list再需要滑动刷新,会有多少个对象需要渲染.所以也就有了前面所说的rn的列表方案不友好;
flutter 吸收了前两者的教训之后,在渲染技术上,选择了自己实现(gdi),由于有更好的可控性,使用了新的语言dart,避免了rn的那种通过桥接器与javascript通讯导致效率低下的问题,所以在性能方面比rn更高一筹;有经验的开发者可以打开android手机开发者选项里面的显示边界布局,发现flutter的布局是一个整体.说明flutter的渲染没用使用原生控件进行渲染
react-native框架原理图
flutter实现跨平台采用了更为彻底的方案。它既没有采用webview也没有采用javascriptcore,而是自己实现了一台ui框架,然后直接系统更底层渲染系统上画ui。所以它采用的开发语言不是js,而dart。据称dart语言可以编译成原生代码,直接跟原生通信。
flutter框架原理图
flutter将ui组件和渲染器从平台移动到应用程序中,这使得它们可以自定义和可扩展。flutter唯一要求系统提供的是canvas,以便定制的ui组件可以出现在设备的屏幕上,以及访问事件(触摸,定时器等)和服务(位置、相机等)。这是flutter可以做到跨平台而且高效的关键。另外flutter学习了rn的ui编程方式,引入了状态机,更新ui时只更新最小改变区域。
系统的ui框架可以取代,但是系统提供的一些服务是无法取代的。flutter在跟系统service通信方式,采用的是一种类似插件式的方式,或者有点像远程过程调用rpc方式。这种方式据说也要比rn的桥接方式高效。
flutter与rn异同
●flutter性能会更好无线接近原生的体验,dart是aot编译的,编译成快速、可预测的本地代码
●rn采用js语言开发,基于react,对前端工程师更友好。dart语言受众小
●flutter自己实现了一套ui框架,丢弃了原生的ui框架。而rn还是可以自己利用原生框架,两个各有好处。flutter的兼容性高,rn可以利用原生已有的优秀ui
●rn的布局更像css,而flutter的布局更像native布局,但是去掉xml通过代码直接写需要适应下
●flutter的第三方库还很少,rn发展的早,虽然也还不完善,flutter github还有3000多个issues要解决,还有很长的路要走。
没有更好只有更合适你的框架
以上就是flutter会取代rn吗的详细内容。
其它类似信息

推荐信息