Flutter是谷歌的移動(dòng)UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開源的。(-中文網(wǎng);-英文網(wǎng))

創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為橋西企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,橋西網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Flutter是一種趨勢,勢必會(huì)取代RN,成為最主流的跨平臺(tái)開發(fā)框架,基于Dart語言。ios開發(fā)必須Mac電腦。android開發(fā)window、linux、Mac均可。
作者:閑魚技術(shù)-國有
國有,閑魚架構(gòu)團(tuán)隊(duì)負(fù)責(zé)人。在7月13號落幕的2019年Archsummit峰會(huì)上就近一年來閑魚在FlutterFaaS一體化項(xiàng)目上的 探索 和實(shí)踐進(jìn)行了分享。
隨著無線,IoT的發(fā)展,5G的到來,移動(dòng)研發(fā)越發(fā)向多端化發(fā)展。傳統(tǒng)的基于Native+Web+服務(wù)端的開發(fā)方式,研發(fā)效率低下,顯然已經(jīng)無法適應(yīng)發(fā)展需要。
我們希望 探索 閑魚這樣規(guī)模的獨(dú)立APP的高效研發(fā)架構(gòu)。主要思路是圍繞Flutter解決多端問題,并使Flutter與FaaS等無服務(wù)容能力打通,形成云端一體化的研發(fā)能力,支持一云多端的發(fā)展需要。在某些場景已經(jīng)取得效果,希望分享過程中的思考,與大家交流。
閑魚選擇Flutter主要是出于高性能的考慮。Flutter高性能主要來源于2個(gè)原因:
更多比較:
沒有銀彈的解決方案,F(xiàn)lutter與RN各有優(yōu)點(diǎn)。如何選擇因素很多,關(guān)鍵看如何取舍,舉個(gè)例子:
云端技術(shù)棧的打通,是減少協(xié)同的不錯(cuò)的解法。以往前端+Node.js的一體化方案大家應(yīng)該不會(huì)陌生,然而如果端側(cè)使用了Flutter,那云側(cè)Dart自然是第一選擇。
FaaS的本質(zhì)是運(yùn)行在云端,那Dart適合用在云/Server上嗎?
Dart語言早于Flutter,在最初的設(shè)計(jì)上,Dart就可以用于Web、Server。Dart具備一些服務(wù)端語言的特點(diǎn):
閑魚首先嘗試將Dart作為普通的Server,替代傳統(tǒng)的Java Server,然后再將Dart容器嵌入到FaaS容器中。建立Dart Server能力是第一步,也是主要的工作量所在。
閑魚在Dart Server方面的建設(shè)思路:
開發(fā)期:
運(yùn)行期:
上述內(nèi)容實(shí)現(xiàn)了FlutterDart FaaS的技術(shù)棧的統(tǒng)一,但僅技術(shù)棧統(tǒng)一還遠(yuǎn)遠(yuǎn)不夠,端、云的同學(xué)仍然無法真正互補(bǔ)和一體化打通,原因在于還有更多深入問題需要考慮:
面向這些問題,閑魚的解法思路:
案例一,一體化在資源均衡方面的體現(xiàn)。在近期的一個(gè)項(xiàng)目中,云端一體化使原本2個(gè)月的項(xiàng)目時(shí)間,減少了20天。
案例二,一體化在業(yè)務(wù)閉環(huán)方面的體現(xiàn)。負(fù)責(zé)增長的一位開發(fā)同學(xué),專注在增長業(yè)務(wù)上,在合適的情況下為合適的人投放合適的內(nèi)容,以此帶來用戶的增長和活躍效果。一體化的方式下,可以統(tǒng)一云、端的切面,業(yè)務(wù)研發(fā)不再受云、端的限制。
一體化是建設(shè)高效研發(fā)框架的方向,并不是所有場景都需要一體化的開發(fā),但一體化的Flutter、FaaS等技術(shù)組件,可以獨(dú)立使用,也會(huì)帶來效率提升,并且與原有的開發(fā)模式兼容。從一體化的思路去建設(shè),可以使整體架構(gòu)體系更加一致,也有機(jī)會(huì)做一體的架構(gòu)沉淀。
未來閑魚希望在一體化上做更多嘗試和深入 探索 ,包括一體化工具、一體化業(yè)務(wù)平臺(tái)、數(shù)據(jù)化智能化等方向。
最近在做的一個(gè)項(xiàng)目,項(xiàng)目的前期采用Weex開發(fā)。但是隨著交互復(fù)雜度的增加,Weex一處開發(fā)多處多處運(yùn)行的特征并沒有很好的體現(xiàn),相反很多時(shí)候我們還是需要做IOS和Android的適配。如今火熱的Flutter相比Weex和Rn來說,給出了更好的跨平臺(tái)解決方案。所以我們設(shè)計(jì)了一套基于Weex實(shí)現(xiàn),底層跑在Flutter Engine上的框架。
底層的Runtime采用isolate engine,框架業(yè)務(wù)邏輯,Dom的解析邏輯和Render邏輯都跑在這里。
渲染引擎采用Flutter的Skia,徹底剝離了Android和IOS的差異性.
將Weex VirsualDom的解析都替換成Flutter Widget.
設(shè)計(jì)基于Weex2Dart的Brider,使JS和Dart可以相互調(diào)用
weex-demo的性能展示
release環(huán)境下采用AOT模式,性能會(huì)有質(zhì)的飛躍。
Android-Release版本只有10m大小
相比Weex和Rn具有更好的性能,同時(shí)具有更好的跨平臺(tái)性
相比Flutter,具有動(dòng)態(tài)部署的能力(Flutter Release采用AoT模式并沒有動(dòng)態(tài)部署的能力,即使Debug版本也只是開發(fā)環(huán)境下才有動(dòng)態(tài)化能力并沒有可以實(shí)施項(xiàng)目的能力)
只需要會(huì)Weex開發(fā)或則Rn開發(fā)就可以,不需要額外學(xué)習(xí)Dart,已有的Weex項(xiàng)目可以無縫切換。
作為客戶端開發(fā)程序員,首當(dāng)其沖就是完成業(yè)務(wù)迭代,服務(wù)好產(chǎn)品用戶和業(yè)務(wù)團(tuán)隊(duì)。服務(wù)好產(chǎn)品用戶是業(yè)務(wù)團(tuán)隊(duì)存在的價(jià)值,服務(wù)好業(yè)務(wù)團(tuán)隊(duì)是客戶端開發(fā)存在的價(jià)值。業(yè)務(wù)發(fā)展要考慮變現(xiàn),要考慮增長,要考慮留存等等,最終落地的環(huán)節(jié)往往需要客戶端開發(fā)來實(shí)現(xiàn)。
除了業(yè)務(wù)迭代,根據(jù)業(yè)務(wù)特色和客戶端開發(fā)團(tuán)隊(duì)特點(diǎn),會(huì)圍繞高效研發(fā)體系和穩(wěn)定研發(fā)質(zhì)量不斷做優(yōu)化,也有的會(huì)嘗試跨端能力建設(shè)、新技術(shù)探索落地。在更大一點(diǎn)的公司還會(huì)關(guān)注團(tuán)隊(duì)的技術(shù)影響力輸出,以及不可忽視的安全和合規(guī)能力。
為了更好的衡量客戶端質(zhì)量,往往會(huì)用卡頓、卡死、crash等基礎(chǔ)指標(biāo)來評估質(zhì)量,同時(shí)也會(huì)不斷做包大小優(yōu)化、啟動(dòng)優(yōu)化、磁盤和流量監(jiān)控、流暢度優(yōu)化、cpu和電量優(yōu)化等等來提升基礎(chǔ)體驗(yàn)。同時(shí)還要關(guān)注研發(fā)過程中的效率提升,比如說研發(fā)流程優(yōu)化、編譯優(yōu)化、自動(dòng)化測試等等。
客戶端能做的事情非常多,有服務(wù)于用戶的業(yè)務(wù)方向,也有保障質(zhì)量的基礎(chǔ)方向,還有提供各種通用能力的中臺(tái)方向,還有從事各種跨端建設(shè)、音視頻處理、網(wǎng)絡(luò)建設(shè)等等 。從供需關(guān)系來看,智能手機(jī)的市場規(guī)模是客戶端開發(fā)崗位需求的天花板,全球接近40億的智能手機(jī)就是客戶端開發(fā)這個(gè)行業(yè)的未來保障。至于脈脈“客三消”理論鼓吹的大前端取代客戶端開發(fā),是典型的杞人憂天。從事過客戶端開發(fā)的程序員都知道客戶端原生Native開發(fā)是不可能被跨端的技術(shù)完全取代。RN、flutter等是在某些特定環(huán)境下會(huì)有不錯(cuò)應(yīng)用收益,但不管是交互體驗(yàn)、研發(fā)體驗(yàn),各項(xiàng)性能指標(biāo)都比不上原生開發(fā)語言。
客戶端開發(fā)是移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的產(chǎn)物,本身也有一些從事的風(fēng)險(xiǎn)點(diǎn),從我的經(jīng)歷來看,主要有以下問題:
客戶端的很多日常工作是需求開發(fā),需求開發(fā)主要是由各種業(yè)務(wù)邏輯、各類界面的實(shí)現(xiàn)。最常見的現(xiàn)象是 一年經(jīng)驗(yàn)用三年,三年經(jīng)驗(yàn)用十年 。由于客戶端所見即所得的特點(diǎn),很多開發(fā)者在度過前期的上手期之后,就一直重復(fù)使用類似的思考模式去解決問題。如果沒有環(huán)境壓迫,也沒有自己主動(dòng)去思考突破,會(huì)在日復(fù)一日的勞作中迷失成長。時(shí)間較長之后,往往會(huì)陷入能力增長的瓶頸期。
客戶端開發(fā)的求職者和招聘者之間,現(xiàn)在有一種相互矛盾的現(xiàn)象: 求職者感覺外面客戶端開發(fā)的需求量在不斷的變少,招聘者一直在苦惱招不到人。
客戶端開發(fā)的崗位減少是由于移動(dòng)互聯(lián)網(wǎng)的基建越來越成熟,相比流量成本和維護(hù)成本都更高的App,很多小公司選擇使用了更加便捷的小程序、公眾號、抖音短視頻等等大公司提供的基礎(chǔ)平臺(tái),導(dǎo)致了客戶端開發(fā)的崗位需求量在不斷減少。
招聘者苦惱的是招聘不到優(yōu)秀的開發(fā)者,由于互聯(lián)網(wǎng)行業(yè)常年有長期唱衰客戶端開發(fā)的現(xiàn)象(從以前的PC開發(fā)到現(xiàn)在是移動(dòng)端開發(fā)),再加上最近幾年興起的算法崗位和數(shù)據(jù)分析崗位競爭,越來越少的優(yōu)秀畢業(yè)生投身到客戶端的這個(gè)行業(yè)上,導(dǎo)致優(yōu)秀的開發(fā)者供不應(yīng)求。
“中年危機(jī)”是懸在程序員頭上的達(dá)摩克里斯之劍,這不僅僅是客戶端開發(fā)會(huì)面臨的問題,這是所有大齡程序員都必須面對的互聯(lián)網(wǎng)從業(yè)現(xiàn)狀。由于前面提到的互聯(lián)網(wǎng)基建成熟帶來了的客戶端崗位需求減少問題,客戶端開發(fā)在中年危機(jī)這個(gè)問題顯得更有壓力。
但是如果覺得從事前端開發(fā)或者后臺(tái)開發(fā)就不用面對中年危機(jī),就是太過于樂觀了。設(shè)想一下,一個(gè)公司為了節(jié)省成本都不做App了,他還會(huì)去招一個(gè)40的前端開發(fā)或者后端開發(fā)嗎?
互聯(lián)網(wǎng)行業(yè)在快速發(fā)展,薪酬待遇也在不斷提升,這也帶來源源不斷的新人。 當(dāng)一個(gè)新人和老人能力相差不大時(shí),性價(jià)比更高的新人往往更容易勝出。 想要避免中年危機(jī),唯有不斷鍛煉自己的能力,思考自己的不足之處,提升自己在市場的競爭力。
根據(jù)自己的粗淺認(rèn)知,我覺得有下面幾個(gè)方向可以努力。
大部分公司的官方回答永遠(yuǎn)是彈性工作制,事情干完就可以走。但是事情永遠(yuǎn)不可能做完,事情可以做完的公司還有市場競爭力?
我的看法是順應(yīng)潮流,合理安排時(shí)間。優(yōu)先完成工作的事情,然后利用多余時(shí)間來進(jìn)行學(xué)習(xí)。盡量不要把工作安排的滿滿當(dāng)當(dāng),這樣疲于奔命會(huì)讓生活非常疲憊;也不要夸大工作難度、渾水摸魚,摸魚是對自己最大的不負(fù)責(zé)。按公司提倡的工作時(shí)間,合理安排工期,如果還有一些時(shí)間可以放松下心態(tài),花點(diǎn)時(shí)間學(xué)習(xí)和成長。
可以從下面幾個(gè)方向去探索:
學(xué)習(xí)如何從重復(fù)工作中學(xué)習(xí)和成長是必須的,因?yàn)樵傩碌墓ぷ饕矔?huì)變成舊的工作。
學(xué)習(xí)的方向可以是做事、技術(shù)、思考、規(guī)劃、團(tuán)隊(duì)等等,找一個(gè)當(dāng)下最需要成長的能力開始鍛煉。合理使用環(huán)境的壓力,形成自己的學(xué)習(xí)和成長動(dòng)力;偏技術(shù)側(cè)需要自己拆分目標(biāo),逐步實(shí)現(xiàn)目標(biāo),這是非常重要的自驅(qū)力。
成長的過程很簡單,制定目標(biāo),實(shí)現(xiàn)目標(biāo)。目標(biāo)需要有一定的量化標(biāo)準(zhǔn),模棱兩可讓目標(biāo)變得不可觸碰。制定目標(biāo)也要考慮目標(biāo)的指引作用,對個(gè)人而言,目標(biāo)描述的過程會(huì)比結(jié)果更加重要。
努力學(xué)習(xí)換來好結(jié)果,好結(jié)果繼而激勵(lì)產(chǎn)生進(jìn)步動(dòng)力,建立一個(gè)良好的正向反饋循環(huán)。
一個(gè)職業(yè)的未來,要看行業(yè)的發(fā)展前景。 移動(dòng)互聯(lián)網(wǎng)的發(fā)展規(guī)模,注定客戶端在短期內(nèi)仍然是剛需。至于長期發(fā)展之后,移動(dòng)互聯(lián)網(wǎng)被新的時(shí)代取代,那么也會(huì)有新的崗位延伸出來,到時(shí)再緊跟時(shí)代潮流即可。
另外要把業(yè)務(wù)和技術(shù)分開,技術(shù)只是一個(gè)工具。在前期確實(shí)需要積累客戶端的知識和相關(guān)技術(shù),但是隨著時(shí)間的推移,慢慢會(huì)接觸更多的知識。不要給自己設(shè)限制,在適當(dāng)?shù)臅r(shí)機(jī)技術(shù)棧可以擴(kuò)大到后端。假如某個(gè)人只做某一個(gè)模塊,那么也需要去接觸這個(gè)模塊的前因后果,數(shù)據(jù)的產(chǎn)生消費(fèi)。眼界如果局限在客戶端,那么只能知其然不知其所以然。重點(diǎn)是在于人,人才是解決問題的核心,具體的技術(shù)只是工具。
分享名稱:flutter還是rn的簡單介紹
文章URL:http://chinadenli.net/article31/dsgjpsd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站導(dǎo)航、小程序開發(fā)、品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)