当前位置: 首页 > news >正文

flutter在2019年会有怎样的表现?

为什么80%的码农都做不了架构师?>>>   hot3.png

Flutter的趋势

  • 在移动端,受成本和效率的驱使,跨平台一站式开发慢慢成为一个趋势。从Hybird,RN,WEEX,Flutter,到各种小程序或快应用的大量涌现,虽然很多跨平台方案都有各自的优缺点,目前还没有完美无缺的终极方案,但这已是未来移动端开发不可逆转的一大方向。而Google推出并开源的移动应用开发框架Flutter,更是其中的明星。
  • 笔者从自身在做Flutter相关的分享中,特别强烈的感受是,有非常非常多的Native技术栈的同学在学习和使用Flutter,有非常多的前端技术栈的同学在时刻关注Flutter的hummingbird和desktop-embedding的进展。尤其自Flutter1.0 发布后,Flutter受到了业界更多的关注和期待。

跨平台解决方案比较

  • 目前几个主流的跨平台解决方案:
  1. 基于浏览器技术的Hybird
  2. 基于桥接Native组件,如RN、WEEX
  3. 基于底层统一渲染,如Flutter
  • 它们有各种的优缺点,但浏览器技术无疑是其中的历史最长、标准最完善、用户最多、生态最丰富的。RN、WEEX也可以归类为javascript生态的一个小分支。
    而Flutter走的是和前两者截然不同的路线,它是一个新兴的挑战者,通过底层统一渲染,得到高度一致的跨端效果;通过引入dart,得到AOT的接近原生的性能,和JIT的快速开发体验;通过上层完善的组件体系(material design & cupertino),得到高保真的UI体验。但它也并非尽善尽美。同时基于底层统一渲染的跨平台方案有很多,在移动端有实际应用的如QT、cocos2d等。
  • 对比Flutter和QT,最大的区别在语言和背后团队。
  • 语言:Flutter选择了Dart,QT是C++。Dart相比C++,对开发者来说无疑于相比骑自行车和开飞机的区别,Dart更容易编写,除此以外,Dart还拥有AOT和JIT两种模式、类型安全、快速内存分配等等特点,确实如Flutter团队所述,同时拥有一两条这些优点的语言不少,但是将所有这些优点集于一身的,只有Dart。
  • 背后团队:Flutter的背后是Google,QT的背后是TrollTech,从社区影响力和号召力而言不可同日而语。
  • 但同时也必须要认识到的是通过底层统一渲染的跨平台方案,也有它天然的劣势。它很难复用系统天然提供的组件。在摆脱对操作系统的依赖和复用操作系统的能力上,要考虑如何达到了一个最佳的平衡。

Flutter的生态

如果拿Flutter生态同React和Native进行比较的话

  • 基于核心UI表达层向上,这一层会更接近前端的体系,以React生态为参照物,主要的几部分

    • 路由体系

      • 一种面向以Flutter为主的应用,它的路由以Flutter为主,Native的路由部分往往以简易桥接的形态存在。
      • 一种面向混合技术栈为主的应用,它的路由以Native为主,Flutter为辅。
    • 状态管理体系 | 应用框架

      • 基本上在React生态下有的状态管理,Flutter也有,同时有一些是Flutter独有的。
      • 开源的代表有:flutter_redux, google的BLoc,scoped_model,及闲鱼的fish-redux,它在真实的复杂场景下得到了非常好的验证。
    • UI库体系

      • 目前已有不少UI库,包含常见的组件。
  • 基于核心UI表达层向下,这一层会更接近Native的体系,以Native生态为参照物,主要的几部分

    • 核心的一些基础中间件,如网络,图片,音视频,存储,埋点,监控等。

      • 目前和Native相比还是有非常大的差距。所以也导致了目前大部分这些问题的解决方案,都趋向于桥接的形态。通过复用Native能力来短期补齐Flutter能力不足的。但它不一定是未来的最佳的方案。
    • 一些重量级的基础组件,如WebView,MapView等。

      • 目前已经能通过PlatformView的形式,得到能力拓展。但是它有使用的局限性和性能上的损失。

