欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter簡化,簡書 flutter

2022 年將成為主導(dǎo)的頂級編程語言

編程語言是程序員(開發(fā)人員)用來與計算機(jī)進(jìn)行通信的計算機(jī)語言。它是用任何特定語言(C、C++、Java、Python)編寫的一組指令,用于執(zhí)行特定任務(wù)。編程語言主要用于開發(fā)桌面應(yīng)用程序、網(wǎng)站和移動應(yīng)用程序。以下是 2022 年最流行的頂級語言。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

Python

Python 是由 Guido van Rossum 于 1980 年代后期在荷蘭構(gòu)建的。Python 最初是作為 Java 在行業(yè)中的競爭對手而構(gòu)建的,后來逐漸流行起來。目前,Python 在研究人員和開發(fā)人員社區(qū)中都非常受歡迎。Python 在 IEEE Spectrum 的語言排名中名列前茅,得分為滿分 100。此外,Python 也很受尊重,支持率高達(dá) 44.1%。

Python 幾乎適用于任何事物。Django 和 Flask 可用于 Web 開發(fā),而 Jupyter 和 Spyder 等科學(xué)工具則用于分析和研究目的。如果您喜歡自動化,Selenium 可以幫助您!該語言的靈活性使 Python 幾乎可以在任何地方使用。到目前為止,這些是 Python 中比較流行的產(chǎn)品。Python 的巨大支持基礎(chǔ)(僅次于 JavaScript)產(chǎn)生了大量使用該語言的包、框架,甚至是成熟的開源軟件。

總的來說,Python 可能對數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)有最大的支持。雖然還有其他語言(如 R 和 MATLAB)提供競爭,但 Python 是數(shù)據(jù)科學(xué)領(lǐng)域的嚴(yán)格統(tǒng)治者。機(jī)器學(xué)習(xí)中使用的大多數(shù)框架和庫都僅用 Python 編寫,如果想要學(xué)習(xí)機(jī)器學(xué)習(xí)(或一般的數(shù)據(jù)科學(xué)),它可能是最好的語言。

JavaScript

JavaScript 在這一點上幾乎是行業(yè)領(lǐng)導(dǎo)者。JavaScript 最初于 1994 年作為 Netscape Navigator(當(dāng)時最好的瀏覽器之一)的腳本語言而構(gòu)建,它迅速崛起。直到 2008 年,Google 才在為 Google Chrome 構(gòu)建 V8 引擎時設(shè)計了現(xiàn)代 JavaScript。最初由 Netscape 構(gòu)建為 Java 的競爭對手,JavaScript 現(xiàn)在在開發(fā)領(lǐng)域擁有自己的空間。JavaScript 因其流行而被廣泛認(rèn)為是“互聯(lián)網(wǎng)語言”。JavaScript 在開發(fā)者社區(qū)中的支持率最高——高達(dá) 67.7%。一般來說,JavaScript 適用于任何類型的開發(fā)活動,如移動應(yīng)用程序開發(fā)、Web 開發(fā)、桌面應(yīng)用程序開發(fā)等。

JavaScript 有各種各樣的庫和框架,可以在開發(fā)過程中使用。有用于前端開發(fā)的 Angular、Vue 和 React,而 Node.js 是一種用于后端開發(fā)的非常靈活的語言。Jest 和 Mocha 是兩個靈活的工具,可幫助設(shè)置單元測試以檢查功能是否按預(yù)期工作。當(dāng)然,如果您對其中任何一個都不太滿意,您可以在前端使用普通的 HTML、CSS 和 JavaScript——就這么簡單!由于來自世界各地開發(fā)人員的巨大支持,JavaScript 擁有任何語言都可以夸耀的最多數(shù)量的支持包。盡管如此,人們繼續(xù)構(gòu)建越來越多的包,以增加使用該語言的便利性。

Java

Java 由 James Gosling、Mike Sheridan 和 Patrick Naughton 于 1991 年構(gòu)建為“Oak”語言,是第一種在全球產(chǎn)生重大影響的語言。雖然新的編程語言使用與 C/C++ 相同的格式,但它融入了某些新思想,使其對更多人更具吸引力。Java 運行的原則是“一次編寫,隨處運行”——這意味著具有不同硬件和操作系統(tǒng)配置的系統(tǒng)可以輕松運行 Java 程序。

Java 也有各種各樣的庫和框架,它們在底層使用 Java。Java 用于通過 Spring 和 Hibernate 進(jìn)行應(yīng)用程序開發(fā)。JUnit 幫助我們?yōu)?Java 項目設(shè)置單元測試。最重要的是,Java 被用于開發(fā)原生 Android 應(yīng)用程序(Android SDK 本身由 Java 開發(fā)工具包或 JDK 提供支持)。Java 可能是大多數(shù)人在大學(xué)或?qū)W校的計算機(jī)編程入門課程中被介紹的語言。Java 是用于向大眾教授面向?qū)ο缶幊痰恼Z言。

