在Flutter框架出现之前,主要有以下几个移动App跨平台开发框架:Cordova、Ionic、AppCan、Dcloud、APICloud、React Native。虽然有那么多框架,但是它们的原理都是使用HTML、CSS和JavaScript进行移动App开发,多平台共用一套代码,提供了丰富的主流UI库、用来调用原生API的JavaScript API包装器,同时还提供App打包、发布的工具或服务。由于这些跨平台开发框架是使用标准Web技术开发,所以它们打包出来的App在性能上,多少都会比原生App差上不少,这也是移动App跨平台开发技术一直不温不火的原因。

在决定学习一门新技术之前,我们总会拿它与同类技术进行对比,确保不会把宝贵的学习时间浪费在无用的技术上。所以,接下来我们将在对比中认识我们将要学习的Flutter框架。首先是Flutter实现跨平台开发的原理,Flutter与现有的移动App跨平台开发框架都不一样,Flutter不是使用标准Web技术,而是借助可移植的图形加速渲染引擎、高性能的本地ARM代码,并以此实现跨设备、跨平台的高质量用户体验。


由上我们可以得知,使用Flutter开发的跨平台移动App,性能是可以与原生App一模一样的。你以为这样就完了吗?不不不,Flutter框架的能力不止于此!Flutter应用的性能甚至可以比原生App更加优秀,因为Flutter框架针对性能方面进行了优化。

传统的Web应用中会有成千上万数量个DOM节点,所以更新的时候会非常琐碎、频繁,使页面加载缓慢,所以现代的Web应用开始使用虚拟DOM技术来提高页面更新的速度,用一个虚拟DOM,而不是直接调用类似.getElementById的方法,只操作JavaScript对象,然后再把更改的部分更新到真实DOM,这样是相当方便的。但是添加了虚拟DOM意味着更多的代码,而且在一个DOM节点相对较少的页面中用虚拟DOM,实际上有可能会更慢。


不仅是现代的Web应用,其实目前主流的Android于iOS应用也是大量使用类似虚拟DOM的技术,即虚拟控件,而且得益于移动设备的性能优势,使虚拟DOM这种形式的响应式框架的优点发挥到极致,使得开发者忽略了该模式的缺点。


就在平台与开发者满足于这种以硬件性能优势来解决软件框架的性能缺陷时,Flutter横空出世!在Flutter的响应式框架中,控件树中的控件直接通过可移植的图形加速渲染引擎、高性能的本地ARM代码进行绘制,不再需要通过虚拟DOM或虚拟控件、真实DOM或平台控件这些中间对象来绘制。Flutter响应式框架通过“无中间商赚差价”的方式直接利用硬件的所有性能,所以正如前面所说的,Flutter应用的性能比原生App更加优秀。


Flutter的优秀还不止如此,使用Flutter开发的应用能以60 FPS运行,这是现有的移动端游戏都难以实现的一个性能指标,例如王者荣耀也只能以40左右的FPS运行,所以使用Flutter创建的用户界面,性能远远优于其他跨平台框架。现在开始学习Flutter,就是对未来的投资!

简单说一下Flutter框架相关推荐

  1. Flutter框架分析(五)-- 动画

    Flutter框架分析分析系列文章: <Flutter框架分析(一)-- 总览和Window> <Flutter框架分析(二)-- 初始化> <Flutter框架分析(三 ...

  2. Flutter框架基础

    Flutter应用程序是由一些零散且有关联的控件组成的,那么控件是什么?控件,就是你在屏幕上看到那些东西.例如,一间教室相当于一个屏幕,它里面可以放椅子,也可以放桌子,教室就是一个控件.在这个教室里, ...

  3. 深入理解 Flutter 框架层次结构

    作者: Frederik Schweiger 链接 : The Layer Cake Flutter 是一个非常优秀的跨平台开发框架,基于 Flutter 我们可以用很少的代码快速的开发出界面精美的 ...

  4. Flutter 框架层次结构

    作者:Frederik Schweiger 链接: https://medium.com/flutter-community/the-layer-cake-widgets-elements-rende ...

  5. Uber发布史上最简单的深度学习框架Ludwig!

    昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! Ludwig是一个建立在TensorFl ...

  6. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  7. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  8. 测试开发——搭建一个简单 web服务(flask框架基础)项目实战

    搭建一个简单 web服务-flask框架 一.什么是wsgi? 二.搭建一个简单 web服务 三.扩展 四.请求加参数的情况 五.安装flask 一.什么是wsgi? wsgi是webserver和a ...

  9. 重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

    点击我爱计算机视觉标星,更快获取CVML新技术 昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习 ...

最新文章

  1. 一个虚拟机网络的XML描述
  2. 关于Node.js中安装完express后不能使用express命令
  3. [SDOI2013]直径 (树的直径,贪心)
  4. 理解ATL中的一些汇编代码
  5. get请求可以传数组吗_王源 袁冰妍 孟美岐 手套在大片中的时尚,普通人可以get吗...
  6. jpa 异常捕获_JPA和CMT –为什么捕获持久性异常不够?
  7. 基于FPGA 的8b10b编解码电路前端电路设计
  8. el-autocomplete判空校验时,第一次点击不通过,再次点击才正常
  9. flow-shop调度问题、job shop调度问题、open shop调度问题 是什么 区别
  10. 如何让千牛工作台/阿里旺旺不要自动升级
  11. 易辅客栈第六套零基础开发商业脚本_网页游戏篇
  12. 机器人仿真论文阅读2
  13. 我的世界服务器信息显示等级,我的世界空岛服务器怎么查方块等级 | 手游网游页游攻略大全...
  14. 格林尼治时间与本地时间转换
  15. 第二十三天 小丁再战链表
  16. 【论文精读】Deep Defocus Map Estimation using Domain Adaptation-2019CVPR
  17. Linux 修改DNS配置
  18. 号外!号外!豪车出租啦!
  19. bugku 二维码题目 多种方法解决、闪的好快、乌云邀请码
  20. 【转】Keil、uVision、RealView、MDK、Keil C51之间的区别比较

热门文章

  1. 10.11-数据库mysql
  2. linux下合并多个文件夹内容成为一个文件夹
  3. 使用SpringBoot中出现Whitelabel Error Page 404 错误的几种原因
  4. 如何利用hosts碰撞技术遨游内网web系统
  5. H265框架编码流程(一),网易Android面试必问
  6. Kafka设计原理——consumer rebalance概览及过程
  7. 最酷网学习,如何做一个轮播
  8. 计算机网络连接显示678是什么意思,WinXP宽带连接提示错误代码678怎么办?
  9. [树莓派 PICO(基于MicroPython)]基础教程02-按键测试、按键控制外设LED开关
  10. 用户体验报告——石墨文档