Blazor與JavaScript:誰(shuí)是前端應(yīng)用程序首選框架
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
過(guò)去幾年里,JavaSceipt一直是單頁(yè)面應(yīng)用程序中很受歡迎、使用很廣泛的語(yǔ)言。但是最近,微軟引進(jìn)了一款叫做Blazor的框架,使我們能夠使用C#語(yǔ)言開(kāi)發(fā)基于瀏覽器的應(yīng)用程序。
本文會(huì)帶你認(rèn)識(shí)Blazor以及其大量宣傳的原因,并將其與JavaScript進(jìn)行比較。
Blazor是什么?
Blazor(Browser+Razor)是微軟引進(jìn)的一款全新的網(wǎng)站開(kāi)發(fā)框架,能在使用HTML和CSS的同時(shí),運(yùn)用C#語(yǔ)言和Razor語(yǔ)法開(kāi)發(fā)基于瀏覽器的應(yīng)用程序。之前,開(kāi)發(fā)者要在瀏覽器中呈現(xiàn)HTML,需要在服務(wù)器端執(zhí)行Razor視圖——但是現(xiàn)在,Razor視圖在客戶(hù)端就能執(zhí)行。
因?yàn)锽lazor運(yùn)用WebAssembly,我們不需要在網(wǎng)絡(luò)瀏覽器中安裝運(yùn)行任何第三方插件或附加設(shè)備。有了Blazor,就可以運(yùn)用C#語(yǔ)言開(kāi)發(fā)客戶(hù)端及服務(wù)器端口,通過(guò)共享庫(kù)和代碼使工作更加舒適。
廣泛宣傳背后的原因
Blazor的排名在短期內(nèi)上升得很快,人們已經(jīng)將其與廣受歡迎的javascript框架相比。關(guān)于未來(lái)客戶(hù)端網(wǎng)站開(kāi)發(fā)的討論有很多,這些討論和比較使Blazor變得更受歡迎。讓我們來(lái)看看Blazor的獨(dú)特之處。
正如我在開(kāi)頭提到的,Blazor主要的亮點(diǎn)在于能夠使用C#語(yǔ)言開(kāi)發(fā)并執(zhí)行基于瀏覽器的運(yùn)用程序。在過(guò)去的幾年,JavaScript(或是TypeScript)是創(chuàng)建前端的首選編程語(yǔ)言。如果你是個(gè).NET開(kāi)發(fā)者,要成為全棧網(wǎng)站開(kāi)發(fā)者,必須額外學(xué)習(xí)JavaScript。運(yùn)用Blazor可以使用C#語(yǔ)言同時(shí)開(kāi)發(fā)服務(wù)器端和客戶(hù)端,對(duì)我而言,這是Blazor最主要的優(yōu)勢(shì)。
與JavaScript不同,Blazor預(yù)編譯到中間語(yǔ)言。當(dāng)涉及到瀏覽器中運(yùn)行的對(duì)性能要求高的應(yīng)用程序時(shí),這個(gè)特點(diǎn)有顯著的優(yōu)勢(shì)。另外,當(dāng)需要更多處理能力時(shí),Blazor應(yīng)用程序可以線下工作一段時(shí)間,例如PDF生成器、游戲算法等等。
上述之外,Blazor還有很多特點(diǎn)/優(yōu)勢(shì):
- Blazor不需要瀏覽器插件
- 能夠進(jìn)行完整的.NET調(diào)試
- 使用最新的網(wǎng)頁(yè)瀏覽器功能
- 可構(gòu)建用戶(hù)界面的模型
- 瀏覽器兼容性強(qiáng)(即使對(duì)象是舊版本)
- 可依賴(lài)注入
- 可在用戶(hù)和服務(wù)器間共享代碼
JavaScript Vs. Blazor
Blazor會(huì)替代JavaScript嗎?JavaScript會(huì)一直保持其主導(dǎo)地位嗎?每個(gè)人都在尋求答案?,F(xiàn)在對(duì)這些問(wèn)題做出直接預(yù)測(cè)或結(jié)論還為時(shí)尚早,但我們可以把一些JavaScript的主導(dǎo)框架和Blazor進(jìn)行比較來(lái)看看它們的區(qū)別。
Blazor vs. React
很多人認(rèn)為React是web組件開(kāi)發(fā)的最佳使用庫(kù)。
雖然對(duì)這兩者進(jìn)行比較很難,但我們必須承認(rèn)React組建完善,有可靠的工作業(yè)績(jī),并擁有強(qiáng)大的社區(qū)。
React生態(tài)系統(tǒng)的繁榮發(fā)展離不開(kāi)優(yōu)秀的庫(kù)和框架。我認(rèn)為,這個(gè)過(guò)程中的工具和庫(kù)像Bit(Github)那樣,是能幫助管理和共享React組件并真實(shí)存在的制動(dòng)器。
這使得React成為“通用語(yǔ)言”,能夠?yàn)閣eb、CLI、iOS、Android、Windows等等提供應(yīng)用程序的庫(kù)。與像Bit一樣的組件共享工具相結(jié)合,讓React難以超越。
相比之下,Blazor很新,但是繼承了其組建完善的副本Razor的風(fēng)格,因此我們不認(rèn)為它對(duì)開(kāi)發(fā)者來(lái)說(shuō)是全新的。此外,因?yàn)檫\(yùn)用Blazor的開(kāi)發(fā)使用C#語(yǔ)言,對(duì)任何.NET開(kāi)發(fā)者來(lái)說(shuō)轉(zhuǎn)變都會(huì)更快速。雖然發(fā)展成熟的React帶有大量的特點(diǎn)和優(yōu)勢(shì),但我們也注意到,拋開(kāi)年限問(wèn)題,Blazor也具備很多先進(jìn)的功能。
- 和React類(lèi)似,我們也可以把Blazor部署為靜態(tài)文件。
- 可以使用NuGet package。
- 可以在客戶(hù)端和服務(wù)器端使用相同的組件。(當(dāng)然,這在使用JS/TS時(shí)也是可能的)
- Blazor有路由、驗(yàn)證和表單處理的內(nèi)置支持。
這只是Blazor提供的功能中的一部分。如果你的開(kāi)發(fā)團(tuán)隊(duì)善于使用JavaScript,繼續(xù)使用React會(huì)是很好的選擇;如果你忠實(shí)于.NET而不是JavaScript,并且正在開(kāi)始一個(gè)新的項(xiàng)目,Blazor是一個(gè)值得考慮的不錯(cuò)選擇。
Blazor vs. Angular
Angular是另一個(gè)受歡迎的JavaScript框架。與React相比,它更多的是一個(gè)完整的框架而不是庫(kù)。Angular為客戶(hù)端提供MVC架構(gòu)來(lái)簡(jiǎn)化開(kāi)發(fā),并測(cè)試流程。
相比較,Angular仍處于領(lǐng)先位置,因?yàn)槠渲雀?、穩(wěn)定,并且生產(chǎn)就緒。此外,Angular完全支持PWA,而B(niǎo)lazor的服務(wù)器端還不具兼容性。
再者,因?yàn)锳ngular使用TypeScript,它相較于JavaScript對(duì)C#語(yǔ)言開(kāi)發(fā)者來(lái)說(shuō)更相關(guān)、更好理解。有Angular控制局勢(shì),我沒(méi)有發(fā)現(xiàn)Blazor有任何突破性的功能,可以促使擅長(zhǎng)TypeScript的人轉(zhuǎn)而使用Blazor。
說(shuō)取代JavaScript還為時(shí)尚早,但不得不說(shuō),Blazor未來(lái)可期。