Java 在分析和研究領(lǐng)域也備受推崇。Java 唯一的問題是目前該語言的支持包和項目很少。很少有社區(qū)參與——這是大多數(shù)主流語言都有的。盡管如此,Java 是一種非常容易掌握和學(xué)習(xí)的語言——這在一定程度上解釋了該語言的吸引力。但是,要掌握某種形式的語言確實需要一些時間。

C++

也許人們在本文中可以期待的最令人震驚的答案之一是 C++。盡管是大多數(shù)人用來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法概念的語言,但該語言本身在實際世界中卻很少使用。C++ 最初由 Bjarne Stroustrup 于 1982 年創(chuàng)建,作為 C 編程語言的擴(kuò)展,在接下來的幾年中繼續(xù)聲名鵲起。

C++ 可用于分析、研究以及 游戲 內(nèi)開發(fā)。流行的 游戲 開發(fā)引擎——虛幻引擎——使用 C++ 作為腳本語言,用于構(gòu)建 游戲 時可以定義的所有功能。C++ 在軟件開發(fā)中也有廣泛的用途。介于面向?qū)ο蠓椒ê兔嫦蚍椒ǚ椒ㄖg,C++ 可以靈活地使用它生成的軟件的性質(zhì)。在 TIOBE 指數(shù)中排名第 4 意味著 C++ 至今仍具有吸引力。C++也廣泛用于系統(tǒng)軟件開發(fā),比其他語言更容易理解。在操作系統(tǒng)等敏感領(lǐng)域使用 C++ 的主要原因是 C++ 程序的編譯時間非常短。

C++ 可能擁有所有語言中最大的學(xué)習(xí)社區(qū)。大多數(shù)學(xué)生會開始他們的算法課程,用 C++ 構(gòu)建樹、鏈表、堆棧、隊列和許多其他數(shù)據(jù)結(jié)構(gòu)。當(dāng)然,只要注意細(xì)節(jié),它就很容易上手和學(xué)習(xí),也很容易掌握。

Typescript

TypeScript 是 JavaScript 的超集,具有與 JavaScript 幾乎相同的應(yīng)用程序。TypeScript 可用于 Web 開發(fā)、移動應(yīng)用程序開發(fā)、桌面應(yīng)用程序開發(fā)等。在 StackOverflow 的最受歡迎語言列表中,TypeScript 是第二受歡迎的語言,受到 67.1% 的開發(fā)人員的喜愛(僅次于 Rust)。

TypeScript 主要是一種用于開發(fā)的語言,因此它對科學(xué)界沒有太大吸引力。但是,由于 TypeScript 的新功能,可以預(yù)期它可能會激發(fā)更大程度的研究興趣。該語言的技能上限比 JavaScript 低得多——并且 JavaScript 的許多“難以理解”的行為已在 TypeScript 中得到簡化。換句話說,您將頭撞到墻上的機(jī)會略小。

Golang

新語言正在迅速崛起,新的競爭者即將挑戰(zhàn) JavaScript 和 Python 擁有的寶座。由谷歌(兩者的名字中都有“Go”!)主要是為了推進(jìn)函數(shù)式編程的事業(yè),Golang 在短時間內(nèi)建立了大量的追隨者。Golang 已經(jīng)成為 StackOverflow 第五大最適合學(xué)習(xí)的語言,受到 62.3% 的開發(fā)人員的喜愛。

Golang 用于多個領(lǐng)域,用于開發(fā)強(qiáng)大的軟件以及用于 Web 和移動應(yīng)用程序的后端。目前,Golang 甚至支持一些基本的 Web 開發(fā)。雖然它仍處于取代 JavaScript 作為網(wǎng)絡(luò)語言的階段,但它正在迅速成為支持下一階段網(wǎng)絡(luò)的語言。

Golang 比此列表中的其他語言更難學(xué)習(xí)。此外,Golang 是一種開源語言,每次重大更新都會頻繁更改,因此保持更新是必要的。

Dart

Dart 是工業(yè)領(lǐng)域發(fā)展最快的語言之一。谷歌在語言領(lǐng)域的貢獻(xiàn)顯著增加,以與微軟的 TypeScript 日益流行的競爭相抗衡。Dart 因其簡單性而受到世界各地程序員的高度喜愛。

Dart 用于多平臺應(yīng)用程序開發(fā)。與 JavaScript 一樣,Dart 用于構(gòu)建任何人都可以使用電子設(shè)備運行的軟件。目前 Dart 最著名的用途是 Flutter 框架,F(xiàn)lutter 是一種用于移動應(yīng)用程序開發(fā)的語言。最近的谷歌趨勢表明,F(xiàn)lutter 盡管是一個較新的框架,但比 React Native 更受歡迎,后者是業(yè)界已經(jīng)建立的移動應(yīng)用程序開發(fā)框架。

