浅谈跨平台框架 Flutter 的优势与结构

分享发现 · jack · Created at · Last by nini9595 Replied at · 576 hits
434 1549005614

一、背景

目前,移动开发技术主要分为原生开发和跨平台开发两种。其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发的应用。
原生开发的主要优势体现在:
1.可以快速访问本平台的全部功能,比如摄像头、GPS等;
2.原生应用的速度快、性能高,而且可以实现比较复杂的动画和绘制效果,用户体验较好。
原生开发的缺点也很明显,主要体现在:
1.开发成本较高,不同的平台必须维护不同的代码,人力成本也会随之增加;
2.有新的功能需要更新时,只能进行版本升级。
随着移动互联网的高速发展,在很多的业务场景下,传统的纯原生开发已经不能满足日益增长的业务需求,主要表现在以下两个方面:
1.应用动态化的需求增大。当需求发生变化,或者是需要增加新的功能时,传统的纯原生应用开发只能通过版本的升级来更新内容,然而应用的上架和审核都需要一定的时间。因此,开发人员迫切地希望进行应用内容的更新时,可以不更新版本,提升工作效率。
2.业务需求变化快,开发成本变高。原生开发一般需要技术团队对iOS、Android两个开发平台进行维护。当版本更新迭代时,开发和测试的成本都会增加。
针对上述两个问题,跨平台框架应运而生。

二、跨平台技术简介

针对上文提到的原生开发所面临的问题,目前在IT界已经诞生了很多跨平台框架,主要分为三类:
1.H5+原生(Cordova、Ionic、微信小程序);
2.JavaScript开发+原生渲染(React Native、Weex、快应用);
3.自绘UI+原生(Flutter)。
在本文中,我们将对React Native、Weex和Flutter进行对比。
1.React Native
React Native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook开源的JS框架React在原生移动应用平台的衍生物。React Native使用了react的设计模式,但是其UI渲染、动画效果、网络请求等均是由原生来实现的。开发者编写JS代码,通过React Native的中间层转化为原生控件,并进行操作。也就是说通过JS代码来调用原生的组件,从而实现相应的功能。
React Native实现跨平台的功能,主要由Java、C++和Javascript三层所构成的。其中,C++实现的动态链接库(.so),作为中间适配层桥接,实现了JS端与原生端的双向通信交互。React Native会把应用的JS代码编译成一个JS文件,React Native整体框架目标就是为了解释并运行这个JS脚本文件,如果是JS扩展的API,则直接通过bridge调用native;如果是UI界面,则映射到virtual DOM这个虚拟的JS数据结构中,通过bridge传递到native,然后根据数据设置各个对应的真实native的View。

2.Weex
在Weex设计之初,开发者就考虑到,使其能够在三端(iOS、安卓和H5)上均能得到展现。在最上面的DSL,阿里一般称之为Weex文件(.we),通过Transform转换为js-bundle,再部署到服务器,这样服务端就完成了。在客户端,第一层是JS-Framework,最后是RenderRengine。

如上图所示,Weex的输入是Virtual DOM,输出是native或H5 view,还原为内存中的树型数据结构,再创建view,把事件绑定在view上,设置view的基本属性。Weex Render会分三个线程,不同的线程负责不同的事情,让JS线程优先保障流畅性。

