整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          開課吧《Hello,World公開課》跨平臺開發迭代更新

          Hello, World》與你一起改變世界。無論我們是一個C++開發人員,還是一個JavaScript開發人員,又或是一個AngularJS專家......我們都是一名簡單純粹的程序員。

          《Hello ,World公開課》提供了這樣的一個平臺,一端集結業內名師大咖,一端集結追求技術極致的學員,以專業知識分享交流為橋梁,鏈接正在創造世界的一群科技主力們,向初心致敬,為技術發燒。

          科技創造世界,世界正在由你改變!

          跨平臺開發是個老生常談的問題,從早期的 Cordova、Ionic,再到Weex,React Native以及如今大火的flutter,技術框架一直在迭代更新。雖然現在社區中有一些React Native式微的聲音,但我們不能被“孕婦效應”蒙蔽雙眼,站在整個前端開發者社區看,React Native依然是一款非常重要的前端框架。近日,開課吧《Hello,World》公開課迎來React Native中文網站長晴明老師,讓他來聊聊,如何利用React Native快速迭代你的移動業務。

          為什么需要React Native

          在移動互聯網早期,大多數公司采用原生技術在開發移動端應用,比如我們熟悉的Objective-C,Swift,Java等等。這些原生開發技術,不僅開發成本高,而且開發周期也很長。有時候甚至出現兩班人馬利用兩套技術棧開發出完全相同業務的應用。這對于小公司要快速發展業務來說,無疑是災難的。為了解決這個問題,混合開發興盛起來,也就是說利用Web瀏覽器技術開發移動端業務。使用WebView套殼的方式,利用前端HTML/CSS/JS技術構建前端頁面,通過橋接方式調用原生服務。

          相比原生開發,混合開發的優點是顯而易見的

          1、HTML / CSS / JS開發成本低

          比起原生語言,這三門的學習難度要低很多。各類資源極為豐富

          2、天然跨平臺

          任何平臺都離不開瀏覽器,也就少不了WebView組件。在W3C標準日趨統一(HTML5)的今天,網頁應用真正實現了“一次編寫,隨處運行”

          3、無審核熱更新

          JS作為動態解釋運行的腳本語言,可以直接通過服務器下發后執行,從而實現繞過審核的熱更新。

          4、可擴展

          雖然js本身不具備硬件能力,但可以通過原生橋接的方式擴展,且這些擴展大多免費開源。

          但是,這種混合開發的缺點也是顯而易見的,那就是性能、性能、還是性能,那么能否能在兩者中間取得一個平衡呢?React Native應運而生。

          React Native核心架構

          如下圖所示,這是一個播放器,由播放器外殼和解碼芯片兩個核心組件構成,React Native核心架構也是由兩個部分構成,一個是RN的外殼,Native Shell,這部分是由oc/java寫的,另一部分是JavaScriptCore(JavaScript engine)引擎。而所有的業務邏輯都通過Metro這個工具打包在光盤中,也就是打包成main.jsbundle。如此就可以實現通過原生端引擎來解釋JS的代碼,在調試環境中,Metro 實時打包生成 jsbundle (hot reload 熱刷新),在正式環境中,如果我們想迭代業務,通過App分發時攜帶離線jsbundle 。通過第三方服務下載替換文件(pushy/codepush 熱更新服務)來實現。

          代碼實戰演示

          在公開課的后半部分,晴明老師通過現場代碼實戰來演示如何利用React Native來進行移動端業務開發,以及演示利用React Native進行熱更新。

          講師介紹

          晴明老師,前百度高級開發工程師,前網易高級開發工程師,React Native中文網站長。

          《Hello,World公開課》是由開課吧推出面向廣大開發工程師的免費加餐課,我們希望能搭建起一座橋梁,將業內的最熱門的技術,最好的解決方案一起打包免費送給你。無論你是初入職場的應屆生,還是準備升職加薪的職場精英,相信這里都有你需要的內容。

          年前,我放棄了一切,100%專注于WebAssembly。當時,Rust對編譯到WebAssembly方面有最好的支持,而功能最齊全的WebAssembly運行時是基于Rust的。Rust是菜單上最好的選擇。我跳了進去,迫不及待地想看看所有的炒作是關于什么的。

          從那時起,我(和其他一些很棒的人)構建了Wick,這是一個使用WebAssembly作為其核心模塊系統的應用程序框架和運行時。

          三年后,在crates.io上部署了多個生產部署、一本電子書和~100個軟件包,我覺得是時候分享一些關于Rust的想法了。

          你可以用更少的來維持更多

          我是測試驅動開發的忠實支持者。我習慣了用Java和JavaScript等語言進行測試。我開始用Rust編寫測試,就像用任何其他語言一樣,但發現我正在編寫不會失敗的測試。一旦你到了測試可以運行的地步——也就是說,你的Rust代碼編譯的地方——Rust已經解釋了如此多的錯誤,以至于許多常見的測試用例變得無關緊要。如果您避免unsafe {}塊和容易恐慌的方法,如.unwrap()您將從默認避開許多問題的基礎開始。

          Rust的借貸檢查器的侵略性,Rust的類型系統的豐富性,功能模式和庫,以及缺乏“空”值,都導致在測試等地方花費更少的精力來維護更多。我在Wick項目中維護了70,000多行代碼,測試比我在其他語言中需要的測試要少得多。

          當您需要編寫測試時,無需考慮即可在飛行中添加它們。Rust的集成測試線束讓您幾乎不用考慮就在代碼旁邊添加測試。

          我現在用其他語言編碼得更好

          在Rust中編程就像處于情感虐待關系中。Rust整天對你大喊大叫,經常談論你在另一種生活中會認為完全正常的事情。最終,你習慣了發脾氣。它們成為例行公事。你學會走鋼絲,以避免觸發編譯器的脾氣。就像在現實生活中一樣,這些行為變化會永遠與你同在。

          情感虐待通常不被認為是鼓勵改變的健康方式,但它確實影響了變化。

          當行不按順序或返回值未選中時,我不能用其他語言編寫代碼而不感到不舒服。當我遇到運行時錯誤時,我現在也會感到非理性的沮喪。

          你說“done"不是函數是什么意思?你為什么不讓我知道“done”可能不是一個功能??

          Clippy太棒了!

          Clippy是Rust的linter,但稱它為linter是一種傷害。在一種編譯器可以讓你哭泣的語言中,Clippy更像是一個溫柔的朋友,而不是一個linter。

          Rust標準庫是巨大的。當這么多功能分布在無數的粒度類型、特征、宏和函數中時,很難找到您知道可能存在的函數。許多Clippy規則(例如,manual_is_ascii_check)尋找stdlib方法或類型更好替換的常見模式。

          Clippy有數百條規則來解決性能、可讀性和不必要的間接性。在可能的情況下,它會經常為您提供替換代碼。

          看起來(很快)您終于能夠為項目配置全局林特了。到目前為止,你必須破解你的解決方案,以保持項目的絨點一致。在Wick中,我們使用腳本自動更新幾十個板條箱的內聯絨毛配置。Rust社區花了數年時間才找到解決方案,這讓我們......

          壞的

          有些差距你將不得不接受

          每次我回到上面的Clippy問題時,我都會質疑自己的理智。當然,我錯了。一定有一個我錯過的配置。我簡直不敢相信。我還是做不到。必須有一種方法可以全局配置絨毣。當我寫這篇文章時,我檢查了四次,以確保我沒有妄想。這些問題現在已經關閉了,但它們已經開放多年了。

          Clippy很棒,但這個用例是Rust世界許多人的一個例子。我經常遇到不涵蓋我用例的庫或工具。這在較新的語言或項目中并不少見。軟件需要時間(使用)才能成熟。但Rust不是那么新。Rust 有一些感覺不同。

          在開源中,邊緣案例經常由早期采用者和新用戶解決。他們是那些有邊緣外殼的人。他們的公關完善了項目,以便更好地為下一個用戶提供。Rust在十年的大部分時間里被評為“最受歡迎的語言”。吸引新用戶沒有問題,但它并沒有導致庫或工具的大幅改進。它導致處理特定用例的一次性叉子。我也為此感到內疚,但不是因為缺乏試圖獲得公關。

          我不知道為什么。也許維護穩定API的壓力,以及Rust的粒度類型系統,使庫所有者難以進行。如果小幅更改會導致重大版本顛簸,那么很難接受。

          或者可能是因為編寫為每個人做一切的Rust代碼非常困難,人們不想處理它。

          Cargo、crates.io以及如何構建項目

          我圍繞我看到的其他一些熱門項目建模了Wick存儲庫結構。它看起來很合理,而且工作正常,直到它沒有。

          您可以使用Cargo輕松構建、測試和使用感覺像模塊大小的板條箱。不過,將其部署到crates.io?那是一個完全不同的故事。

          除非每個引用的板條箱也單獨發布,否則您無法將軟件包發布到crates.io。這有點道理。您不想依賴僅存在于作者本地文件系統上的包的板條箱。

          然而,許多開發人員自然地將大型項目分解為較小的模塊,您無法發布僅存在于自身內部的子板條箱的父板條箱您甚至不能發布具有本地開發依賴項的板條箱。您必須在發布隨機公用事業箱或重組項目之間做出選擇,以避免這個問題。這種限制感覺是任意和不必要的。你可以清楚地構建這樣結構的項目,你只是不能發布它們。

          編輯:Ed Page聯系了,指出您可以使用本地開發依賴項進行發布,只要您不包含一個versionCargo.toml

          不過,貨物確實有出色的工作空間支持!與大多數語言相比,Cargo的工作空間提供了更好的管理大型項目的體驗。但他們沒有解決部署問題。事實證明,您可以通過十幾種方式中的任何一種方式設置工作區,但都沒有方法易于部署。

          您可以在旨在簡化發布工作空間的實用工具箱數量中看到問題。每個都使用一個配置的子集,我仍然無法避免設置工作區的“一種真正方法”。當我發布Wick時,經常需要一個多小時的努力,將手動、重復的任務與僅部分工作的工具相結合。

          異步

          Rust在語言開始后增加了異步性。這感覺就像事后的想法,就像事后的想法,經常會因為難以理解和解決的錯誤而妨礙你。當您搜索解決方案時,您必須根據各種運行時及其異步風味進行過濾。想使用異步庫嗎?您有可能無法在特定的異步運行時之外使用它。

          經過二十年的JavaScript和良好的Go經驗,這是與Rust的挫折和摩擦的最重要來源。這不是一個不可逾越的問題,但當異步怪物抬起頭時,你必須隨時準備好應對它。在其他語言中,異步幾乎是看不見的。

          丑陋的

          重構可能很搓不倒

          Rust的豐富類型系統是一種祝福和詛咒。在Rust類型中思考是一個夢想。管理Rust的類型可能是一場噩夢。您的數據和函數簽名可以具有通用類型、通用生命周期和特征約束。這些約束可以有自己的通用類型和生命周期。有時,您將擁有比實際代碼更多的類型約束。

          大于邏輯的約束

          您還需要在每個impl上定義所有泛型。第一次寫的時候很乏味。然而,在重構時,它可以將一個小變化變成級聯混亂。

          簡單的通用ID被一遍又一遍地復制。

          當您需要調整14個不同的定義才能向前邁出一步時,很難取得快速進展。

          編輯以解決外部評論:問題不在于可表達性,問題在于沒有語言或工具解決方案來減少重復。經常有理由有相同的約束或引用相同的通用列表,但沒有辦法別名或以其他方式引用中心定義。我不確定是否應該有,但這并沒有改變重復的負擔。

          判決

          我愛Rust。我喜歡它能做什么,以及它的多才多藝。我可以用與CLI應用程序、Web服務器Web客戶端相同的語言編寫系統級代碼。使用WebAssembly,我可以使用與命令行相同的二進制文件在瀏覽器中運行LLM。這仍然讓我大吃一驚。

          我喜歡堅如磐石的Rust程序。在你學會欣賞Rust保護你免受什么影響后,很難回到其他語言。我回到Go短暫的一段時間。我很快就又被發展的速度陶醉了。然后我遇到了運行時的恐慌,玻璃碎了。

          但Rust有它的疣。很難雇傭,學習緩慢,而且太僵硬,無法快速進行。很難排除內存和性能問題,特別是異步代碼。并非所有庫都像其他庫一樣擅長安全代碼,開發工具還有很多需要改進的地方。你開始落后了,有很多對你不利的事情。如果你能越過障礙,你會讓每個人都在塵土中。那是一個很大的如果。

          Rust對我們來說值得嗎?現在說還為時過早。我們和一個小團隊一起做了令人驚嘆的事情,但也有巨大的障礙。我們也有技術原因使Rust更可行。

          這對你來說值得嗎?如果你需要快速進行Iterate,可能不需要。如果您有已知的范圍,或者可以吸收更多的前期成本?一定要考慮一下。你最終會使用防彈軟件。隨著WebAssembly的角度每個月變得越來越強大,編寫一次完美的軟件并在任何地方重復使用它的前景正在盡快成為現實。

          了 2 周的時間整理了 Python 中所有的網站開發庫(下文簡稱:Web 框架),供大家學習參考。



          Q:Web 框架到底是什么?

          A:Web 框架主要用于網站開發。開發者在基于 Web 框架實現自己的業務邏輯。Web 框架實現了很多功能,為實現業務邏輯提供了一套通用方法。


          Q:Web 框架有什么作用?

          A:使用 Web 框架,很多的業務邏輯外的功能不需要自己再去完善,而是使用框架已有的功能就可以。Web 框架使得在進行 網站開發的時候,減少了工作量。


          Q:我們為什么要使用 Web 框架?

          A:Web 框架主要用于網站開發,可以實現數據的交互和業務功能的完善。使用 Web 框架進行 網站開發的時候,在進行數據緩存、數據庫訪問、數據安全校驗等方面,不需要自己再重新實現,而是將業務邏輯相關的代碼寫入框架就可以。


          庫排序是按照使用人數和文檔的活躍度為參考進行的,建議大家使用排名靠前的框架,因為它們的文檔更齊全,技術積累要更多,社區更繁盛,能得到更好的支持,這樣在遇到自己無法解決的問題,可以更快更高效的找到解答的方案。

          1. Django 框架

          官 網:

          https://github.com/django/django.git

          優 點:是一個高層次 Python Web 開發框架,特點是開發快速、代碼較少、可擴展性強。Django 采用 MTV(Model、Template、View)模型組織資源,框架功能豐富,模板擴展選擇最多。對于專業人員來說,Django 是當之無愧的 Python 排名第一的 Web 開發框架。

          缺 點:包括一些輕量級應用不需要的功能模塊,不如 Flask 輕便。過度封裝很多類和方法,直接使用比較簡單,但改動起來比較困難。相比于 C,C++ 性能,Djang 性能偏低。模板實現了代碼和樣式完全分離,不允許模板里出現 Python 代碼,靈活度不夠。另外學習曲線也相對陡峭。


          2. Flask 框架

          官 網:

          https://flask.palletsprojects.com/en/2.0.x/

          優 點:Flask 是一個 Python Web 開發的微框架,嚴格來說,它僅提供 Web 服務器支持,不提供全棧開發支持。然而,Flask 非常輕量、非常簡單,基于它搭建 Web 系統都以分鐘來計時,特別適合小微原型系統的開發。花少時間、產生可用系統,是非常劃算的選擇。

          缺 點:對于大型網站開發,需要設計路由映射的規則,否則導致代碼混亂。對新手來說,容易使用低質量的代碼創建 “不良的 web 應用程序”。


          3. Pyramid 框架

          官 網:

          https://trypyramid.com/

          優 點:是一個擴展性很強且靈活的 Python Web 開發框架。上手十分容易,比較適合中等規模且邊開發邊設計的場景。Pyramid 不提供絕對嚴格的框架定義,根據需求可以擴展開發,對高階程序員十分友好。

          缺 點:國內知名度不高,高級用法需要通過閱讀源代碼獲取靈感。默認使用 Chameleon 模板,靈活度沒有成為一個要素。


          4. web.py 框架

          官 網:

          https://webpy.org/

          優 點:正如其名,web.py 是一個采用 Python 作為開發語言的 Web 框架,簡單且強大。俄羅斯排名第一的 Yandex 搜索引擎基于這個框架開發,Guido van Rossum 認為這是最好的 Python Web 框架,還需要說別的嗎?有事實作證、有大牛認可,用起來吧!

          缺 點:Web.py 并未像其他框架一樣保持與 Python 3 兼容性的最新狀態。這不僅意味著缺乏對異步語法的支持,還意味著缺少對已棄用的函數的錯誤。此外,目前尚不清楚維護者是否有計劃在 Python 2 到達其支持生命周期結束后保持 Web.py 的最新狀態。


          5. Tornado 框架

          官 網:

          https://www.tornadoweb.org/en/stable/

          優 點:Tornado 是一個基于異步網絡功能庫的 Web 開發框架,因此,它能支持幾萬個開放連接,Web 服務高效穩定。可見,Tornado 適合高并發場景下的 Web 系統,開發過程需要采用 Tornado 提供的框架,靈活性較差,確定場景后再考慮使用不遲。

          缺 點:Tornado 5.0 改進了與 Python 的本機異步功能的集成。因此不再支持 Python 3.3,并且 Python 3.5 用戶必須使用 Python 3.5.2 或更高版本。Tornado 6.0 將需要 Python 3.5 及更高版本,并將完全放棄 Python 2 支持。


          6. TurboGears 框架

          官 網:

          https://www.turbogears.org/

          優 點:TurboGears 最新版本 試圖解決 TurboGears 最初版本、Django、Rails 等框架缺陷,它支持多數據庫、JavaScript 工具集、多種數據交換格式等,當然,它開發非常高效,擴展性很強。試問它與 Django 哪個更好?還真不好說,Django 社區更為活躍或許更重要。

          缺 點:TurboGears 的一些缺點包括管理功能較為基礎,較少的第三方應用程序以及只有初級的文檔。TurboGears 的一個重大挑戰是它的壓倒性。因為它混搭的其他組件都提供無限的靈活性, 當試圖決定何種路徑來完成一個任務時它是過于復雜的。


          7. CherryPy 框架

          官 網:

          https://cherrypy.org/

          優 點:CherryPy 能夠讓開發者按照其他面向對象程序相似的設計方法開發 Web 系統,進而采用最少的代碼、最簡潔的方式。CherryPy 已經開發了 10 年之久,穩定性較好,非常適合小規模 Web 系統和純粹的 Python 程序員。感受到了什么?Python 大有一統江湖之勢!拭目以待。

          缺 點:只包含為 web 頁面提供服務所需的少量內容外,它應該盡可能地讓人感覺它不像 “web 框架”,而是像任何其他類型的 Python 應用程序一樣。CherryPy 包含的位用作低級構建塊。包括會話標識符和 cookie 處理,但不包括 HTML 模板。像 Bottle 一樣,CherryPy 提供了一種將路由映射到磁盤上的目錄以供靜態文件服務的方法。


          8. Falcon 框架

          官 網:

          http://falconframework.org/

          優 點:Falcon 是一個支持大規模微服務 API 或移動 App 后端響應的 Web 開發框架,它完全基于 Python 并提供了非常高的性能、可靠性和可擴展性。Falcon 定位獨特且特色鮮明,對于 App 開發者,后端系統構建不妨考慮 Falcon,十之八九是不會后悔的。

          缺 點:Falcon 缺點是其打包模塊有點太少,有路由,中間件,鉤子,除此之外就不提供其他功能了(裸殼)。額外其他功能,比如驗證等都需要開發人員來開發擴展。因為其設計中就假設用于構建 REST API。


          9. Asgineer 框架

          官 網:

          https://asgineer.readthedocs.io/

          優 點:Asgineer 是一種編寫異步 Web 應用程序的工具,使用盡可能少的抽象,同時仍然提供友好的 API。只需幾分鐘即可閱讀指南和參考資料!在 Uvicorn 上運行 Asgineer 時,它是可用的最快的 Web 框架之一。它支持 http 長輪詢、服務器端事件 (SSE) 和 websockets。并且具有以正確(且快速)的方式為資產提供服務的實用程序。

          缺 點:中文文檔匱乏。


          10. Bottle 框架

          官 網:

          https://bottlepy.org/docs/dev/

          優 點:Bottle 是一個用于 Python 的快速、簡單和輕量級的 WSGI 微型網絡框架。它作為單個文件模塊分發,除了 Python 標準庫之外沒有任何依賴項。支持干凈和動態的 URL。快速和 Pythonic 內置模板引擎,支持 mako、jinja2 和 cheetah 模板。方便地訪問表單數據、文件上傳、cookie、標題和其他與 HTTP 相關的元數據。

          缺 點:Bottle 極簡主義的一個后果是有些功能根本就不存在。不支持表單驗證,包括 CSRF 保護等功能。如果要構建支持高度用戶交互的 Web 應用程序,則需要自己添加它們。


          11. Emmett 框架

          官 網:

          https://emmett.sh/

          優 點:編寫優雅的代碼,專注于您的產品,你應該把更多的時間花在你的產品而不是底層框架上。Emmett 是發明家的框架,因為它旨在簡化您的開發過程,其語法簡單、易于學習和理解。不要在路由器和不舒服的模式之間浪費時間:每次為應用程序寫下路由時,一切都清楚地呈現在您的眼前。

          缺 點:中文文檔匱乏。


          12. apidaora 框架

          官 網:

          https://github.com/dutradda/apidaora

          優 點:使用類型注釋將請求 / 響應聲明為數據類和字典,使用 jsondaora 驗證輸入數據,最快的 python api 框架之一,可以在任何 asgi 服務器上運行。

          缺 點:中文文檔匱乏。


          13. Quixote 框架

          官 網:

          http://www.quixote.ca/

          優 點:Quixote 是一個使用 Python 編寫基于 Web 的應用程序的框架。它的目標是按此順序實現靈活性和高性能。Quixote 應用程序的結構往往類似于傳統應用程序。格式化網頁的邏輯由 Python 類和函數組成。Quixote 不強制分離表示邏輯和 “后端” 邏輯。相反,我們鼓勵您使用傳統技術。例如,一種解決方案是將表示邏輯放在其自己的子包中。

          缺 點:雖然 Quixote 得到積極維護,但發布頻率較低。最近開發的重點是修復錯誤、提高標準合規性和增加 Quixote 的靈活性。


          14. reahl 框架

          官 網:

          https://www.reahl.org/

          優 點:reahl 是一個可以讓開發者完全用 Python 語言編寫 Web 應用的開放框架,采用 Python 作為唯一開發語言是其最大特色。此外,reahl 提供了相當清晰且簡明的開發組建,對于開發一般功能性 Web 系統足夠清晰且可行。

          缺 點:提供抽象詞匯時,無法掌握一些更高級的用戶界面效果,目前不允許使用 Sass 構建 Bootstrap 的修改版本,并支持更高級的用戶界面模式


          15. hug 框架

          官 網:

          https://hug.rest/

          優 點:Hug 是一個 Python 3 API 開發框架。它的設計使軟件工程師可以一次開發 API,然后在需要時再使用它。Hug 框架通過提供各種接口來簡化 API 開發。這就是為什么該框架被稱為 Python 3 中最快的框架之一的主要原因。

          缺 點:它使用以前的 WSGI 標準,這是一個同步框架,所以它不能處理像 WebSockets 和其他異步請求,不管怎么說,它仍然有非常好的性能表現。


          16. BlackSheep 框架

          官 網:

          https://github.com/Neoteroi/BlackSheep

          優 點:BlackSheep 是一個異步 Web 框架,用于使用 Python 構建基于事件的 Web 應用程序。它的靈感來自 Flask、ASP.NET Core 和 Yury Selivanov 的工作。

          缺 點:中文文檔匱乏。


          17. Index.py 框架

          官 網:

          https://index-py.aber.sh/stable/

          優 點:實現了 ASGI3 接口并使用 Radix Tree 進行路由查找。是最快的 Python web 框架之一。一切特性都服務于快速開發高性能的 Web 服務。大量正確的類型注釋,靈活且高效的路由系統,可視化 API 接口與在線調試,支持 Server-sent events 與 WebSocket,自帶一鍵部署命令 (基于 uvicorn 與 gunicorn),可使用任何可用的 ASGI 生態。

          缺 點:Index.py 不內置數據庫、緩存等其他功能。選擇困難者請直接使用 Django。


          18. Sanic 框架

          官 網:

          https://github.com/sanic-org/sanic

          優 點:Sanic 是一個 Python 3.7+ web 服務器和 web 框架,它的編寫速度很快。它允許使用 Python 3.5 中添加的 async/await 語法,這使您的代碼無阻塞且快速。該項目的目標是提供一種簡單的方法來啟動和運行一個高性能的 HTTP 服務器,該服務器易于構建、擴展和最終擴展。

          缺 點:就功能方面 Sanic 模仿 Flask,比如通過共享 Blueprints 的概念,微小的子應用程序,允許開發人員在更大的應用程序中拆分和組織其代碼。對于光光是數據增刪改查 CRUD 應用,Sanic 也不是一個好的選擇。


          19. Starlette 框架

          官 網:

          https://pypi.org/project/starlette/

          優 點:Starlette 是一個輕量級的 ASGI 框架 / 工具包,非常適合構建性能異步服務,它是生產就緒的,并為您提供以下內容:令人印象深刻的表現。WwbSocket 支持。GraphQL 支持。進程內后臺任務。啟動和關閉事件。基于請求構建的測試客戶端。CORS、GZip、靜態文件、流響應。會話和 Cookie 支持。100% 的測試覆蓋率。100% 類型注釋代碼庫。零硬依賴。

          缺 點:Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自動數據驗證,序列化或 API 文檔。


          20. Fastapi 框架

          官 網:

          https://fastapi.tiangolo.com/

          優 點:FastAPI 是一個現代、快速(高性能)的 Web 框架,用于基于標準 Python 類型提示使用 Python 3.6+ 構建 API。非常高的性能,與 NodeJS 和 Go 相當(感謝 Starlette 和 Pydantic)。可用的最快的 Python 框架之一。減少大約 40% 的人為(開發人員)引發的錯誤。簡短,簡單,直觀,健壯。

          缺 點:本身不帶模板語法,需要安裝模板語法


          21. Responder 框架

          官 網:

          https://python-responder.org/

          優 點:是 kennethreitz 新開發的一個項目,是一個基于 Python 的 HTTP 服務框架。底層用了 Starlette 的框架,Starlette 是一款輕量級的 ASGI 框架 / 工具包, 可以用 Starlette 構建高性能的異步 IO 服務。相對于 Starlette , responder 對開發者更加友好一點。kennethreitz 寫了 requests 號稱 "HTTP for Humans" 更加清楚這一點。事實上比較下來,responder 也比 Starlette 優雅很多。

          缺 點:可能是新項目, 打包還不太完善。就目前版本而言,少許代碼還不能正常工作。但接口形式已經定義完畢,期待后面版本會加上去。


          22. Molten 框架

          官 網:

          https://moltenframework.com/

          優 點:Molten 是一個最小的、可擴展的、快速的和高效的框架,用于使用 Python 構建 HTTP API。計劃自動驗證請求,代碼更容易維護。實例可自動序列化,包含 API 在現實世界中通常要求的各種功能,廣泛使用 PEP484 類型提示和 mypy。

          缺 點:它沒有使用像第三方庫(如 Pydantic)提供數據驗證,序列化和文檔,它有自己的庫。因此,這些數據類型定義將不太容易重用。依賴注入系統需要對依賴項進行預注冊,并且將基于已聲明的類型解決依賴問題。因此,不可能聲明多個組件來提供一個特定的類型。


          23. Clastic 框架

          官 網:

          https://github.com/mahmoud/clastic

          優 點:一個功能強大的 Python Web 框架,可簡化顯式開發實踐,同時消除全局狀態。Clastic 是完全用 Python 語言編寫的,增強可重用性和可測試性,主動 URL 路由檢查,更好地控制應用程序初始化,改進的中間件范例,沒有全局狀態,ORM 用法,更容易的 WSGI 集成。

          缺 點:Clastic 沒有構建全局狀態;URL 路由規則參數和視圖函數簽名不匹配,在 Clastic 中,這種不匹配會在構建應用程序時引發異常。


          24. Aiohttp 框架

          官 網:

          https://docs.aiohttp.org/en/stable/

          優 點:用于 asyncio 和 Python 的異步 HTTP 客戶端 / 服務器。支持客戶端和 HTTP 服務器,支持開箱即用的服務器 WebSockets 和客戶端 WebSockets,沒有回調地獄。Web 服務器具有中間件、信號和可插入路由。

          缺 點:根據 RFC 7231 aiohttp 2.0 版本后做了接受 HEAD 請求的調整,使用之前版本并且用 add_ get () 添加的請

          求,如果使用 HEAD 方法訪問會返回 405。如果處理器會寫入很多響應體內容,你可以在執行 HEAD 方法時跳過處理響應體內容以提高執行效率。



          25. Masonite 框架

          官 網:

          https://docs.masoniteproject.com/

          優 點:現代和以開發人員為中心的 Python Web 框架致力于實現實際的 batteries,包括具有許多開箱即用功能的開發人員工具,具有極其可擴展的架構。Masonite 非常適合初學者開發人員進入他們的第一個 Web 應用程序,以及需要充分利用 Masonite 的全部潛力來完成他們的應用程序的經驗豐富的開發人員。Masonite 努力實現從安裝到部署的快速簡便,因此開發人員可以盡可能快速有效地從概念到創建。將其用于您的下一個 SaaS!嘗試一次,你就會墜入愛河。

          缺 點:對于 Masonite 來說,最大的” 競爭對手” 是 Django, 因為社區正在竭盡全力將框架推向容易,令人愉悅的下一件大事。與 Django 相比,Masonite 仍然是嬰兒,期待它未來的表現。


          26. Quart 框架

          官 網:

          https://pgjones.gitlab.io/quart/

          優 點:Quart 是一個 Python 網絡微框架。使用 Quart,您可以呈現和提供 HTML 模板,編寫(RESTful)JSON API,服務 WebSockets,流請求和響應數據,幾乎可以通過 HTTP 或 WebSocket 協議做任何事情。

          缺 點:它僅支持 Python 3.7+。


          27. Tonberry 框架

          官 網:

          https://github.com/Ayehavgunne/Tonberry

          優 點:一個符合 ASGI 的 Web 微框架,采用基于類的路由方法。受 CherryPy 的影響但與 asyncio 兼容。一個名為 Qactuar 的配套 ASGI 服務器是從這個目前正在進行的項目中產生的。

          缺 點:在使用拉取請求,請使用自動格式化程序 iSort 和 Black 并使用 MyPy 驗證代碼。這是在不消除某些類型錯誤的情況下,并不總是可以使 MyPy 完全滿意,但是至少盡你所能并謹慎使用注釋 `# type: ignore`。最后,嘗試,盡可能提供最準確的類型提示。


          28. cyclone 框架

          官 網:

          https://cyclone.io/

          優 點:Cyclone 是 Python 的 Web 服務器框架,它將 Tornado API 實現為 Twisted 協議。Twisted 是一個事件驅動的 Python 網絡編程框架。它是最成熟的非阻塞 I/O 庫之一,可供公眾使用。Tornado 是 FriendFeed 網絡服務器的開源版本,它是最流行和最快速的 Python 網絡服務器之一,具有用于構建網絡應用程序的非常不錯的 API。除了豐富的功能集之外,Cyclone 還解決了 C10K 問題。

          缺 點:Cyclone 不再支持 python 2.x 。


          29. Klein 框架

          官 網:

          https://github.com/twisted/klein

          優 點:Klein 是一個微框架,用于使用 Python 開發可用于生產的 Web 服務。它是 “微” 的,因為它具有類似于 Bottle 和 Flask 的非常小的 API。它不是 “微”,因為它依賴于標準庫之外的東西。這主要是因為它建立在廣泛使用和經過良好測試的組件上,如 Werkzeug 和 Twisted。

          缺 點:也許有點過時了。


          30. nameko 框架

          官 網:

          https://github.com/nameko/nameko

          優 點:AMQP RPC 和事件(發布 - 訂閱),HTTPGET、POST 和 websockets,CLI 實現簡單快速的開發,用于單元和集成測試的實用程序。

          缺 點:nameko 微服務出錯不會自動打印錯誤日志,需要加上監控相關的依賴,計算密集型任務導致任務重試。


          31. CubicWeb 框架

          官 網:

          https://www.cubicweb.org/

          優 點:CubicWeb 是一種語義 Web 應用程序框架,在 LGPL 下獲得許可,它使開發人員能夠通過重用組件(稱為立方體)并遵循眾所周知的面向對象設計原則來有效地構建 Web 應用程序。滿足常見需求的可重用組件(數據模型和視圖)庫,Python 編程語言的強大功能和靈活性,用于存儲后端的 SQL 數據庫、LDAP 目錄、Subversion 和 Mercurial 的可靠性。

          缺 點:要在 CubicWeb 應用程序中獲取或操作持久數據,可以使用關系查詢語言(RQL),RQL 提供了一種高度分離的路徑來相互關聯各種數據源。但是,隨著它的實現,通過手動構建查詢作為字符串,它可能會讓習慣于 ORM 的開發人員感到過時。使用 CubicWeb 還有其他障礙。首先,設置可能很麻煩。另一個潛在的問題是缺少本機模板引擎;生成 HTML 留給開發人員。CubicWeb 支持 Python 3,但 Twisted 等模塊本身并未完全移植。


          32. Zope2 框架

          官 網:

          https://zope.readthedocs.io/en/latest

          優 點:Zope 2 是一款基于 Python 的 Web 應用框架,是所有 Python Web 應用程序、工具的鼻祖,是 Python 家族一個強有力的分支。Zope 2 的 “對象發布” 系統非常適合面向對象開發方法,并且可以減輕開發者的學習曲線,還可以幫助你發現應用程序里一些不好的功能。

          缺 點:Zope 不適用于簡單的 RESTful API(每 Bottle 或 Flask),甚至不適用于具有交互性的基本網站(à la Django),由于 Zope 的尺寸和復雜性,安裝需要一些工作;這不是簡單地將源解壓縮到項目子文件夾中的問題。


          33. Web2py 框架

          官 網:

          http://web2py.com/

          優 點:Web2py 是一個用 Python 語言編寫的免費的開源 Web 框架,旨在敏捷快速的開發 Web 應用,具有快速、可擴展、安全以及可移植的數據庫驅動的應用,遵循 LGPLv3 開源協議。Web2py 提供一站式的解決方案,整個開發過程都可以在瀏覽器上進行,提供了 Web 版的在線開發,HTML 模版編寫,靜態文件的上傳,數據庫的編寫的功能。其它的還有日志功能,以及一個自動化的 admin 接口。

          缺 點:Web2py 的一個重要限制是它僅與 Python 2.x 兼容。首先,這意味著 Web2py 無法使用 Python 3 的異步語法。如果你依賴于 Python 3 獨有的外部庫,那么你就不走運了。但是,正在開展使 Web2py Python 3 兼容的工作,并且在撰寫本文時它已接近完成


          34. Pylons 框架

          官 網:

          https://docs.pylonsproject.org/projects/pylons-webframework/en/latest/

          優 點:Pylons 是一個開放源代碼的 Web 應用框架,使用 python 語言編寫。它對 WSGI 標準進行了擴展應用,提升了重用性且將功能分割到獨立的模塊中。Pylons 是最新的 Web 應用框架中的典型,類似于 Django 和 TurboGears。Pylons 受 Ruby on Rails 影響很深:它的兩個組件,Routes 和 WebHelpers 是 Rails 特性的 Python 實現。

          缺 點:Pylons 已與 repoze.bfg 合并,現在處于僅維護模式。強烈建議新項目從新合并的 Web 框架金字塔開始。

          35. Cubes 框架

          官 網:

          https://pythonhosted.org/cubes/

          優 點:Cubes 是一個輕量級的 Python 框架和工具集,用于開發報告和分析應用程序、在線分析處理 (OLAP)、多維分析和瀏覽聚合數據。它是 Data Brewery 的一部分。

          缺點:不再為每個多維數據集提供隱式聚合 record_count。它必須明確定義為聚合:舊的后端架構是有限制的。它只允許使用一個商店,必須在服務器啟動之前知道模型,不可能從遠程來源獲取模型。

          36. Dpark 框架

          官 網:

          https://github.com/Liangchengdeye/Dpark

          優 點:DPark 是 Spark 的 Python 克隆版本,是一個 Python 實現的分布式計算框架,可以非常方便地實現大規模數據處理和低延時的迭代計算。該計算框架類似于 MapReduce,但是比其更靈活,可以用 Python 非常方便地進行分布式計算,并且提供了更多的功能,以便更好地進行迭代式計算。DPark 由國內的豆瓣公司開發實現和負責維護,據豆瓣公司的描述,目前豆瓣公司內部的絕大多數數據分析都使用 DPark 完成,整個項目也正趨于完善。

          缺 點:Dpark 使用的是進程,在 Python 中,由于 GIL (Global Interpreter Lock) 的存在,即使在多核機器上使用多個線程,這些線程之間也沒有辦法真正地實現并發執行。

          37. Buildbot 框架

          官 網:

          https://buildbot.python.org/all/#/

          優 點:Buildbot 是 python 實現的開源持續構建和持續交付工具,為 Python, Mozilla, Chromium, WebKit 等知名項目使用。Buildbot 可以直接使用 python 包,輕松擁有上萬庫,具備強大的擴展能力。如果你覺得 Jenkins 已經輕松地滿足你的需求,你不需要 Buildbot。如果你在 Jenkins 時覺得效率低下、擴展困難、一些用 python 等腳本可以實現的動作在 Jenkins 困難重重,那么可以看看 Buildbot。

          缺 點:buildbot 對多項目支持并不好。


          主站蜘蛛池模板: 香蕉视频一区二区三区| 精品成人av一区二区三区| 韩国精品一区视频在线播放| 免费一区二区三区四区五区| 中文字幕日韩一区二区三区不卡| 国产成人综合亚洲一区| 文中字幕一区二区三区视频播放 | 久久一区二区明星换脸| 一区二区三区福利| 国产在线一区观看| 国产熟女一区二区三区五月婷| 亚洲AV无码一区二区三区系列| 国产免费播放一区二区| 国产一区二区三区不卡在线看| 亚洲欧美日韩中文字幕在线一区| 亚洲一区二区三区首页| 国产伦精品一区二区三区| 丰满爆乳一区二区三区| 熟女少妇精品一区二区| 精品国产一区二区三区2021| 国产伦理一区二区三区| 精品一区二区三区自拍图片区| 亚洲一区视频在线播放 | 无码精品一区二区三区免费视频 | 国模丽丽啪啪一区二区| 丰满人妻一区二区三区免费视频| 亚洲福利精品一区二区三区| 日韩精品无码Av一区二区| 日本在线观看一区二区三区| 无码一区二区三区免费视频| 韩国精品一区视频在线播放| 精品91一区二区三区| 精品国产一区二区三区在线观看 | 色窝窝无码一区二区三区| 精品人体无码一区二区三区| 视频一区二区在线播放| 国产精品视频无圣光一区| 在线免费观看一区二区三区| 亚洲一区二区三区四区视频| 日产亚洲一区二区三区| 色老头在线一区二区三区|