Dart 比 JavaScript 更容易學(xué)習(xí),并且能夠很好地簡化甚至難以理解的案例。隨著市場上的 TypeScript 和 Dart 的出現(xiàn),程序員在選擇一種他們真正想要學(xué)習(xí)的語言時會面臨多種選擇。

Flutter_定義控件StatefulWidgets和StatelessWidget

Stateful(有狀態(tài)) 和 stateless(無狀態(tài)) widgets

stateless widget 沒有內(nèi)部狀態(tài). Icon、 IconButton, 和Text 都是無狀態(tài)widget, 他們都是 StatelessWidget的子類。

stateful widget 是動態(tài)的. 用戶可以和其交互 (例如輸入一個表單、 或者移動一個slider滑塊),或者可以隨時間改變 (也許是數(shù)據(jù)改變導(dǎo)致的UI更新). Checkbox, Radio, Slider, InkWell, Form, and TextField 都是 stateful widgets, 他們都是 StatefulWidget的子類。

StatefulWidget類

具有可變狀態(tài)的小部件。

狀態(tài)是(1)在構(gòu)建窗口小部件時可以同步讀取的信息,以及(2)在窗口小部件的生命周期內(nèi)可能會更改的信息。這是小工具實施者的責(zé)任,以確保國家的及時通知當(dāng)這種狀態(tài)的改變,使用State.setState。

有狀態(tài)窗口小部件是一個窗口小部件,它通過構(gòu)建一個更具體地描述用戶界面的其他窗口小部件來描述用戶界面的一部分。構(gòu)建過程以遞歸方式繼續(xù),直到用戶界面的描述完全具體(例如,完全由RenderObjectWidget組成,其描述具體的RenderObject)。

當(dāng)您描述的用戶界面部分可以動態(tài)更改時(例如由于具有內(nèi)部時鐘驅(qū)動狀態(tài)或依賴于某些系統(tǒng)狀態(tài)),狀態(tài)窗口小部件非常有用。對于僅依賴于對象本身中的配置信息以及窗口小部件膨脹的 BuildContext的組合,請考慮使用 StatelessWidget。

StatefulWidget實例本身是不可變的,并且將它們的可變狀態(tài)存儲在由createState方法創(chuàng)建的單獨State對象中 ,或者存儲在State訂閱的對象中,例如Stream或ChangeNotifier對象,其引用存儲在StatefulWidget的最終字段中本身。

框架在膨脹StatefulWidget時 調(diào)用createState,這意味著如果該窗口小部件已插入到多個位置的樹中,則多個State對象可能與同一StatefulWidget關(guān)聯(lián)。同樣,如果StatefulWidget從樹中移除,后來在樹再次插入時,框架將調(diào)用createState再創(chuàng)建一個新的國家目標(biāo),簡化的生命周期狀態(tài)的對象。

如果StatefulWidget的創(chuàng)建者使用GlobalKey作為其 鍵,則StatefulWidget在從樹中的一個位置移動到另一個位置時保持相同的State對象。由于具有GlobalKey的窗口小部件可以在樹中的至多一個位置使用,因此使用GlobalKey的窗口小部件最多只有一個關(guān)聯(lián)元素。當(dāng)通過將與該窗口小部件關(guān)聯(lián)的(唯一)子樹從舊位置移植到新位置(而不是在該位置重新創(chuàng)建子樹)時,框架利用此屬性將全局鍵從樹中的一個位置移動到另一個位置時利用此屬性。新的位置)。與StatefulWidget關(guān)聯(lián)的State對象與子樹的其余部分一起被移植,這意味著State對象在新位置被重用(而不是被重新創(chuàng)建)。但是,為了有資格進(jìn)行嫁接,必須將窗口小部件插入到從舊位置移除它的同一動畫幀中的新位置。

StatefulWidget有兩個主要類別。

首先是其中一個分配資源State.initState并在他們的處置State.dispose,但不依賴于InheritedWidget S或致電State.setState。這些小部件通常在應(yīng)用程序或頁面的根目錄中使用,并通過ChangeNotifier, Stream或其他此類對象與子小部件進(jìn)行通信。遵循這種模式的有狀態(tài)小部件相對便宜(就CPU和GPU周期而言),因為它們構(gòu)建一次然后永不更新。因此,它們可能有一些復(fù)雜和深刻的構(gòu)建方法。

第二類是使用State.setState或依賴于 InheritedWidget的小部件。這些通常會在應(yīng)用程序的生命周期內(nèi)重建多次,因此最小化重建此類窗口小部件的影響非常重要。(他們也可以使用State.initState或 State.didChangeDependencies并分配資源,但重要的是他們重建。)

可以使用幾種技術(shù)來最小化重建有狀態(tài)窗口小部件的影響:

StatelessWidget類

一個不需要可變狀態(tài)的小部件。

