android界面实现框架内页面跳转_移动端跨平台开发的框架对比

9fc9a541fbfc6f90e56f8be402eda715.png

在《 移动端跨平台开发的深度解析 》一文中,我们主要针对 React Native 、Weex  和 Flutter 的原理与特性进行了一个深度的解析。 这篇文章我们主要就各个方面对这三个框架对一个对比,同时分析一下三个框架未来的发展趋势。   对比 我们先通过一个表格来看一下三者之间的一个大致对比:

c1f55dbb2b2d085be1ef29964a7c406b.png

大小

上面 Apk 大小是通过 react-native init 、weex create 和 flutter 创建出的工程后,直接不添加任何代码,打包出来的 release 签名 apk 大小。从下图可以看出,其中大比例都是在 so 库。

4c74040a672160021f96e8ce61734586.png

社群 React Native 作为 Facebook 主力开源项目之一,如今已有各类丰富的第三方库, 甚至如realm 、lottie 等开源项目也有 React Native 相关的版本,社群实际无需质疑。当然,因为并完全正统开发平台,第三库的健壮性和兼容性有时候总是良莠不齐。 Weex 其实有种生错在国内的感觉。其实 Weex 的设计和理念都很优秀,性能也不错,但是对比 React Native 的第三方支持,就显得有点后妈养的。 2016 年开源至今,社区和各类文档都显得有点疲弱,作为跨平台开发人员,很多时候肯定不会希望,需要频繁的自己增加原生功能支持,因为这样的工作一 多,反而会与跨平台开发的理念背道而驰,带来开发成本被维护难度增加。 Flutter 虽然发布不久,但是谷歌的号召力一直很可观,这一点无需质疑。性能理论上 Flutter 的性能应该是最好的,但是目前实际体验中,却并没有感受出来太大的差距,和 React Native ( 0.5.0 之后)、 Weex 在性能上个人体验差异不是很大。当然,这里并没有实测渲染的毫秒时间和帧率数据。 其他区别
  • Weex 的多口页面实现问题

Weex 在 native 端是不支持 的 ,这一点和 React Native 不同在于, 如果在native 需要实现页面跳转,使用 vue-router 将会惨不忍睹:返回后页面不做特别处理时,是会空白一片。native端采用weex. requireModule('navigator') 跳转 Activity 是才正确实现。 同时,Weex 中 navigator 跳转的设计,也导致了多口页面的页面间通讯的差异。 Weex 在多口页面下的数据通讯,是通过url 实现的 ,比如file://assets/dist/SecondPage.js?params=0, 而vuex 和 vue-router 在跨页面是无法共用的;React Native 在跨 Actvity 使用时,因为是同一个 bundle 文件,只要 manager 相同,那么 router 和 store 时可以照样使用的, 数据通信方式也和单个 Actvity 没区别。
  • 项目模板

Weex 和 React Native 模板代码模式也不同。Weex 的模板是从 cordova 模式修改过来的,根据platform 需求,用命令添加固定模块,而在.gitignore 对 platforms 文件夹是忽略跟踪。React Native 在项目创建时模版就存在了,特别是添加第三方插件原生端支持时,会直接修改模板代码, git 代码中也会添加跟踪修改。   未来趋势 我们选择框架的时候,很多时候会关注框架的成熟度和生命力。   React Native “ Airbnb 宣布放弃使用 React Native ,回归使用原生技术” :Airbnb 作为 React Native 平台上最大的支持者之一, 其开源的 lottie 同样是支持原生和 React Native 。 Airbnb 在宣布放弃的文中,也对 React Native 表示了大量的肯定。而使得他们放弃的理由,其实主要还是集中于项目庞大之后的维护困难,第三方库的良莠不齐,兼容上需要耗费更多的精力导致放弃。

3afa5606493ec7f610aa590dd95a2353.png

Facebook 正在重构 React Native ,将重写大量底层。在经历了开源协议风波后,可以看出 Facebook对于 React Native 还是很看重的, 这些底层重构优化的地方,主要集中于: 首先,改变线程模型。UI 更新不再需要在三个不同的线程上执行,而是可以在任意线程上同步调用JavaScript进行优先更新,同时将低优先级工作推出主线程,以便保持对 UI  的响应。 其次,将异步渲染功能引入 React Native 中,允许执行多个渲染并简化异步数据处理。最后,简化桥接,让它更快、更轻量。原生和 JavaScript 之间的直接调用效率更高,并且可以更轻松地构建调试工具,如跨语言堆栈跟踪。   Weex Weex 没有死!阿里公开 Weex 技术架构,还开源了一大波组件。2018 年初的新闻可以看出, Weex 的遭遇有点类似曾经的 Duddo ( Dubbo 因为内部竞争被阿里曾一度放弃维护),这波诈尸后 Weex 被托管到了 Apache ,而 github 的 weexteam 如今也还保持着更新,希望后续能有多好的发展,拭目以待吧。   Flutter Flutter是Google跨平台移动 UI 框架 ,Dart作为谷歌的亲儿子在 Flutter中使用,并且谷歌新操作系统 Fuchsia 支持 Dart ,使用 Flutter 作为操作 UI 框架。这些集合到一起难免让你怀疑 Android 是否要被谷歌抛弃的想法。 或者如今先 Android 等平台上推广 Flutter 与 Dart ,就是为了以后更好的过渡到新系统上,毕竟开发者是操作系统的生命源泉之一。而 Java 与 JVM 或者可以被谷歌完全抛开。   Swi!UI 2019 年 WWDC 大会上,苹果在压轴环节向大众宣布了基于 Swi! 语言构建的全新 UI 框架 ——Swi!UI 。开发者可通过它快速为所有的 Apple 平台创建美观、动态的应用程序。 据官方介绍, Swi!UI 是一个创新且非常方便使用的框架,开发者通过 Swi! 语言的强大功能即可为苹果的所有硬件设备构建用户界面 —— 只需使用一套工具和 API 。 此外, Swi!UI 使用了声明式的 Swi! 语法,可读性比较高,编写起来也比较容易理解。 S wi!UI 可与新的 Xcode 设计工具无缝协作,让代码和设计 完美同步,还提供对动态类型、暗黑模式、本地化和可访问性的自动支持。 鉴于苹果公司的强大影响力, Swi!UI 未来的发展还是可以期待一下的。 今天沃师傅的知识小课堂就到这里,朋友们,下次见~ 7d6f66db8dbefa56e9e0129e3899298a.png

7de66aa08e5cdfa176b50f8581411562.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值