表面上,Weex是一种客户端技术,但实际上,它串联起了从本地开发、云端部署到分发的整个链路。开发者可以在本地像编写Web页面一样先编写一个APP界面,然后通过命令行工具将之编译为一段JavaScript代码,生成一个Weex的JS bundle。与此同时,开发者可以将生成的JS bundle部署至云端,之后通过网络请求或者预下发的方式加载至用户的移动应用客户端。
在移动应用客户端,Weex SDK会准备一个JavaScript执行环境,在用户打开一个Weex页面时,在该环境中执行相应的JS bundle,并将执行过程中产生的各种命令发送到native端,进行界面渲染、数据存储、网络通信、调用设备及用户交互响应等。如果用户希望使用浏览器访问这个界面,那么他可以在浏览器中打开一个相同的Web页面,这个页面和移动应用使用相同的页面源代码,但被编译成适合Web展示的JS Bundle,通过浏览器里的javaScript引擎及Weex SDK运行起来的。
3.Flutter
Flutter 是Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过Dart语言进行APP开发,只需要一套代码就可以同时构建Android和iOS应用,并且可以达到与原生应用一样的性能。Flutter还提供了丰富的组件、接口,开发者可以高效地为 Flutter添加native扩展。此外,Flutter还使用了Native引擎渲染视图,为用户提供了良好的体验。
Flutter与用于构建移动应用程序的其它多数框架不同,因为Flutter既不使用WebView,也不使用操作系统的原生控件。相反,Flutter使用自己的高性能渲染引擎来绘制widget。这样不仅可以保证在Android和iOS的UI一致性,而且也可以避免对原生控件依赖而带来的限制和高昂的维护成本。
同时,Flutter使用Skia作为2D引擎渲染,Skia是Google的一个2D图形处理函数库,在字型、坐标转换以及点阵图等方面都有高效而且简洁的表现。Skia是跨平台的,并提供了非常友好的API。由于Android系统已经内置了Skia,所以Flutter在打包APK时,不需要再将Skia打包到APK中,但是iOS系统并未内置Skia,所以在构建API时,必须将Skia一起打包。

三、高性能的Flutter

目前,Flutter程序主要有两种运行方式:静态编译与动态解释。静态编译的程序在执行前,会被全部翻译为机器码,通常将这种类型称为AOT,即 “提前编译”。解释执行则是一句句地边翻译边运行,通常将这种类型称为JIT,即“即时编译”。
AOT程序的典型代表是用C/C++开发的应用,它们必须在执行前编译成机器码。而JIT的代表则非常多,如JavaScript、python等。事实上,所有脚本语言都支持JIT模式。但需要注意的是,JIT和AOT指的是程序运行方式,和编程语言并非是强关联的,有些语言既可以以JIT方式运行,也可以以AOT方式运行,如Java、Python,它们可以在第一次执行时编译成中间字节码,然后在之后的执行中,直接执行字节码。
Flutter的高性能主要靠两点来保证,首先,Flutter APP采用Dart语言进行开发。当Dart在 JIT模式下时,其运行速度与 JavaScript基本持平。此外Dart支持 还AOT,当Dart在 AOT模式下事,其运行速度远超JavaScript。速度的提升对高帧率下的视图数据计算很有帮助。
其次,Flutter使用自己的渲染引擎来绘制UI,布局数据等由Dart语言直接控制,所以在布局过程中不需要像RN那样要在JavaScript和Native之间通信,在一些滑动和拖动的场景下具有明显优势。由于滑动和拖动往往会引起布局的变化,所以JavaScript需要不停地与Native之间同步布局信息,这和在浏览器中要JavaScript频繁操作DOM所带来的问题是相同的,都会带来比较可观的性能开销。

四、为什么Flutter会选择Dart语言?

1.开发效率高。Dart运行时和编译器支持Flutter的两个关键特性的组合,分别是基于JIT的快速开发周期和基于AOT的发布包。基于JIT的快速开发周期:Flutter在开发阶段,采用JIT模式,这样就避免了每次改动都需要进行编译,极大地节省了开发时间。基于AOT的发布包,Flutter在发布时可以通过AOT生成高效的ARM代码,以保证应用性能。而JavaScript则不具备这个能力。
2.高性能。为了实现流畅、高保真的的UI体验,Flutter必须在每个动画帧中都运行大量的代码。这意味着需要一种既能支持高性能,又能保证不丢帧的周期性暂停的语言,而Dart支持AOT,在这一点上比JavaScript更有优势。
3.快速分配内存。Flutter框架使用函数式流,这使得它在很大程度上依赖于底层的内存分配器。
4.类型安全。由于Dart是类型安全的语言,支持静态类型检测,所以可以在编译前就发现一些类型的错误,并排除潜在问题。这对于前端开发者来说更具有吸引力。而JavaScript是一个弱类型语言,这也是为什么在诸多前端社区中,会有众多为JavaScript代码添加静态类型检测的扩展语言和工具。

五、Flutter框架结构