無狀態(tài)窗口小部件是一個窗口小部件,它通過構(gòu)建一個更具體地描述用戶界面的其他窗口小部件來描述用戶界面的一部分。構(gòu)建過程以遞歸方式繼續(xù),直到用戶界面的描述完全具體(例如,完全由RenderObjectWidget組成,其描述具體的RenderObject)。

當(dāng)您描述的用戶界面部分不依賴于對象本身的配置信息以及窗口小部件膨脹的BuildContext時,無狀態(tài)窗口小部件非常有用。對于可以動態(tài)更改的組合,例如由于具有內(nèi)部時鐘驅(qū)動狀態(tài)或依賴于某些系統(tǒng)狀態(tài),請考慮使用StatefulWidget。

無狀態(tài)窗口小部件的構(gòu)建方法通常僅在以下三種情況下調(diào)用:第一次將窗口小部件插入樹中,窗口小部件的父窗口更改其配置時,以及何時依賴于更改的InheritedWidget。

如果窗口小部件的父級將定期更改窗口小部件的配置,或者它依賴于經(jīng)常更改的繼承窗口小部件,則優(yōu)化構(gòu)建方法的性能以保持流暢的呈現(xiàn)性能非常重要。

可以使用幾種技術(shù)來最小化重建無狀態(tài)窗口小部件的影響:

現(xiàn)在都用什么框架開發(fā)軟件或網(wǎng)頁?

1. Spring

Spring框架是一款功能強(qiáng)大的輕量級Web應(yīng)用開發(fā)框架。面對需要高性能的復(fù)雜Web應(yīng)用需求,Spring能夠提供出色的開發(fā)服務(wù),因此它在各個框架中能夠脫穎而出。Spring框架的核心宗旨是使得Java開發(fā)人員可以輕松地創(chuàng)建出企業(yè)級的應(yīng)用程序。

Spring提供了包括:Spring MVC、Spring Core、Spring Security、Spring Transaction、Spring Boost、以及Spring ORM在內(nèi)的許多模塊,以方便企業(yè)應(yīng)用根據(jù)實際情況靈活選用。如果您想深入了解其具體的使用場景和用法的話,可以參見《Spring框架注釋指南(A Guide to Spring Framework Annotations)》。

優(yōu)點

它提供了一個輕量級的容器,用戶無需使用Web服務(wù)器、或應(yīng)用服務(wù)器軟件,即可啟動之。

由于支持JDBC,因此可提高實際應(yīng)用的生產(chǎn)率,并減少錯誤率。

Spring能夠同時支持XML,以及基于注釋的配置。

它提供了代碼的向后兼容性,和可測試性。

2. JSF(Java Server Faces)

由Oracle開發(fā)的Java Server Faces(JSF),可用于創(chuàng)建企業(yè)級的應(yīng)用程序、各種原生應(yīng)用、以及Web應(yīng)用的開發(fā)。它往往也被用于為基于Java的應(yīng)用開發(fā)用戶界面。

作為一款穩(wěn)定的、且基于組件的MVC框架,JSF具有一種清晰的體系結(jié)構(gòu),用戶可以用它來明確地區(qū)分出目標(biāo)應(yīng)用的邏輯和表示。

JSF只需通過拖放UI組件,即可幫助開發(fā)人員創(chuàng)建用戶界面。開發(fā)者無需掌握諸如:HTML、CSS、JavaSript之類的高級客戶端技術(shù)知識,便可用它來簡化應(yīng)用程序的表示層,并進(jìn)行開發(fā)。

優(yōu)點

JSF是Java EE的組成部分。

它提供了出色的工具和豐富的庫。

由于允許用戶使用Web界面,來擴(kuò)展現(xiàn)有的后端Java代碼,因此用戶不必通過引入新的框架,來更改基本的應(yīng)用程序。

3. Google Web Toolkit

Google Web Toolkit(GWT)是一個完全免費的,流行且開源的Web框架。它可以幫助開發(fā)人員針對Java Ajax應(yīng)用進(jìn)行開發(fā)和調(diào)試。

借助GWT,您可以編寫出各種復(fù)雜的、基于瀏覽器的應(yīng)用程序,而無需具備JavaScript等前端技術(shù)方面的專業(yè)知識。

當(dāng)然,GWT也有一些獨特的功能,其中包括:跨瀏覽器的可移植性、歷史記錄的管理、國際化、以及書簽。許多Google產(chǎn)品,包括:AdSense、Google Wallet、以及Blogger都是使用GWT編寫的。

優(yōu)點

開源且完全免費。

對開發(fā)人員十分友好。

支持常見的Web開發(fā)任務(wù)重用。

Google API可以在GWT應(yīng)用程序中被使用。

提供國際化、跨瀏覽器的可移植性、UI抽象、書簽、以及歷史記錄管理。

4. Vaadin

Vaadin是一種用于簡化Java開發(fā)的Web應(yīng)用框架。它能夠方便開發(fā)人員構(gòu)建出自定義的Web開發(fā)服務(wù)。

