Flutter ,沒(méi)錯(cuò),新的移動(dòng)端跨平臺(tái)解決方案

簡(jiǎn)介

Flutter作為谷歌最近推出的跨平臺(tái)開發(fā)框架,一經(jīng)推出便吸引了不少注意。關(guān)于Flutter,目前我們知道它是一個(gè)跨平臺(tái)開發(fā)框架。但是它本身并不止于此,例如Fuchsia、Dart等,我們也都需要去了解。

怎么樣RN的小伙伴一下子就心里有點(diǎn)忌諱了吧.
本來(lái)目前跨平臺(tái)解決方案性能最好的就是react-native,
而且生態(tài)圈也發(fā)展的不錯(cuò),結(jié)果google又來(lái)了這個(gè)東西.
在這個(gè)行業(yè)就是不停的學(xué)習(xí),不停的采坑,不停的... .... ...... ......
最近看頭條,說(shuō)IT行業(yè)薪資如何如何,他們沒(méi)看到奮斗在一線的大牛和程序員學(xué)習(xí)能力是多么的強(qiáng)悍,不然一分錢都賺不到.

看到這里,如果你會(huì)java,那么恭喜你,你入門就比較快了.
如果你只會(huì)OC 哈哈 恭喜你,你會(huì)有些懵逼的.

Flutter

Flutter是Fuchsia的開發(fā)框架,是一套移動(dòng)UI框架,可以快速在iOS、Android以及Fuchsia上構(gòu)建高質(zhì)量的原生用戶界面。 目前Flutter是完全免費(fèi)、開源的,GitHub地址。其官方編程語(yǔ)言為Dart,也是一門全新的語(yǔ)言。所以說(shuō),上手成本比較高,對(duì)于移動(dòng)端開發(fā)人員,語(yǔ)言以及框架都是全新的,整個(gè)技術(shù)棧的積累也都得從頭開始。

可以看下其官方介紹的特性:

  • 快速開發(fā):Flutter的熱重載可以快速地進(jìn)行測(cè)試、構(gòu)建UI、添加功能并更快地修復(fù)錯(cuò)誤。
  • 富有表現(xiàn)力,漂亮的用戶界面:自帶的Material Design和Cupertino(iOS風(fēng)格)widget、豐富的motion API、平滑而自然的滑動(dòng)效果。
  • 響應(yīng)式框架:使用Flutter的現(xiàn)代、響應(yīng)式框架,和一系列基礎(chǔ)widget,輕松構(gòu)建您的用戶界面。
  • 訪問(wèn)本地功能和SDK:Flutter可以復(fù)用現(xiàn)有的Java、Swift或ObjC代碼,訪問(wèn)iOS和Android上的原生系統(tǒng)功能和系統(tǒng)SDK。
  • 統(tǒng)一的應(yīng)用開發(fā)體驗(yàn):Flutter擁有豐富的工具和庫(kù),可以幫助開發(fā)者輕松地同時(shí)在iOS和Android系統(tǒng)中實(shí)現(xiàn)想法和創(chuàng)意。
  • 原生性能:Flutter包含了許多核心的widget,如滾動(dòng)、導(dǎo)航、圖標(biāo)和字體等,這些都可以在iOS和Android上達(dá)到原生應(yīng)用一樣的性能。

其實(shí)從官方特性來(lái)看,唯一有點(diǎn)吸引力的就是統(tǒng)一的應(yīng)用開發(fā)體驗(yàn)。一套代碼運(yùn)行在多個(gè)平臺(tái),做到真正的跨平臺(tái)。像熱加載,目前Android開發(fā)本身就支持了,響應(yīng)式框架以及訪問(wèn)本地功能和SDK,對(duì)于Native來(lái)說(shuō),本身并沒(méi)有多大的吸引。至于漂亮的用戶界面,國(guó)內(nèi)的商業(yè)項(xiàng)目,哪一個(gè)會(huì)去按照Material Design去設(shè)計(jì)。

跨平臺(tái)本身,往往意味著性能受損,通用性解決不了的問(wèn)題,又得回到Native去實(shí)現(xiàn)。所以這些因素也是跨平臺(tái)從移動(dòng)端誕生之初就開始提,到現(xiàn)在也沒(méi)有被很好解決的一個(gè)原因。至于谷歌能夠做到什么程度,或者說(shuō)開發(fā)者該保持什么期許,我覺(jué)得都不好說(shuō),或許谷歌解決了一個(gè)多年的難題,或者又像被谷歌放棄掉的其他項(xiàng)目一樣。拋開商業(yè)層面,對(duì)于技術(shù)人員,我們更多的是應(yīng)該去關(guān)注它的思想,谷歌是如何去解決這些實(shí)際存在很久的問(wèn)題的,至于技術(shù)本身的發(fā)展,這個(gè)是個(gè)人開發(fā)者無(wú)法去左右的,技術(shù)的更迭,保持一種學(xué)習(xí)的狀態(tài),然后努力鍛煉身體,就能夠保證不被淘汰掉。

Flutter架構(gòu)

Flutter是一款移動(dòng)應(yīng)用程序SDK,一份代碼可以同時(shí)生成iOS和Android兩個(gè)高性能、高保真的應(yīng)用程序。

跨平臺(tái)解決方案

