Flutter 是一個(gè)非常優(yōu)秀的開(kāi)發(fā)框架,借助 Flutter,開(kāi)發(fā)者可以在 iOS 以及 Android 平臺(tái)自由地發(fā)揮創(chuàng)意,構(gòu)建交互豐富的、精美的應(yīng)用程序。
Flutter產(chǎn)品團(tuán)隊(duì)透露,創(chuàng)建Flutter的初衷是試圖徹底改變應(yīng)用開(kāi)發(fā):將網(wǎng)絡(luò)的迭代開(kāi)發(fā)模式與硬件加速圖形渲染和像素級(jí)控制相結(jié)合,而這在以前是游戲的專(zhuān)利。自Flutter 1.0測(cè)試版以來(lái)的四年里,逐漸在這些基礎(chǔ)上發(fā)展,增加了新的框架功能和新的小工具,與底層平臺(tái)更深入的整合,豐富的包庫(kù)和許多性能和工具的改進(jìn)。
Flutter 3.0 更新內(nèi)容
在2022年谷歌開(kāi)發(fā)大會(huì)上,作為I/O主題演講的一部分,主創(chuàng)團(tuán)隊(duì)正式推出 Flutter 3.0??偟膩?lái)說(shuō) Flutter 3.0 完成了從以移動(dòng)為中心到多平臺(tái)框架的路線圖,提供了對(duì)macOS和Linux桌面應(yīng)用的支持,以及對(duì)Firebase集成的改進(jìn),新的生產(chǎn)力和性能特性,并支持Apple Silicon。
具體來(lái)看,F(xiàn)lutter 3.0 增加了對(duì)macOS和Linux應(yīng)用的穩(wěn)定支持。增加平臺(tái)支持需要的不僅僅是渲染像素:它包括新的輸入和交互模型、編譯和構(gòu)建支持、可訪問(wèn)性和國(guó)際化,以及特定平臺(tái)的整合。目標(biāo)是讓大家能夠靈活地充分利用底層操作系統(tǒng),同時(shí)盡可能多地分享開(kāi)發(fā)者選擇的用戶界面和邏輯。
在macOS上,已經(jīng)支持英特爾和蘋(píng)果Silicon,并提供通用二進(jìn)制支持,使應(yīng)用程序能夠打包可執(zhí)行文件,在兩種架構(gòu)上原生運(yùn)行。在Linux上,Canonical和谷歌已經(jīng)合作為開(kāi)發(fā)提供了一個(gè)高度集成的、最好的選擇。
Flutter 3還對(duì)許多基本要素進(jìn)行了改進(jìn),提高了性能,支持Material You,并更新了生產(chǎn)力。
Flutter 應(yīng)用情況
隨著 Flutter 開(kāi)發(fā)框架的不斷成熟,越來(lái)越多的人開(kāi)始用它構(gòu)建應(yīng)用程序。截止目前,有超過(guò)50萬(wàn)個(gè)應(yīng)用程序是用Flutter建立的。來(lái)自data.ai等研究公司的分析,以及公眾的評(píng)價(jià),表明Flutter被許多細(xì)分領(lǐng)域的客戶所使用:從微信等社交應(yīng)用到Betterment和Nubank等金融和銀行應(yīng)用;從SHEIN和trip.com等商務(wù)應(yīng)用到Fastic和Tabcorp等生活方式應(yīng)用;從My BMW等伴侶應(yīng)用到巴西政府等公共機(jī)構(gòu)。
同時(shí)在 Flutter 3.0 發(fā)布會(huì)上,研發(fā)團(tuán)隊(duì)發(fā)布了基于開(kāi)發(fā)者的調(diào)研數(shù)據(jù):
- 91% 的開(kāi)發(fā)者認(rèn)為 Flutter 縮短了構(gòu)建和發(fā)布應(yīng)用程序的時(shí)間。
- 85%的開(kāi)發(fā)者認(rèn)為Flutter使他們的應(yīng)用程序比以前更漂亮。
- 85%的人認(rèn)為Flutter使他們的應(yīng)用比以前能在更多的平臺(tái)上發(fā)布。
Flutter 與小程序
小程序作為我國(guó)技術(shù)研發(fā)屆的一個(gè)獨(dú)特產(chǎn)物,由于其輕量、便捷、優(yōu)質(zhì)的體驗(yàn)在近些年得到迅速的發(fā)展,特別是在騰訊、阿里、百度、字節(jié)等各家大廠的小程序開(kāi)發(fā)平臺(tái)助推下,其中僅微信小程序的數(shù)量就超過(guò)700萬(wàn),小程序開(kāi)發(fā)者數(shù)量300-400萬(wàn)人,規(guī)模相當(dāng)驚人。
小程序與 Flutter 最密切關(guān)聯(lián)還是在渲染優(yōu)化上,先來(lái)看看整個(gè)框架:
在這個(gè)架構(gòu)下,我們就將 Layout 層的 LV-CPP 專(zhuān)門(mén)的作為小程序的 UI 體系處理器,將 UI 信息布局計(jì)算好再提交給抽象的后端去渲染,LV-CPP 作為小程序的框架和渲染器的中間層,集中的在 C++ 層去處理與 Web 相關(guān)的復(fù)雜特性。渲染端就可以基于特定的協(xié)議和接口專(zhuān)注將元素轉(zhuǎn)化為 UI 組件,最終繪制出來(lái)。
通過(guò)結(jié)合 Flutter 和 LV-CPP,我們把實(shí)現(xiàn)代碼收斂在 C++ 和 Dart 上,進(jìn)一步簡(jiǎn)化了基于小程序技術(shù)棧實(shí)現(xiàn)跨平臺(tái)業(yè)務(wù)開(kāi)發(fā)的框架維護(hù)成本。
再來(lái)看看各家廠商是如何開(kāi)展的:
京東:把Flutter擴(kuò)展到微信小程序端的探索
京東發(fā)起了Flutter_mp的開(kāi)源項(xiàng)目,此框架主要做到兩件事情:
1.需要根據(jù)Flutter生成相關(guān)的小程序wxml模板文件。
2.收集wxml渲染需要的數(shù)據(jù),放置到小程序組件的data字段。
flutter_mp還處于早期的實(shí)驗(yàn)階段,很多功能還在探索規(guī)劃中,只支持Center,Column,Container,Expanded,Image.asset,ListView,Row,Text這些基本W(wǎng)idget,暫不支持 自定義Widget,而且自己的Flutter代碼只能夠出現(xiàn)在lib/main.dart文件中。
美團(tuán):基于跨平臺(tái)框架 Flutter 的動(dòng)態(tài)化平臺(tái)建設(shè)
微信和咸魚(yú)都強(qiáng)調(diào)Flutter的跨平臺(tái),而美團(tuán)則強(qiáng)調(diào)了Flutter的動(dòng)態(tài)化,而我們知道,F(xiàn)lutter不支持線上的動(dòng)態(tài)化,所以美團(tuán)的分享主要圍繞邏輯層動(dòng)態(tài)化和渲染層動(dòng)態(tài)化來(lái)進(jìn)行。
美團(tuán)在動(dòng)態(tài)化引擎部分預(yù)置了一個(gè)JSC模塊,也就是JsCore,通過(guò)JSC來(lái)執(zhí)行JavaScript從而實(shí)現(xiàn)邏輯層的動(dòng)態(tài)化,而渲染層動(dòng)態(tài)化則通過(guò)xml+css來(lái)展示,然后解析生成布局樹(shù)并最終通過(guò)Flutter來(lái)渲染。
微信:基于小程序技術(shù)棧的微信客戶端跨平臺(tái)實(shí)踐
微信小程序,最開(kāi)始是采用Webview渲染的方案,后面又采用了React-Native-Like的方案,再后來(lái)微信提出了一個(gè)很大膽的想法:上層依然使用WXML+WXSS來(lái)表示,但是底層使用Flutter引擎來(lái)渲染,而且他們覺(jué)得Platform Channel通信效率低,自己整了一個(gè)dart2cpp的模塊來(lái)負(fù)責(zé)通信。目前微信不會(huì)放棄 WebView 渲染,嘗試僅限于微信客戶端內(nèi)部部分場(chǎng)景使用。
FinClip:基于小程序技術(shù)的跨端開(kāi)發(fā)平臺(tái)建設(shè)
FinClip 作為小程序容器技術(shù),也可以說(shuō)是小程序沙箱Runtime/Engine,提供Runtime基于瀏覽器內(nèi)核,采用動(dòng)態(tài)語(yǔ)言(JS)和聲明式View構(gòu)建(XML),兼容互聯(lián)網(wǎng)主流小程序技術(shù),可采用Vue、react基礎(chǔ)上的DSL框架。
實(shí)際上不與Flutter、Reactive-Native、100% Native或Framework們技術(shù)沖突,嵌入即可,個(gè)體小程序開(kāi)發(fā)依然可享受React等Web Framework、mate Framework、DSL Framework 的成果
FinClip小程序容器技術(shù),將視圖層與邏輯層分離也帶來(lái)了許多好處:
1、方便多個(gè)小程序頁(yè)面之間的數(shù)據(jù)共享和交互。在小程序的生命周期中具有相同的上下文可以為具備原生應(yīng)用程序開(kāi)發(fā)背景的開(kāi)發(fā)人員提供熟悉的編碼體驗(yàn);
2、Service和View的分離和并行實(shí)現(xiàn)可以防止JS執(zhí)行影響或減慢頁(yè)面渲染,這有助于提高渲染性能;
3、因?yàn)镴S在Service層執(zhí)行,所以JS里面操作的DOM將不會(huì)對(duì)View層產(chǎn)生影響,所以小程序不能操作DOM結(jié)構(gòu)的,這也使得小程序的性能比傳統(tǒng)的H5更好。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-479454.html
FinClip 提供了Flutter SDK,支持在 Flutter 環(huán)境使用小程序;以滿足 Flutter 和小程序混編的效果。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-479454.html
到了這里,關(guān)于如何利用Flutter框架開(kāi)發(fā)運(yùn)行小程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!