該框架的主要優(yōu)勢在于客戶端與服務(wù)器端之間可以流暢地通信。Vaadin可以從Java虛擬機(jī)處直接訪問DOM。作為一個輕量級的框架,Vaadin Flow可被用于處理服務(wù)器端和客戶端之間的路由通信。Vaadin允許開發(fā)者將Vaadin組件集成到他們正在使用的任何一款I(lǐng)DE中。由于Vaadin是跨平臺類型的框架,因此用戶無需將代碼遷移到其他的平臺上。

在使用Vaadin的過程中,開發(fā)人員不需要具有豐富的HTML、CSS、以及JavaScript經(jīng)驗。Vaadin會自動將Java轉(zhuǎn)換為標(biāo)記。

優(yōu)點

通過支持拖放、以及其他出色的功能,它簡化了Java應(yīng)用單頁UI的創(chuàng)建。

具有WebSocket支持的自動化“服務(wù)器端-客戶端”通信方式。

使用MVC(Model-View-Controller)或MVP(Model-View-Presenter),來進(jìn)行數(shù)據(jù)綁定。

帶有嵌套路由和參數(shù)支持的路由器。

支持包括Kotlin和Scala在內(nèi)的JVM語言。

內(nèi)置了對于Spring的支持。

5. Hibernate

Hibernate是一個對象關(guān)系映射(Object-Relational Mapping,ORM)型數(shù)據(jù)庫,可被用于開發(fā)出穩(wěn)定的Java框架。對象關(guān)系映射往往被用于橫跨兩個不兼容的系統(tǒng),以連接數(shù)據(jù)。Hibernate在關(guān)系數(shù)據(jù)庫管理系統(tǒng)(relational database management systems,RDBMS)和Java應(yīng)用程序之間,提供了良好的通信。它非常適合工作在復(fù)雜的生態(tài)系統(tǒng)中,并對數(shù)據(jù)流實現(xiàn)無縫化。

在使用諸如Java之類的面向?qū)ο蟮恼Z言時,開發(fā)人員往往會遇到被稱為“對象關(guān)系阻抗不匹配”或“范例不匹配”的問題。Hibernate為開發(fā)人員提供了一個可以克服此類問題的框架。

Hibernate的查詢與SQL類似,稱為HQL(Hibernate查詢語言)。Hibernate可以直接將Java類映射到相應(yīng)的數(shù)據(jù)庫表上,反之亦然。Hibernate在其主文件--hibernate.cfg.xml中,提供了使用數(shù)據(jù)庫配置映射的各種Java類信息。

優(yōu)點

一種強(qiáng)大的跨數(shù)據(jù)庫解決方案。

可擴(kuò)展。

數(shù)據(jù)可以輕松地實現(xiàn)轉(zhuǎn)換。

可配置。

總結(jié)

希望上面介紹到的各種最受歡迎的、使用最廣泛的Web應(yīng)用開發(fā)Java框架,能夠幫助您從易用性、配套文檔、以及技術(shù)支持等需求維度,選出適合自己實際項目的框架。當(dāng)然如果您是一名新手,那么我建議從《Java信息圖(Java Infographic)》一文,快速熟悉并上手Java。

Flutter是一個什么框架

Flutter是一個移動應(yīng)用程序的軟件開發(fā)工具包(SDK),具有以下特征:

跨平臺應(yīng)用的框架,沒有使用WebView或者系統(tǒng)平臺自帶的控件,使用自身的高性能渲染引擎自繪

簡化版的瀏覽器,最大限度在android和ios上統(tǒng)一UI,包括業(yè)務(wù)邏輯和用戶體驗

開發(fā)語言使用dart,結(jié)合C, C++, 和Skia(2D渲染引擎)構(gòu)建

支持hot reload,包含著完整的控件和工具鏈

一切皆控件,控件是每個Flutter應(yīng)用程序的基本構(gòu)建塊,與分離視圖、控制器、布局和其他屬性的框架不同,F(xiàn)lutter具有一致的統(tǒng)一對象模型:控件。一個控件可以定義:結(jié)構(gòu)元素(比如按鈕或菜單)、風(fēng)格元素(比如字體或顏色方案)、布局的方面(比如填充)、一些業(yè)務(wù)邏輯等

組合大于繼承,控件本身通常由許多小型、單用途的控件組成,結(jié)合起來產(chǎn)生強(qiáng)大的效果,類的層次結(jié)構(gòu)是扁平的,以最大化可能的組合數(shù)量

強(qiáng)化版的WebView,框架僅提供一個View層,大部分功能要依賴原生

目前只能夠運行大部分Dart代碼(不能引入dart:mirrors或dart:html庫)

2021年最受程序員歡迎的開發(fā)工具TOP 50名單出爐-

對于每一個開發(fā)者而言,開發(fā)工具就相當(dāng)于他們的武器,選擇一個合適的工具能夠幫助我們在工作時事半功倍,在互聯(lián)網(wǎng)逐漸發(fā)展成熟的今天,越來越多的開發(fā)工具供我們選擇,但其中總有一些更好用的,如何選擇成為了一大難題。

