Blazor VS React / Angular / Vue.js
原文作者: Christian Findlay
原文鏈接:https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js/
Blazor是一項新的Microsoft技術(shù),允許開發(fā)人員使用C#為瀏覽器編寫代碼, 本文將Blazor與其他三個常見SPA框架進行了比較:React,Angular和Vue.js, JavaScript是當前基于瀏覽器的單頁應(yīng)用程序(SPA)最受歡迎的語言,因為直到最近,它還是在瀏覽器中運行的唯一語言。這些框架可以從JavaScript或TypeScript進行編譯或轉(zhuǎn)換。本文詢問開發(fā)人員是否需要依賴JavaScript,以及我們是否可以開始使用C#構(gòu)建SPA應(yīng)用程序。
什么是Blazor?
Blazor是用于Web和移動設(shè)備的基于.NET開發(fā)的SPA框架,并且是ASP.NET Core Web框架的一部分,Blazor使用現(xiàn)有的和大家熟悉的HTML文檔對象模型(DOM)以及CSS樣式來呈現(xiàn)和處理UI組件,但是,Blazor使用了C#來替代JavaScript進行處理,因此開發(fā)人員可以跨平臺共享代碼,Blazor使用Razor腳本聲明HTML,這是.NET開發(fā)人員熟悉的腳本,Razor通過維護一種簡單的語法來使開發(fā)人員接近HTML,并且允許數(shù)據(jù)綁定,循環(huán)和變量定義。
程序運行在.NET運行時上面,有服務(wù)器端和客戶端兩種模式,對于服務(wù)器端,HTML DOM呈現(xiàn)在服務(wù)器上,然后通過Signal-R 發(fā)送到瀏覽器,進行數(shù)據(jù)渲染, 對于客戶端,Mono在瀏覽器內(nèi)部的WebAssembly上運行,WASM 無需服務(wù)器端渲染或其他瀏覽器插件即可充分發(fā)揮.NET的強大功能。
Blazor 允許開發(fā)人員在桌面應(yīng)用和移動應(yīng)用中使用,Electron允許開發(fā)人員使用HTML和CSS構(gòu)建桌面應(yīng)用程序,Electron.Net是一種彌合差距并允許與Blazor一起使用的技術(shù),微軟已為本機移動應(yīng)用程序建立了實驗性綁定,這可能表明Blazor應(yīng)用程序?qū)⒃趇OS和Android等平臺上運行。
Blazor 功能特性
?使用C#代替JavaScript和TypeScript構(gòu)建 Web UI?構(gòu)建漸進式Web應(yīng)用程序(PWA)?創(chuàng)建和使用用C#編寫的可重用組件?在服務(wù)器端模式提供全面的調(diào)試支持,在客戶端模式進行一些限制的調(diào)試?與HTML DOM的數(shù)據(jù)綁定(有限的雙向綁定)?使用C#在客戶端和服務(wù)器之間共享代碼?可在所有現(xiàn)代網(wǎng)絡(luò)瀏覽器(包括移動瀏覽器)中使用?Blazor代碼具有與JavaScript相同的安全沙箱?使用JavaScript操作調(diào)用JavaScript框架和庫?開源
什么是WebAssembly?
是基于堆棧的虛擬機的二進制指令格式, Wasm被設(shè)計為可移植目標,用于編譯高級語言(如C / C ++ / Rust),從而可以在Web上為客戶端和服務(wù)器應(yīng)用程序進行部署。
本質(zhì)上,它允許為Web瀏覽器編譯代碼。過去,諸如Adobe Flash或Microsoft Silverlight之類的技術(shù)通過強制用戶安裝插件來實現(xiàn),現(xiàn)在不再需要這些,并且.NET運行時現(xiàn)在可以在WebAssembly上運行。
什么是React?
React是Facebook開源的一個JavaScript的UI框架,React并未嘗試向開發(fā)人員提供構(gòu)建現(xiàn)代Web應(yīng)用程序所需的所有工具,相反,它專注于UI的主要方面,并允許開發(fā)人員方便的使用這些組件,這聽起來也沒啥,但事實并非如此,JavaScript UI庫發(fā)展了這么多年,但React作為1號UI庫,吸引了大量追隨者,簡單說,React主要是一個JavaScript庫,但是可以輕松地與TypeScript一起使用。
React 功能特性
?使用JavaScript或TypeScript構(gòu)建Web UI?構(gòu)建漸進式Web應(yīng)用程序(PWA)?可在所有現(xiàn)代網(wǎng)絡(luò)瀏覽器(包括移動瀏覽器)中使用?大型的社區(qū)支持?開源?像VS Code這樣的IDE中的全面調(diào)試支持
Blazor VS React
JavaScript對于C#開發(fā)人員而言具有難的學習曲線,并且不是靜態(tài)類型的語言。許多團隊負責人會遇到雇用后端和前端開發(fā)人員的問題。很難找到同時擅長JavaScript和C#的開發(fā)人員。如果Blazor是首選技術(shù),則后端C#開發(fā)人員會掌握有關(guān)Blazor前端開發(fā)的知識。后端開發(fā)人員可以輕松切換角色來修復(fù)前端的錯誤,也可以熟練地構(gòu)建前端應(yīng)用程序。
Blazor尚未像React那樣成熟,但是Microsoft會在該框架上建立基礎(chǔ),然后在SPA領(lǐng)域流行,客戶端調(diào)試是缺少的主要功能,后邊應(yīng)該會支持。如果您的企業(yè)現(xiàn)在需要可用于生產(chǎn)的SPA并具有JavaScript專業(yè)知識,那么React將比Blazor更好的選擇,但是,如果團隊由C#開發(fā)人員組成并且SPA有發(fā)展的空間,請考慮使用Blazor。在這種情況下,Blazor有很大的機會隨著時間的推移產(chǎn)生更多可維護的代碼。
盡管對于靜態(tài)類型的語言通常是否更好還存在一些爭論,但是許多開發(fā)人員會說靜態(tài)類型的語言對于大型項目而言更好。與JavaScript相比,C#可能成為更可取的選擇。
什么是Angular?
Angular是由Google團隊編寫和維護的,一套基于TypeScript并且流行的Web和移動SPA框架。它與Angular不同的是,它是一個完整的框架。TypeScript是一種靜態(tài)類型化語言,例如C#,并且可以轉(zhuǎn)換為JavaScript。TypeScript和C#相似,因為Microsoft在維護它。Angular的更高版本也以類似于Blazor的方式支持服務(wù)器端渲染。模板語法與razor語法類,并且具有數(shù)據(jù)綁定的HTML DOM UI組件。
Web開發(fā)人員更熟悉Angular,因為它利用了現(xiàn)有的JavaScript框架,并且具有JavaScript背景。它擁有一個充滿活力的成熟的社區(qū)。
Angular 功能特性
?使用TypeScript構(gòu)建Web UI?構(gòu)建漸進式Web應(yīng)用程序(PWA)?使用HTML DOM進行雙向數(shù)據(jù)綁定?可在所有現(xiàn)代網(wǎng)絡(luò)瀏覽器(包括移動瀏覽器)中使用?大型的社區(qū)?開源?像VS Code這樣的IDE中的全面調(diào)試支持?完整的內(nèi)置API,可完成常見的應(yīng)用程序任務(wù)
Blazor VS Angular
Angular也是一個成熟的框架,擁有龐大的社區(qū),而Blazor則在不斷發(fā)展。但是,Angular包含TypeScript范例,對于C#開發(fā)人員而言,它比JavaScript更自然地適應(yīng)。Angular比React更全面,并且將自己宣傳為框架而不是UI庫。Angular不僅僅是UI組件。它鼓勵開發(fā)人員開箱即用地使用組件,因此代碼變得更加統(tǒng)一。
什么是Vue.js?
Vue與Angular具有相似的背景,開發(fā)人員使用JavaScript構(gòu)建應(yīng)用。它位于React和Angular之間,因為它在UI庫和框架之間擴展。它是一個更精致的框架,但仍然是React和Angular的競爭對手。與React一樣,開發(fā)人員可以使用TypeScript,但更多是 JavaScript。
Vue.js 功能特性
?使用JavaScript或TypeScript構(gòu)建Web UI?構(gòu)建漸進式Web應(yīng)用程序(PWA)?使用HTML DOM進行雙向數(shù)據(jù)綁定?可在所有現(xiàn)代網(wǎng)絡(luò)瀏覽器(包括移動瀏覽器)中使用?中型的社區(qū)?開源?像VS Code這樣的IDE中的全面調(diào)試支持?用于日常應(yīng)用程序任務(wù)的全套內(nèi)置API
Blazor VS Vue.js
Angular和React的許多比較點也適用于Vue.js。對于不僅僅需要UI庫但又不需要完整的Angular框架的開發(fā)人員來說,Vus.js可能是一個折衷的折衷方案。Angular和Vue.js之間一些比較傾向于表明Vue.js在性能方面確實做到合理。因此,對于目前需要開發(fā)SPA的團隊來說,Vue.js可能是另一個不錯的選擇,但是再次強調(diào),將Blazor與C#結(jié)合使用對于具有C#背景的團隊可能會產(chǎn)生更好的結(jié)果。
總結(jié)
現(xiàn)在,C#開發(fā)人員在構(gòu)建UI時有很多選擇。Blazor將熟悉的HTML DOM帶入C#,并為Web開發(fā)人員提供了使用C#的能力。它具有構(gòu)建桌面和移動應(yīng)用程序的潛力,并在Microsoft開發(fā)社區(qū)中具有吸引力。在評估下一個SPA的技術(shù)時,你可以考慮使用 Blazor!
最后
歡迎掃碼關(guān)注我們的公眾號 【全球技術(shù)精選】,專注國外優(yōu)秀博客的翻譯和開源項目分享,也可以添加QQ群 897216102
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Blazor VS React / Angular / Vue.js的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core集成CKEdit
- 下一篇: VSCode+BeetleX.VueHo