Flutter今年几个重要的突破点

  • Code-Push

    • 在当下国内应用生态环境,热修复或者热部署能力在很多公司和团队做技术选型中,往往是其中非常重要的一个选项。如果有Google官方推出,不管是hotfix,还是dynamic-boundle都将极大的推动Flutter在国内的发展。
    • 而基于dart语言的特性判断,在Flutter上做code-push理论上会比目前任何Native的code-push方案有更强的能力。闲鱼团队一直和Flutter团队就这方便保持紧密的联系,在之前的验证中,目前在android端是可以支持的,但还留有一些瑕疵。
  • Humming-Bird

    • 在跨平台之外,还有一层更高级别的诉求,多应用投放,打破应用之间的孤岛壁垒,实现更多的商业价值。而要完成多应用的投放,首选的是基于浏览器的方案。Humming-Bird方案为这样的设想,提供了可能。
    • 同时Humming-Bird也将大大扩张了Flutter的边界,吸引更多的开发者和厂商的加入,同时让面向终端的全栈解决方案成为可能。Dart语言也有可能成为javascript生态的更好的补充和演进。

Flutter面向未来

     基础架构设计决定了一个软件的发展上限,它带来了更多的想象力。使用Flutter和Dart,既是Google为摆脱和Oracle纠缠多年的“Java 侵权案”提前下的一颗棋,也是Google为下一代操作系统Fusion下的一颗棋,是即Google通过chromium项目渐进的统一浏览器领域,着眼于更多的终端,为了一个更大终端生态的大一统做准备。这让Flutter和Dart充满了更高层次的可能。如果没有这些可能,Flutter的生命无疑是会短暂的,因为它还未能建立被广泛被认可的标准,就像我们终端里走过的那么多的技术一样,都是有限的解决了当下的诉求,但随着终端的更替,操作系统的演进,慢慢变成了明日黄花。而正是这些更多的可能,是Flutter持续演进的源泉,是Flutter相比其他的跨平台方案中最吸引人的部分。

作者:闲鱼技术-吉丰

原文链接​

本文为云栖社区原创内容,未经允许不得转载。

转载于:https://my.oschina.net/yunqi/blog/3039076

相关文章:

  • python大佬进阶学习路线
  • 学习ActiveMQ(三):发布/订阅模式(topic)演示
  • 【本人秃顶程序员】Java面试 32个核心必考点完全解析
  • 加一度分享竞价工作自检清单,升职加薪指日可待
  • windows下nginx的安装及使用(转载)
  • Mobx初探
  • 【云吞铺子】性能抖动剖析(二)
  • react-nativeAndroid打包报错:Daemon: AAPT2 aapt2-3.2.1-4818971-osx Daemon #0
  • 查看文件权限
  • RocketMQ快速上手
  • 4-4 重构get请求+格式化响应数据
  • Redis安装部署踩坑
  • “僕は存在していなかった”-22/7-CG音乐视频制作
  • 数位dp-Bomb
  • TNW-微信公众号各种消息交互
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6语法详解(一)
  • Java读取Properties文件的六种方法
  • laravel with 查询列表限制条数
  • nodejs:开发并发布一个nodejs包
  • React 快速上手 - 07 前端路由 react-router
  • swift基础之_对象 实例方法 对象方法。
  • 电商搜索引擎的架构设计和性能优化
  • 对象引论
  • 分布式任务队列Celery
  • 回顾2016
  • 前端js -- this指向总结。
  • 深度学习入门:10门免费线上课程推荐
  • 深入浅出Node.js
  • 跳前端坑前,先看看这个!!
  • 异步
  • 怎么将电脑中的声音录制成WAV格式
  • 正则与JS中的正则
  • HanLP分词命名实体提取详解
  • ​ArcGIS Pro 如何批量删除字段
  • (2)MFC+openGL单文档框架glFrame
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计高校学生选课系统
  • (四) 虚拟摄像头vivi体验
  • (四)linux文件内容查看
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .gitignore文件—git忽略文件
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET开发者必备的11款免费工具
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @Pointcut 使用
  • [20181219]script使用小技巧.txt