從而頒布了2021年StackShare第八屆頂級工具獎,快來看看有沒有你青睞的開發(fā)工具吧。

年度最佳新興工具

1.FastAPI

FastAPI 是一個使用 Python3.6+ 構(gòu)建 Web API 的高性能框架。根據(jù)框架創(chuàng)建者的說法,F(xiàn)astAPI 性能與 NodeJS 或 Golang 相當(dāng)。

2.GitHub Copilot

作為一款 AI 結(jié)對編程工具,Copilot 的主要定位是提供類似 IntelliSense/IntelliCode 的代碼補(bǔ)全與建議功能,但在實際表現(xiàn)上有望超越同樣由微軟合作伙伴 OpenAI 開發(fā)的 Codex AI 系統(tǒng)。

3.FiglamFigma

Figma 是一個 基于瀏覽器 的協(xié)作式 UI 設(shè)計工具,從推出至今越來越受到 UI 設(shè)計師的青睞,也有很多的設(shè)計團(tuán)隊投入了Figma 的懷抱,

4.Logtail

Logtail是日志服務(wù)提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云廠商等服務(wù)器上的日志。本文介紹Logtail的功能、優(yōu)勢、使用限制及配置流程等信息。

5.Coder

開發(fā)人員工作區(qū)平臺·

6.Charts.csscss

Charts.css 是用于數(shù)據(jù)可視化的開源 CSS 框架,幫助用戶理解數(shù)據(jù),幫助開發(fā)人員使用簡單的 CSS 類將數(shù)據(jù)轉(zhuǎn)換為漂亮的圖表。·

7.Counter

簡單并且免費的網(wǎng)絡(luò)分析·

8.React Query

React Query是一個庫,可為任何類型的異步數(shù)據(jù)提供ReactJS狀態(tài)管理功能。根據(jù)他們的官方文件,·

9.vscode.dev

將VS Code引入瀏覽器,構(gòu)建一個可以在瀏覽器中完全無服務(wù)器運行的開發(fā)工具。

10.BookStack

BookStack 是一個開源的、基于 Laravel + Vue.js 構(gòu)建的知識管理和服務(wù)平臺。具有簡單但功能強(qiáng)大的所見即所得編輯器,允許團(tuán)隊輕松創(chuàng)建詳細(xì)且有用的文檔。·

11.ThunderClient

Thunder Client 為我們提供了一款輕量級、易用、整潔、簡單的 Rest API 客戶端擴(kuò)展。·我們可以利用 Thunder Client 在編輯器內(nèi)快速測試代碼庫的 API 端點,從而最大限度地減少頁面的切換。它可以替代 Postman,作為常用的無腳本測試工具。

12.Quod AI

Quod AI Code Search是一個由人工智能驅(qū)動的Chrome擴(kuò)展,可以自動從Git存儲庫或Jira問題中搜索代碼。

它使用問題的標(biāo)題和描述,并自動在你的Git存儲庫中找到匹配的內(nèi)容。

13.Dendron

Dendron 是典型的開源社區(qū)編程思維的解決方案,雖然初看起來有一點學(xué)習(xí)曲線,但從根本上是給了使用者最大的自由發(fā)揮空間,同時又提供了最強(qiáng)大和最徹底的工具生態(tài)支持。·

14.Notion API

把概念和你每天使用的工具聯(lián)系起來·

15.Github1s

只需1秒,就可以用VS Code方式來看GitHub代碼。·

16.Ocean

容器的無服務(wù)器基礎(chǔ)架構(gòu)引擎·

17.Magic

快速構(gòu)建應(yīng)用程序,可定制,無密碼登錄

·

18.Jina

更簡單的一種在云上構(gòu)建神經(jīng)搜索的方法,

19.Focalboard

一款開源、本地存儲、免費的類 Notion 應(yīng)用Focalboard 的自我定位是“Trello、Notion 和 Asana 的開源、自托管替代品”。·

20.zx

更好地編寫腳本的工具(By Google)

21.OpenSearh

OpenSearch是阿里云開放搜索簡稱,為解決用戶結(jié)構(gòu)化數(shù)據(jù)搜索需求的托管服務(wù),支持?jǐn)?shù)據(jù)結(jié)構(gòu)、搜索排序、數(shù)據(jù)處理自由定制。·

22.Querybook

一個可以發(fā)現(xiàn)、創(chuàng)建和共享數(shù)據(jù)分析、查詢以及表的大數(shù)據(jù)IDE(通過Pinterest),

23.MangoDB

MongoDB是一款為web應(yīng)用程序和互聯(lián)網(wǎng)基礎(chǔ)設(shè)施設(shè)計的數(shù)據(jù)庫管理系統(tǒng)。MongoDB就是數(shù)據(jù)庫,是NoSQL類型的數(shù)據(jù)庫

