最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

大前端時(shí)代搞定PC/Mac端開(kāi)發(fā),我有絕招(收藏版)

 更新時(shí)間:2020年07月11日 11:29:14   作者:蕭文翰  
這篇文章主要介紹了大前端時(shí)代搞定PC/Mac端開(kāi)發(fā),我有絕招,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

如果你是一位前端開(kāi)發(fā)工程師,對(duì)“跨平臺(tái)”一詞應(yīng)該不會(huì)感到陌生。像常見(jiàn)的前端框架:比如React、Vue、Angular,它們可以做網(wǎng)頁(yè)端,也可以做移動(dòng)端,但很少能做到跨PC、Mac端,也就是我們熟知的Windows、Linux以及macOS上的應(yīng)用程序。即使有,受限于JS的性能瓶頸,當(dāng)有大量的科學(xué)計(jì)算需求時(shí),則會(huì)略顯疲態(tài)。
有沒(méi)有一個(gè)理想的UI框架能夠通殺它們所有呢?答案是——Flutter。

Flutter的性能優(yōu)勢(shì)

做為一個(gè)通用的跨平臺(tái)的UI框架,F(xiàn)lutter在性能方面的突出表現(xiàn)是非常引人奪目的。拿Android舉例,一個(gè)安卓的原生APP在繪圖的時(shí)候,要先調(diào)用Android框架的Java代碼,然后再調(diào)用skia(C/C++)繪圖引擎代碼,最后生成的CPU或者gpu的指令,在設(shè)備上完成繪圖。而Flutter的APP在繪圖的時(shí)候,是先調(diào)用Flutter框架的Dart代碼,然后直接調(diào)用skia(C/C++)代碼。所以只要Flutter框架Dart代碼的效率可以媲美原生框架的Java代碼的時(shí)候,那么Flutter的性能就可以媲美原生APP。
而如React Native,它首先要調(diào)用框架本身的JavaScript代碼,然后再調(diào)用Android框架的Java代碼,然后調(diào)用skia,這比原生的App運(yùn)行過(guò)程多出了一個(gè)步驟,所以它的這個(gè)性能肯定是不及原生的。
國(guó)內(nèi)知名的“閑魚(yú)”技術(shù)團(tuán)隊(duì)對(duì)于Flutter在性能上逼近原生App的解釋如下:

1.預(yù)先(AOT)編譯,運(yùn)行時(shí)直接執(zhí)行Native(arm)代碼;
2.必需的同Native通信(channel)是C++層次,性能好;
3.其線程模型中Dart代碼執(zhí)行(在UI TaskRunner),圖片下載(IO TaskRunner),真正的渲染(GPU TaskRunner),同平臺(tái)的通信等(Platform TaskRunner即Native概念下的主線程)是互相隔離的。透過(guò)將耗時(shí)的邏輯放入IO TaskRunner或新開(kāi)Isolate(會(huì)在Dart線程池中執(zhí)行);GPU TaskRunner可以將幀數(shù)據(jù)提交給GPU時(shí)UI TaskRunner已在準(zhǔn)備下一幀數(shù)據(jù)這種流水線的機(jī)制提高了渲染速度;
4.Flutter層面針對(duì)布局等的優(yōu)化:布局計(jì)算時(shí)單次樹(shù)走動(dòng)即可完成;Relayout Boundary機(jī)制:如果Child 的size是固定的,那么不會(huì)因?yàn)镃hild的Relayout導(dǎo)致Parent ReLayout;Repaint Boundry機(jī)制:如果樹(shù)的某個(gè)子樹(shù)如果同樹(shù)的其他部分不同頻地重繪,那么RenderRepaintBoundary可以改善性能。
5.Skia團(tuán)隊(duì)針對(duì)Flutter的優(yōu)化。
6.框架的布局優(yōu)化對(duì)上層開(kāi)發(fā)透明。

如果你有一定的前端開(kāi)發(fā)經(jīng)驗(yàn),特別是移動(dòng)端的開(kāi)發(fā)經(jīng)驗(yàn),或者深入探究過(guò)Flutter,上述內(nèi)容應(yīng)該不難理解。
如今,使用Flutter開(kāi)發(fā)移動(dòng)端App的教程鋪天蓋地,我來(lái)手把手教你如何使用Flutter搞定PC、Mac端開(kāi)發(fā),從此徹底打通前端跨平臺(tái)。

PC端實(shí)戰(zhàn)

1. 準(zhǔn)備工作

首先我們要確保Flutter開(kāi)發(fā)環(huán)境準(zhǔn)備就緒。有關(guān)搭建開(kāi)發(fā)環(huán)境的步驟,可參閱:
https://flutter.cn/docs/get-started/install
此處不再贅述,我們重點(diǎn)關(guān)注下面的操作:
到今天為止,在Stable分支上的Flutter SDK可以設(shè)置啟用PC端開(kāi)發(fā)的能力,但實(shí)際上是無(wú)法使用的。因此,我們需要將其切換到master分支上。切換的方法是在命令行窗口執(zhí)行下面的語(yǔ)句:

flutter channel master

或許也可以直接git方式切換,但我沒(méi)有嘗試,感興趣的朋友可以自行嘗試。
在回顯切換成功的提示后,記得執(zhí)行

flutter upgrade