Flutter Framework是一个完全由Dart语言构建的SDK,它实现了一整套自底而上的基础库。
1.底部两层(Foundation和Animation、Painting、Gestures)是Flutter引擎暴露的底层UI库,提供动画、手势及绘制能力。
2.Rendering层是一个抽象的布局层,它依赖于dart UI层。Rendering层会构建一个UI树,当UI树有变化时,它会随即计算出有变化的部分,然后更新UI树,最终将UI树绘制到屏幕上。这个过程类似于React中的虚拟DOM。Rendering层可以说是Flutter UI框架最核心的部分,它除了确定每个UI元素的位置、大小之外,还要进行坐标变换和绘制(调用底层dart:ui)。
3.Widgets层是Flutter提供的一套基础组件库,在基础组件库之上,Flutter还提供了 Material 和Cupertino两种视觉风格的组件库。
Flutter Engine:这是一个完全由 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时和文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。
React Native、Weex和Flutter进行对比结果如下所示:

六、总结

从Flutter的设计理念来看,其整体架构都是具有革命性的,相比于其他架构,它实现了真正意义上的跨平台。它能够让各平台的体验一致,并且让用户体验达到更优。现如今,Flutter的各种UI库和组件都在不断增加,与之相关的各种生态系统和社区也在不断完善,它对新的操作系统的适配性将会越来越强。相信在不久的将来,Flutter会慢慢成熟起来,成为主流的开发语言之一。

共收到 3 条回复
1Floor Deleted
2Floor Deleted
7842 1560847929
nini9595 · #3 ·

[size=4]雅汐 167 49 C杯 22歲【台灣純本土】 #預約制
高顏值,火辣身材,細腰翹臀
很會玩,服務很好,女神級別的人物
人很正皮膚保養很好
#兼職一天,喜歡的卡緊敲我預約[/size]
150546xly0lg22y0t717gf.jpg.thumb

150554mvfjhzwjifywpcjl.jpg.thumb

150600o3zc6z5ipn5ie5ce.jpg.thumb

[size=4]#超級敢玩嬌小全程無套騷尤物
牛奶 158,46,D杯,23歲დდდ
#嬌小淫蕩的無套妹超級敢玩,很騷很淫蕩,配合度高,尺度大,無套內射,後門,舔蛋蛋 舔屁眼,
清水溝,舔奶頭,深喉,顏射,乳交,足交, 最後在來一個火車便當 各種姿勢各種體位各種玩讓你享受不一樣的體驗,
☀☀把你女友在你女友或者老婆身上沒有玩到沒有享受到的,今天都可以找牛奶玩超有女友fu她的讓你欲罷不能。#現在可約‼‼‼[/size]
150605twccajxwj0x20z0c.jpg.thumb

150611arxl8b48zxy8r92b.jpg.thumb

150616qnv8az8aq1vwqqxa.jpg.thumb

150625u2f2mply1m6pryjx.jpg.thumb

150621oqzunuhm8nrzvxx6.jpg.thumb

[size=4]小星星優質外送茶聯絡方式:【籟nini9595】【Skype:bjx778】
【Kakao:5280888】【Telegram:nini9595】【官網:http://www.5280344.com
消費價格:北部4.5K起跳 中部3k起跳 南部3k起跳
外送地點:旅館 酒店 汽旅 vip可住家 外約
外送方式:現金交易 不轉帳 不刷卡 不買點數 不勉強消費可退換
年齡18~50歲〈正派經營、一律現金、絕.無.欺.騙〉
身高【150~176】=胸圍【A-B-C-D-E-F-H-G】
各類型的美女應有盡有,一律台灣美女、配合度及服務更是100%
依照您所需要的條件安排、現金消費、不加收任何費用、保證可換
新茶多、貨源足、素質優、安全隱密、絕不催趕《絕對是您最佳的選擇
★*全套服務:愛愛、口交、哈拉、洗澡 還要特別服務哦
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●●營業時間:中午12:00---凌晨1:30【凌晨請提前預約】365天全年無休 隨時歡迎你們的關顧