24.TooIJet

Retool的開源替代品·

25.Kitemaker

Kitemaker是為團(tuán)隊而非經(jīng)理創(chuàng)建的超快速問題跟蹤器。為遠(yuǎn)程團(tuán)隊創(chuàng)建的Jira的快速替代方案·

26.Appflowy

Appflowy 是一款使用 Flutter 和 Rust 構(gòu)建的開源筆記軟件,它支持Windows、macOS和Linux,可以免費下載使用

27.Kubegres

Kubegres 是一個 Kubernetes Operator,用來部署并維護(hù) PostgreSql 集群,提供開箱即用的數(shù)據(jù)復(fù)制和故障轉(zhuǎn)移功能,簡化 PostgreSql 集群生命周期管理,降低數(shù)據(jù)復(fù)制的復(fù)雜性

28.Lightning Web Components

Lightning Web Components,業(yè)內(nèi)簡稱LWC,是Salesforce于Spring 19發(fā)布的一款新型Lightning Component,快速的企業(yè)級Web組件基礎(chǔ)

29.Judo

用無代碼構(gòu)建原生應(yīng)用體驗

30.Apache APISIX

Apache APISIX Apache APISIX是一個動態(tài)、實時、高性能的API網(wǎng)關(guān)。提供了豐富的流量管理功能,如負(fù)載均衡、動態(tài)上游、canary釋放、斷路、認(rèn)證、可觀察性等。

31.Control

提供免費的加速、自動化安全性以及SOC2合規(guī)

32.Remix

專注于Web技術(shù)和現(xiàn)代 用戶體驗的框架

33.NocoDB

免費并且開源的Airtable替代方案

34.JetBrainsQodana

評估你擁有的、合同或購買的代碼的完整性

35.TabnineAI

只能代碼編寫

36.Coolify

一個開源的,自適應(yīng)的Heroku和Netlify的替代品

37.Penpot

開源設(shè)計和原型平臺

38.Portman

Postman介紹:postman是一個開源的接口測試工具,無論是做單個接口的測試還是整套測試腳本的撥測都非常方便。

39.Devops Stack

持續(xù)部署Kubernetes環(huán)境

40.Slidev

面向開發(fā)人員的演示幻燈片

41.ReScript

ReScript 是一門針對 JavaScript 程序員的新語言,特別是對 TypeScript 和 Flow 的類型安全感興趣的程序員。ReScript 的語法和 JavaScript 非常相似

42.Fig

自定完成終端

43.FlutterFlow

Flutterflow 是一個在線低碼平臺,使人們在視覺上以人們在視覺上構(gòu)建本機(jī)移動應(yīng)用程序。

44.Porter

運行在你自己的云中的Heroku

45.SigmaOS

在 SigmaOS 中,你會看到完全不同的瀏覽器布局,它更像是一個工作臺

46.VictoeiaMetrics DB

快速、低成本的監(jiān)控解決方案和時間序列數(shù)據(jù)庫

47.CloudflarePages

JAMstack平臺為前端開發(fā)者提供協(xié)作和部署網(wǎng)站的平臺

48. Devbook

面向開發(fā)者的搜索引擎

49.Front Matter

直接在VS Code中管理靜態(tài)站點

50.Supacase UI

用于企業(yè)儀表的React組件庫

以上可以說是集結(jié)了開發(fā)行業(yè)中的所有“神器”,不僅能助力程序員高效工作,也是今后走向開發(fā)崗位小伙伴們的加薪工具。小伙伴可以從中挑選適合自己的工具~

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對比

Flutter Dio源碼分析(三)--深度剖析

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹視頻教程

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對比視頻教程

Flutter Dio源碼分析(三)--深度剖析視頻教程

Flutter Dio源碼分析(四)--封裝視頻教程

github倉庫地址

本文會手把手教你該怎么去封裝一個類庫,平時在我們的工作中都是拿著別人的造好的輪子在使用,這篇文章將帶你怎么去自己造輪子,以后再碰到別的類庫需要對其進(jìn)行封裝的時候提供一個的思路和方法。

在前面的文章中,我們對 Dio 的基本使用、請求庫對比、源碼分析,我們知道 Dio 的使用非常的簡單,那為什么還需要進(jìn)行封裝呢?有兩點如下:

當(dāng)組件庫方法發(fā)生重要改變需要遷移的時候如果有多處地方用到,那么需要對使用到的每個文件都進(jìn)行修改,非常的繁瑣而且很容易出問題。

當(dāng)不需要 Dio 庫的時候,我們可以隨時方便切換到別的網(wǎng)絡(luò)請求庫,當(dāng)然 Dio 目前內(nèi)置支持使用第三方庫的適配器。

因為一個應(yīng)用程序基本都是統(tǒng)一的配置方式,所以我們可以針對 攔截器 、 轉(zhuǎn)換器 、 緩存 、 統(tǒng)一處理錯誤 、 代理配置 、 證書校驗 等多個配置進(jìn)行統(tǒng)一管理。