升級(jí)到最新的SDK(包含Dart)版本。
另外,如果你使用的是Windows的話,還需要安裝Visual Studio開(kāi)發(fā)軟件,并安裝Desktop development with C++的Workload(中文名為:工作負(fù)載)。如果是macOS,則無(wú)需安裝Visual Studio。

2. 啟用PC端開(kāi)發(fā)支持

在命令行執(zhí)行

flutter config --enable-windows-desktop

稍等幾秒后即可完成??刂婆_(tái)將如下輸出:

Setting "enable-windows-desktop" value to "true".
You may need to restart any open editors for them to read new settings.

成功啟用后,執(zhí)行

flutter devices

列出已連接的調(diào)試設(shè)備列表,首次執(zhí)行可能會(huì)花費(fèi)一些時(shí)間下載必要的開(kāi)發(fā)工具包。隨后,可以看到如下類(lèi)似的輸出結(jié)果:

1 connected device:
Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.18363.900]

其他操作系統(tǒng)環(huán)境類(lèi)似。
另外,我們也可以隨時(shí)執(zhí)行

flutter config

查看目前的配置。還可以隨時(shí)還原為默認(rèn)設(shè)定。

Settings:
enable-windows-desktop: true

3. 創(chuàng)建項(xiàng)目

這一步無(wú)需多言,在相應(yīng)的目錄下執(zhí)行

flutter create [項(xiàng)目名]

即可。

4. 遷移項(xiàng)目

對(duì)于之前沒(méi)有啟用PC端開(kāi)發(fā)支持的工程,或者需要遷移到PC、Mac端的工程,需要在項(xiàng)目根目錄下執(zhí)行

flutter create .

(注意最后的點(diǎn))

5. 運(yùn)行程序

這一步無(wú)需多言,進(jìn)入項(xiàng)目根目錄,然后執(zhí)行

flutter run

即可看到運(yùn)行結(jié)果。

好了,接下來(lái)就是實(shí)現(xiàn)具體業(yè)務(wù)的環(huán)節(jié)了。

到此這篇關(guān)于大前端時(shí)代搞定PC/Mac端開(kāi)發(fā),我有絕招的文章就介紹到這了,更多相關(guān)大前端時(shí)代PC/Mac端開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在ubuntu18.04版本安裝vscode(2種)

    在ubuntu18.04版本安裝vscode(2種)

    這篇文章主要介紹了在ubuntu18.04版本安裝vscode,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • IDEA 2020 設(shè)置項(xiàng)目集成git 及svn和git之間的切換問(wèn)題

    IDEA 2020 設(shè)置項(xiàng)目集成git 及svn和git之間的切換問(wèn)題

    這篇文章主要介紹了IDEA 2020 設(shè)置項(xiàng)目集成git 及svn和git之間的切換問(wèn)題,本文通關(guān)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 有效的提高編程技能的12個(gè)方法

    有效的提高編程技能的12個(gè)方法

    以下是提高編程技能的12個(gè)方法,主要是不停學(xué)習(xí),努力成全才,跟聰明人或有想法的一起
    2012-05-05
  • 在地址欄里顯示logo的實(shí)現(xiàn)方法

    在地址欄里顯示logo的實(shí)現(xiàn)方法

    在地址欄里顯示logo,其實(shí)大家可以看一些網(wǎng)站的頭部里面,下面的方法講的更仔細(xì)。
    2009-02-02
  • CentOS下安裝Jenkins的完整步驟

    CentOS下安裝Jenkins的完整步驟

    Jenkins是一款由Java編寫(xiě)的開(kāi)源的持續(xù)集成工具,下面這篇文章主要介紹了CentOS下安裝Jenkins的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No active executors found

    Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No acti

    這篇文章主要介紹了Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No active executors found,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-05-05
  • Wireshark TS FTP 傳輸失敗問(wèn)題解決

    Wireshark TS FTP 傳輸失敗問(wèn)題解決

    這篇文章主要為大家介紹了Wireshark TS FTP 傳輸失敗問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Python雖然很火找工作為什么這么難

    Python雖然很火找工作為什么這么難

    這兩年因?yàn)榈谌ㄈ斯ぶ悄軣岢弊?Python火了一把,讓中小學(xué)生、非程序員(產(chǎn)品經(jīng)理、運(yùn)營(yíng))都加入到了學(xué)習(xí)Python的行列,那之前Python火嗎
    2019-06-06
  • Solidity 變量詳解之類(lèi)型、作用域與最佳實(shí)踐記錄

    Solidity 變量詳解之類(lèi)型、作用域與最佳實(shí)踐記錄

    這篇文章主要介紹了Solidity 變量詳解:類(lèi)型、作用域與最佳實(shí)踐,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Git命令常用操作之代碼拉取和提交方式

    Git命令常用操作之代碼拉取和提交方式

    這篇文章主要介紹了Git命令常用操作之代碼拉取和提交方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論

怀仁县| 沅江市| 南澳县| 柳州市| 大埔县| 喀喇沁旗| 繁峙县| 平乐县| 嘉兴市| 新泰市| 闻喜县| 重庆市| 临武县| 新营市| 紫阳县| 双桥区| 稷山县| 华亭县| 密云县| 五常市| 独山县| 定南县| 库伦旗| 枣阳市| 陇西县| 博爱县| 大姚县| 巢湖市| 桑植县| 晋宁县| 天水市| 江永县| 苗栗县| 巴彦淖尔市| 扎赉特旗| 乐山市| 皋兰县| 麻阳| 上栗县| 红河县| 淮安市|