小星星外送茶活動大優惠: 籟nini9595 sy:bjx778
1.消費一次不管金額大小免房費 免車資 送絲襪
2.消費金額8k送絲襪+免車資+3000優惠卷+9折會員卡
3.消費金額10k送絲襪+原味內褲消費第二節直接半價
3.消費金額20k送超級VIP(永久7折)免費試車10k小模+免費進入約炮群
4.消費金額30k送黃金VIP(永久半價)免費試車15k小模2小時無線次數
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【包夜套餐】 籟nini9595 sy:bjx778
1.買六節【6小時-免費送2H】送3000抵用卷
2.買九節【9小時-免費送3H】送5000抵用卷+半價*2
3.買十二節【12小時-免費送4H】+永久半價+黃金VIP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【加時套餐】 籟nini9595 sy:bjx778
1.兩節送一節/兩節送兩節/三節送一節/三節送兩節
2.喝茶續杯半價
3.還可約姐妹花母女雙胞胎3P妹妹喲
【北中南套餐都可以挑選,詳情諮詢我喲】
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
台灣外送茶選妃官網【http://www.5280344.com/forum.php
平價茶【3-7k】【http://www.5280344.com/forum.php?mod=forumdisplay&fid=71
優質茶【7-12k】【http://www.5280344.com/forum.php?mod=forumdisplay&fid=70
高檔茶【12-80k】【http://www.5280344.com/forum.php?mod=forumdisplay&fid=69
台北外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=39
台中外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=40
高雄外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=41
新竹外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=47
彰化外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=48
台南外送茶選妃官網【http://www.5280344.com/forum.php?mod=forumdisplay&fid=49
台灣北中南優惠茶單【http://www.5280344.com/forum.php?mod=forumdisplay&fid=50
真實客評售後區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=45
吃魚喝茶新手區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=36
安全旅館推薦區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=37
男女兩性知識區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=60
情色成人小說區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=46
幽默笑話開心區【http://www.5280344.com/forum.php?mod=forumdisplay&fid=51
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
外送地區: 籟nini9595 sy:bjx778