因為我們的應(yīng)用程序在每個頁面中都會用到網(wǎng)絡(luò)請求,那么如果我們每次請求的時候都去實例化一個 Dio ,無非是增加了系統(tǒng)不必要的開銷,而使用單例模式對象一旦創(chuàng)建每次訪問都是同一個對象,不需要再次實例化該類的對象。

這是通過靜態(tài)變量的私有構(gòu)造器來創(chuàng)建的單例模式

我們對 超時時間 、 響應(yīng)時間 、 BaseUrl 進(jìn)行統(tǒng)一設(shè)置

因為不管是 get() 還是 post() 請求, Dio 內(nèi)部最終都會調(diào)用 request 方法,只是傳入的 method 不一樣,所以我們這里定義一個枚舉類型在一個方法中進(jìn)行處理

我們已經(jīng)把 Restful API 風(fēng)格簡化成了一個方法,通過 DioMethod 來標(biāo)明不同的請求方式。在我們平時開發(fā)的過程中,需要在請求前、響應(yīng)前、錯誤時對某一些接口做特殊的處理,那我們就需要用到攔截器。 Dio 為我們提供了自定義攔截器功能,很容易輕松的實現(xiàn)對請求、響應(yīng)、錯誤時進(jìn)行攔截

我們發(fā)現(xiàn)雖然 Dio 框架已經(jīng)封裝了一個 DioError 類庫,但如果需要對返回的錯誤進(jìn)行統(tǒng)一彈窗處理或者路由跳轉(zhuǎn)等就只能自定義了

在我們發(fā)送請求的時候會碰到幾種情況,比如需要對非open開頭的接口自動加上一些特定的參數(shù),獲取需要在請求頭增加統(tǒng)一的 token

在我們請求接口前可以對響應(yīng)數(shù)據(jù)進(jìn)行一些基礎(chǔ)的處理,比如對響應(yīng)的結(jié)果進(jìn)行自定義封裝,還可以針對單獨的 url 做特殊處理等。

我們看了轉(zhuǎn)換器的介紹,發(fā)現(xiàn)和攔截器的功能差不多,那為什么還要存在轉(zhuǎn)換器,有兩點:

執(zhí)行流程: 請求攔截器 請求轉(zhuǎn)換器 發(fā)起請求 響應(yīng)轉(zhuǎn)換器 響應(yīng)攔截器 最終結(jié)果 。

只會被用于 'PUT'、 'POST'、 'PATCH'方法,因為只有這些方法才可以攜帶請求體(request body)

會被用于所有請求方法的返回數(shù)據(jù)。

在開發(fā)過程中,客戶端和服務(wù)器打交道的時候,往往會用一個 token 來做校驗,因為每個公司處理刷新token的邏輯都不一樣,我這里舉一個簡單的例子

為什么我們需要有取消請求的功能,如果當(dāng)我們的頁面在發(fā)送請求時,用戶主動退出當(dāng)前界面或者app應(yīng)用程序退出的時候數(shù)據(jù)還沒有響應(yīng),那我們就需要取消該網(wǎng)絡(luò)請求,防止不必要的錯誤。

由 服務(wù)器生成 的 一小段文本信息 ,發(fā)送給瀏覽器,瀏覽器把 cookie 以kv形式保存到本地 某個目錄下的文本文件內(nèi),下一次請求同一網(wǎng)站時會把該 cookie 發(fā)送給服務(wù)器。

cookie 的使用需要用到兩個第三方組件 dio_cookie_manager 和 cookie_jar

因為在我們平時的開發(fā)過程中,會碰到一種情況,在進(jìn)行網(wǎng)絡(luò)請求時,我們希望能正常訪問到上次的數(shù)據(jù),對于用戶的體驗比較好,而不是展示一個空白的頁面,該緩存主要是 《Flutter實戰(zhàn)》網(wǎng)絡(luò)接口緩存 提供參考。

我們在程序退出后內(nèi)存緩存將會消失,所以我們用 shared_preferences 進(jìn)行磁盤緩存數(shù)據(jù)。

在我們用flutter進(jìn)行抓包的時候需要配置 Dio 代理。由 DefaultHttpClientAdapter 提供了一個 onHttpClientCreate 回調(diào)來設(shè)置底層 HttpClient 的代理。

用于驗證正在訪問的網(wǎng)站是否真實。提供安全性,因為證書和域名綁定,并且由根證書機(jī)構(gòu)簽名確認(rèn)。

日志打印主要是幫助我們開發(fā)時進(jìn)行輔助排錯

網(wǎng)頁題目:flutter簡化,簡書 flutter
當(dāng)前鏈接:http://chinadenli.net/article38/dsioesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序云服務(wù)器網(wǎng)站改版微信公眾號定制開發(fā)App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化