市面上的跨平臺(tái)解決方案,可以大致歸結(jié)為兩類:

  • 使用平臺(tái)支持的web技術(shù):這些解決方案基本上加載了應(yīng)用程序中的移動(dòng)瀏覽器,并在該瀏覽器中執(zhí)行所有的邏輯,例如PhoneGap。
  • 本地跨平臺(tái):程序員編寫的代碼自動(dòng)轉(zhuǎn)換為Native代碼,這種方式的優(yōu)點(diǎn)是近乎原生的性能,例如RN、Weex、Xamarin等。

這些方案是否真正的解決了跨平臺(tái)問(wèn)題呢?從目前的狀況來(lái)看,很顯然是沒(méi)有的,因?yàn)樗鼈兌际冀K逃不開性能、包大小、流暢性、內(nèi)存、平臺(tái)特性等問(wèn)題。

RN單獨(dú)擰出來(lái)說(shuō),是因?yàn)樗鼈儾⒉皇亲非蟮囊淮螌懙教幣?,F(xiàn)B自己也知道不現(xiàn)實(shí),所以把口號(hào)改成一次學(xué)到處寫,去考慮平臺(tái)的特性,去考慮這個(gè)被跨平臺(tái)方案經(jīng)常忽略的問(wèn)題。但是RN也并沒(méi)有被廣泛的接納,從阿里開始使用到放棄,里面的很多坑都繞不過(guò)去。寫一次到處跑確實(shí)很誘人,從企業(yè)角度講,可以節(jié)省大量的人力,但是卻忽略了一個(gè)很基礎(chǔ)的問(wèn)題,不同平臺(tái)是否希望如此,蘋果是否會(huì)愿意自己的生態(tài)被打破,不同平臺(tái)的特性是否應(yīng)該被歸為一致。

Flutter的跨平臺(tái)解決方案

上面簡(jiǎn)單說(shuō)了傳統(tǒng)跨平臺(tái)解決方案,我們?cè)倩剡^(guò)頭看看Flutter的解決方案,F(xiàn)lutter跨平臺(tái)最核心的部分,是它的高性能渲染引擎(Flutter Engine)。Flutter不使用瀏覽器技術(shù),也不使用Native的原生控件,它使用自己的渲染引擎來(lái)繪制widget。

說(shuō)到widget,就要說(shuō)一句Flutter的一切皆為widget理念。widget是Flutter應(yīng)用程序用戶界面的基本構(gòu)建塊。每個(gè)widget都是用戶界面一部分的不可變聲明。與其他將視圖、控制器、布局和其他屬性分離的框架不同,F(xiàn)lutter具有一致的統(tǒng)一對(duì)象模型:widget。在更新widget的時(shí)候,框架能夠更加的高效。

對(duì)于Android平臺(tái),F(xiàn)lutter引擎的C/C++代碼是由NDK編譯,在iOS平臺(tái),則是由LLVM編譯,兩個(gè)平臺(tái)的Dart代碼都是AOT編譯為本地代碼,F(xiàn)lutter應(yīng)用程序使用本機(jī)指令集運(yùn)行。

Flutter正是是通過(guò)使用相同的渲染器、框架和一組widget,來(lái)同時(shí)構(gòu)建iOS和Android應(yīng)用,而無(wú)需維護(hù)兩套獨(dú)立的代碼庫(kù)。

Flutter將UI組件和渲染器從平臺(tái)移動(dòng)到應(yīng)用程序中,這使得它們可以自定義和可擴(kuò)展。Flutter唯一要求系統(tǒng)提供的是canvas,以便定制的UI組件可以出現(xiàn)在設(shè)備的屏幕上。

Flutter框架

Flutter框架是一個(gè)分層的結(jié)構(gòu),每個(gè)層都建立在前一層之上。

框架沒(méi)什么可介紹的(主要是詳細(xì)介紹我也沒(méi)找到啥資料,大寫的尷尬),看著很簡(jiǎn)單,就分為兩個(gè)部分,F(xiàn)ramework和Engine部分,其中Framework提供了各種基礎(chǔ)的組件庫(kù),Engine部分渲染各種widget,兩者共同作用,使得運(yùn)行性能高效穩(wěn)定。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評(píng)論 25 709
  • 本文主要介紹Flutter相關(guān)的東西,包括Fuchsia、Dart、Flutter特性、安裝以及整體架構(gòu)等內(nèi)容。 ...
    Q吹個(gè)大氣球Q閱讀 8,032評(píng)論 8 49
  • 昨晚在微信群里“生命蛻變營(yíng)”組織了2016年的最后一場(chǎng)會(huì)議,記得尾聲時(shí)營(yíng)長(zhǎng)再次強(qiáng)調(diào)了那句話“這本身就是一場(chǎng)游戲,當(dāng)...
    銥漩娜閱讀 388評(píng)論 3 2
  • 古人寫雪,因其似白玉而無(wú)暇,柔軟姿態(tài),作“不知庭霰今朝落,疑是林花昨夜開”;或因其如寒冰而徹骨,肅殺之勢(shì),作“寒風(fēng)...
    黯息笙動(dòng)閱讀 237評(píng)論 0 0
  • 在互聯(lián)網(wǎng)行業(yè)里,所有人的眼睛都盯著未來(lái),昨天一旦過(guò)去,就沒(méi)有什么意義了。 任何打破對(duì)于人、產(chǎn)品和信息的時(shí)空限制的新...
    anson_wu閱讀 425評(píng)論 0 0

友情鏈接更多精彩內(nèi)容