【新北】三重 土城 汐止 新莊 板橋 永和 瀘州 中和 五股 泰山 新店 八里-林口-淡水-龜山萬壽路
【台北】大同 大安 士林 中山 中正 內湖 文山 北投 松山 信義 南港 萬華
【新竹】新竹《東區》竹北
【彰化】員林鎮 鹿港鎮 埔心鄉 和美鎮 溪湖鎮 田尾區 南投市 草屯區 田中鎮 彰化市
【台中】東區 南區 西區 北區 中區 南屯區 西屯區 北屯區 大里 大雅 烏日 豐原 沙鹿 太平
【高雄】左營 三民 苓雅 新興 前鎮 前金 鼓山 楠梓 小港 鳳山
【台南】東區 北區 南區 中西區 永康區-仁德區[/size]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
空姐 模特兒 演藝明星 女主播 護士 女軍官 AV女優 運動員 女學生 促 狂野型 淫蕩型 服務型 外貿型 氣質型 美腿型 甜美型 大奶型 高檔型 特別型 火辣 台北/新竹/台中/彰化/南投/高雄市區 住家、飯店、商汽旅(見到妹妹/滿意金消費) ╭適時點杯台灣好tea╮★╭新鮮出爐ㄉ好茶等你來泡!!絕對驚艷![應有盡有~任君挑選☆服務超優] 臺北/臺中/高雄/彰化/新竹/茶訊論壇/鐘點情人外送茶/找茶喝/找魚論壇/高價正妹外送茶/高價辣妹外送/高價清純學生妹/高價麻豆外送/高價混血正妹外送/出差外叫小姐/外送到府 籟nini9595成人愛愛論壇 大家來找茶 伊利 玩美情人 男人幫 QK情色休閒俱樂部 重車論壇 一夜情 瀘州指壓 成人圖片 李宗瑞 陳自搖 口爆 幼幼 成人貼圖 吳亞馨 中出 顏射 太子 找魚論壇 陳自搖 鬆島楓茶.叫女人.飯店叫辣妹.外約電話.外送人妻辣媽.汐止.瀘州.三重.新莊.南港.林口.龜山外送茶.台北舒壓按摩全套服務外送.援交妹網站.全套服務網站.台北外送茶.外送住家.一夜情.外送鐘點情人外送茶坊台北新竹彰化台中高雄南投彰化旅館飯店叫小姐找炮友最佳選擇地方甜美誘人+性感魅惑+情趣狂野+籟nini9595官網http://5280344.com/情趣比基尼+激情貓裝+性感丁字褲+絲襪/網襪/吊襪帶+俏麗女僕裝+百變護士裝+百變學生服+空姐/OL制服#爆操三點式 #4p #A片 #E罩 #G罩 #一夜情 #一條龍 #丁字褲 #上床 #下體 #中學生 #籟nini9595官網http://5280344.com #人妻 #俱樂部 #做愛 #偷偷 #偷吃 #偷情 #偷拍 #偷食 #兔女郎 #內射 #全裸 #出差 #出水 #初夜 #動漫 #原味?褲 #?? #口交 #口爆 #叫雞 #可愛 #台中 #台北 #台妹 #台模 #台? #台灣 #偷拍 #吃精 #名模 #后入 #吞精 #吸蛋 #啪啪啪 #國中生 #國模 #外國 #外送 #夜店 #大奶奶 #大胸 #大腿 #女主播 #女學生 #女教師 #女模 #女神 #女秘書 #妖精 #嫖妓 #嫩女 #嫩模 #嫩穴 #?生妹 #宅男 #安全套 #寂寞 #射精 #小奶 #小母狗 #籟nini9595官網http://5280344.com #少婦 #巨乳 #平胸 #幼齒 #影片 #後入 #性愛 #情婦 #成人電影 #打炮 #打飛機 #抖音 #按摩 #接吻 #援交妹 #摳穴 #摳逼 #操逼 #旅館 #日本妹 #明星 #校花 #極品 #模特 #模特兒 #歐美 #母狗 #比基尼 #泡澡 #泰妹 #淋浴 #混血 #潮吹 #烏克蘭 #無套 #無碼 #熟女 #爆乳 #發騷 #白嫩 #白富美 #直播 #眼鏡妹 #稚嫩 #空姐 #童? #約炮 #美乳 #美胸 #美鮑 #翹臀 #肛交 #脫衣秀 #藝人 #蘿莉 #裙底 #裸拍 #裸體 #調教 #足交 #跳蛋 #車模 #辣妹 #辣模 #酒店 #野模 #陰道 #電愛 #韓妞 #韓模 #顏射 #飢渴 #騷貨 #高中生 #高挑 #高潮 #黑絲籟nini9595 官網http://www.5280344.comB吃魚網 ... 情人.茶魚網.QK休閒娛樂網.天空論壇.卡提諾論壇. 樂之軒.宅男女神|排行榜|周韋彤|?梓萱|柳岩|pk|台灣|?馨予伊利討論區.伊魚網 e魚網.茶魚飯後.捷克論壇..台灣壇.小女人論壇.吃魚喝茶網anglebaby高圓圓唐嫣許雅涵波多野結衣送茶南投外送茶莊員林外送茶莊嘉義外送茶台南外送茶高雄外送茶莊,按摩美容護膚 桑拿全套外送台北新莊雅緹找小姐/板橋金色年代一夜情交友西門町找小姐喝茶服務台北士林板橋土城喝茶留言版純兼職外送美女外送GTO台中外送茶台北援交外約全套服務,台中,彰化,南投,新竹,台灣外送茶莊,台中茶裏王,桃色誘惑嘉義,台南,高雄一夜情人外約上百位佳麗兼職點點,蘇菲,水靈,溫蒂,小果,歪歪,amy,薇薇,依晨,冰冰,依依,莫琳,虞姬,珊珊,小Q,海倫,夏娃,念念,語嫣,珍欣,米琪,S姐,葉子,娜美,小辣椒,可可,米雪,灣灣,欣萱,笑笑,圓圓,米蘭,羅琳,阿雅,維尼,海薇,千惠,蝴蝶,小舞,糖萱,天心米外送茶坊台北外送茶坊,台中外送茶,高雄外送茶,美女外約服務/台中/高雄/新竹/彰化/南投/全臺外送本土兼職妹妹茶莊極品俱樂部嚴選絕色經典,成人性愛慾茶園,找茶討論區,最強催情唯美貼圖外送,高檔平價 好茶淫照聊天是尋夢園美女外送,情趣用品八大行業指油壓全套,哪裡有好茶,motel,hotel性感絲襪芭比baby小果論壇第一手貓都卡提諾喝茶台北新竹台中高雄彰化外送茶一夜情籟nini9595鐘點情人A片自慰大奶妹日本妹茶/外送茶/ 喝茶/外送茶/論壇慾茶園 壹週刊/北區喝茶外送茶論壇 PLUS 台灣外送茶eyny PC交 愛情公寓天空找炮夜遊區一夜情台南茶高雄茶打炮 大奶正妹 尋夢園

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up