Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語(yǔ)言是Dart,Dart也是谷歌開發(fā)的計(jì)算機(jī)編程語(yǔ)言,語(yǔ)法類似C,是編譯型語(yǔ)言:
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)汾陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術(shù)多了一個(gè)橋接層,所以界面渲染會(huì)慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶體驗(yàn)跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢(shì)所在:
Dart可以被編譯成不同平臺(tái)的本地代碼,讓Flutter不通過橋接層直接跟平臺(tái)通信,自然性能會(huì)快一些。
2、編譯執(zhí)行
JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰(shuí)好一目了然。
3、Flutter Engine虛擬機(jī)
Flutter是依靠Flutter Engine虛擬機(jī)在iOS和Android上運(yùn)行的,F(xiàn)lutter Engine使用C/C++編寫,開發(fā)人員通過Flutter框架直接和API在內(nèi)部進(jìn)行交互,所以具有輸入低延遲和UI渲染高幀速率的特點(diǎn)。除了這特點(diǎn)之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。
窗口小部件根據(jù)其當(dāng)前配置和狀態(tài)描述了它們的視圖。 當(dāng)窗口小部件的狀態(tài)發(fā)生更改時(shí),窗口小部件會(huì)重建其描述,框架將根據(jù)前面的描述進(jìn)行區(qū)分,以確定底層呈現(xiàn)樹從一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)所需的最小更改??梢灾苯釉贠S平臺(tái)提供的畫布上進(jìn)行描繪,也就是一些核心類庫(kù)直接放到虛擬機(jī)里面,調(diào)用起來(lái)更快。
從它的系統(tǒng)結(jié)構(gòu)可以看出,類似安卓的ART(Android Run Time)虛擬機(jī),同樣采用AOT(Ahead of TIme)技術(shù),會(huì)在APP安裝時(shí)就編譯成機(jī)器語(yǔ)言,不再解釋執(zhí)行,從而優(yōu)化了APP運(yùn)行的性能。
4、自帶渲染引擎
Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺(tái)上Flutter也會(huì)把Skia引擎打包到APP中,從而實(shí)現(xiàn)了高效渲染。而React Native通過橋接層訪問原生UI,操作頻繁就容易出性能問題。
綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開發(fā)框架,未來(lái)也會(huì)是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問題就是需要學(xué)習(xí)一門新的語(yǔ)言:Dart,而有Java或者C#語(yǔ)言基礎(chǔ)的程序員會(huì)比較容易學(xué)習(xí)。
簡(jiǎn)單來(lái)說(shuō),大前端就是所有前端的統(tǒng)稱,比如Android、iOS、web、Watch等,最接近用戶的那一層也就是UI層,然后將其統(tǒng)一起來(lái),就是大前端。大前端最大的特點(diǎn)在于一次開發(fā),同時(shí)適用于所有平臺(tái),開發(fā)者不用為一個(gè)APP需要做Android和iOS兩種模式而擔(dān)心。大前端是web統(tǒng)一的時(shí)代,利用web不僅能開發(fā)出網(wǎng)站,更可以開發(fā)手機(jī)端web應(yīng)用和移動(dòng)端應(yīng)用程序。
為什么出現(xiàn)大前端的概念?
由于node的出現(xiàn),前端工程師不需要依賴于后端程序而直接運(yùn)行,從而前后端分離起來(lái)。所以當(dāng)開發(fā)一個(gè)新產(chǎn)品的時(shí)候服務(wù)只需要寫一次,但是面向用戶的產(chǎn)品可能有很多,例如網(wǎng)站、Android客戶端、iOS客戶端和微信小程序等。由于各個(gè)平臺(tái)使用的技術(shù)棧都不一樣,代碼無(wú)法復(fù)用,非常浪費(fèi)人力、物力。那么有沒有什么技術(shù)能夠前端的學(xué)習(xí)都是需要不斷的學(xué)習(xí),學(xué)一天停一停相當(dāng)于白學(xué),學(xué)習(xí)效果很差,如果你想有人一起學(xué)習(xí)可以來(lái)這個(gè)扣裙,首先是132 中間是667最后是127 都是零基礎(chǔ)的同學(xué),大家相互鼓勵(lì) 共同努力 只是學(xué)著玩就不建議來(lái)了!!!解決這一痛點(diǎn)呢?大前端應(yīng)運(yùn)而生,其實(shí)大前端的主要核心就是跨平臺(tái)技術(shù),有了跨平臺(tái)技術(shù),各個(gè)平臺(tái)的差異性就抹平了,開發(fā)者只需要一套技術(shù)棧就可以開發(fā)出適用于多個(gè)平臺(tái)的客戶端。
現(xiàn)在的前端都需要有多重開發(fā)技能,隨著微信公眾號(hào)、小程序的火熱發(fā)展,這兩個(gè)領(lǐng)域成為了前端開發(fā)的必備技能,更多的還有配合著打包技術(shù)的混合應(yīng)用開發(fā)技術(shù)、一些桌面APP、甚至有些人認(rèn)為基于node.js的后臺(tái)開發(fā)都屬于大前端的范圍。
就如之前說(shuō)到的,大前端沒有什么準(zhǔn)確的說(shuō)明,所以這些提到的技術(shù)不是每一個(gè)技能都是必備的,但毫無(wú)疑問,擁有這些技術(shù)可讓開發(fā)擁有更多的機(jī)遇。
技術(shù)在互聯(lián)公司就是需要不斷的成長(zhǎng),剛開始的時(shí)候其實(shí)都一樣。一個(gè)前端程序員用的技能基本都是HTML+CSS+JavaScript+jQuuery,但是隨著工作的開展我們不得不接受新的項(xiàng)目,就比如說(shuō)前端經(jīng)常會(huì)協(xié)同后端一起開發(fā),這時(shí)候需要用到一些Vue.js技術(shù)。
剛開始的時(shí)候可以寫出簡(jiǎn)單的erp系統(tǒng),慢慢的Vue.js基礎(chǔ)功能都可以實(shí)現(xiàn)。接觸到自己不擅長(zhǎng)的工作是經(jīng)常會(huì)發(fā)生的,經(jīng)手了幾個(gè)項(xiàng)目之后的我們基本都能學(xué)會(huì)一項(xiàng)技能,不能說(shuō)精通,正常運(yùn)用還是可以的。
大前端的發(fā)展趨勢(shì)
大前端不僅會(huì)成為移動(dòng)開發(fā)與Web前端的發(fā)展趨勢(shì),也將會(huì)是未來(lái)的顯示設(shè)備終端的開發(fā)技術(shù)趨勢(shì)。大前端將做更多的終端開發(fā)、工程化等工作,而不僅僅只是開發(fā)Web頁(yè)面。大前端工程師將能搞定所有端上的開發(fā)。與充滿爭(zhēng)議的全棧工程師相比,它更具可操作性。
但同時(shí)對(duì)開發(fā)者而言,要會(huì)更多的技術(shù)棧,比如原生開發(fā)者要學(xué)習(xí)html、css、js等前端知識(shí),前端開發(fā)人員也要學(xué)習(xí)Android或iOS的原生開發(fā)技術(shù),然后了解一下常見的跨平臺(tái)技術(shù),只有這樣才能更好的融入到大前端的這個(gè)大家庭中。
未來(lái)幾年前端本身的開發(fā)技術(shù)應(yīng)該不會(huì)有大的方向變化,但是將會(huì)呈現(xiàn)出四大發(fā)展趨勢(shì):
第一個(gè)趨勢(shì)是入口應(yīng)用會(huì)小程序化
類似騰訊、阿里、滴滴、美團(tuán)這樣作為入口的應(yīng)用,會(huì)自己做自己的一套小程序體系,在自己的app內(nèi)通行。這里的意思不是說(shuō)大家都會(huì)去用微信小程序,而是會(huì)效仿微信小程序這套體系,搬到自己的app內(nèi)。主要原因是,這些入口應(yīng)用容納自己公司各類業(yè)務(wù)線,已經(jīng)臃腫不堪,使用原生開發(fā)迭代效率跟不上,使用HTML又難以做到高性能,因此使用類似小程序的方案,可以做到暢享HTML多年來(lái)積累的開發(fā)模式,同時(shí)裁撤大量平時(shí)用不到的API,降低渲染頁(yè)面的復(fù)雜度。這個(gè)趨勢(shì)會(huì)涉及到移動(dòng)端開發(fā)。
第二個(gè)趨勢(shì)是Web前后端融合為全棧開發(fā)
Node.js已經(jīng)給前端開發(fā)很好地開了個(gè)頭,這個(gè)頭就是讓前端人員了解HTTP協(xié)議的細(xì)節(jié),了解常規(guī)的API開發(fā)。我相信很多人已經(jīng)看明白了,為什么我們要做前后端分離,這里面主要原因除了代碼開發(fā)部署上的分離,還有一部分是讓不懂HTTP協(xié)議的人不要在接口層瞎鼓搗,因?yàn)檫@里面細(xì)節(jié)太多了,你都不了解HTTP緩存,你怎么知道哪個(gè)API的HTTP header應(yīng)該用什么呢。因此了解HTTP協(xié)議的前端,會(huì)慢慢吃掉這部分后端開發(fā)的任務(wù),而了解HTTP協(xié)議的后端,也會(huì)因?yàn)槿罂蚣荛_發(fā)模式的成熟而學(xué)會(huì)前端開發(fā)。進(jìn)而,這些兩類人演化為全棧開發(fā)。
第三個(gè)趨勢(shì)是營(yíng)銷類頁(yè)面小程序化
這個(gè)指的就是大家平時(shí)在微信里看到的各類營(yíng)銷網(wǎng)頁(yè),因?yàn)橹饕肟谠谖⑿?,因此變成微信小程序。這個(gè)大家比較好理解吧,就不多說(shuō)了。小程序現(xiàn)在可能BUG多,功能跟不上,但是要替代這類網(wǎng)頁(yè)可能也就是2年不到的時(shí)間。
第四個(gè)趨勢(shì)才是大家看到的PWA、WASM代表的HTML內(nèi)的技術(shù)改進(jìn),這個(gè)能影響到的范圍看起來(lái)很大,但其實(shí)場(chǎng)景比較有限,主要是排除掉上面說(shuō)的1和3之外的空間??臻g就在于這兩大技術(shù)目前都沒有成熟的最佳實(shí)踐,還需要探索。
親愛的小伙伴,你對(duì)前端技術(shù)感興趣嗎?想了解一個(gè)絢麗多彩網(wǎng)站和小程序是如何被制作出來(lái)的嗎?歡迎加入我們的前端技術(shù)大家庭:。在這里,不僅有志同道合的朋友,指導(dǎo)人生的老師,更有看不完的技術(shù)教程隨你挑!心動(dòng)嗎?想學(xué)嗎?那就動(dòng)動(dòng)你的小手手,加入我們吧!