Blazor WebAssembly 3.2.0 正式起飛,blazor 適合你嗎?

張善友發表於2020-05-01

最近blazor更新很快,今天在官方部落格上釋出了Blazor WebAssembly 3.2.0 RC:https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-release-candidate-now-available/ ,這是最後一次預覽版了,功能開發都已經完成。

image

5.19的微軟Build大會上就正式釋出了,我最近也在積極的研究學習blazor,在部落格和公眾號發了幾篇最新版本釋出的文章,在評論區還是微信群,有人問我,為什麼你對blazor如此熱情,這些同學都在使用vue/angular/react等前端框架,blazor正好是利用WebAssembly 開發的前端框架,程式語言從js變成了c#, 我覺得如果您對你的前端技術棧感到滿意,你可以繼續使用現在你所用的框架繼續前進,也許blazor並不適合你 ,巧的是最近vue3 也釋出了beta版本,vue3 要真正普及也是需要至少一年的時間,blazor 可以充分的吸收前端技術棧的精華,為我所用,我將在文章的末尾列出一些blazor 吸收前端技術圈的成果的開源專案。

blazor適用於編寫內部應用程式,企業應用開發人員開發的B2B和B2C的應用程式都適合使用blazor開發,現在已經有很多企業應用開發人員接受了JavaScript,還有許多企業開發人員沒有,特別是winform,wpf 等開發人員,他們特別希望能夠高效的的完成開發工作,這裡面有很多的開發人員都很認同Sliverlight 是他們交付Web應用程式的捷徑,一朝被蛇咬,十年怕井繩,有人認為blazor 只是 Silverlight vNext。我們為什麼要相信微軟這次不會殺死它?這種觀點可以理解,但是將blazor 的未來與Sliverlight的過去混為一談是荒謬的。

Silverlight是瀏覽器外掛模型的犧牲品。2010年Flash是瀏覽器上非常流行的外掛,史蒂夫-賈伯斯(Steve Jobs)殺死了他,iOS裝置上不支援Flash,當時Silverlight 也是如日中天,微軟親手殺死了它,擁抱了Html5這種無外掛模型,相比之下,blazor是在WebAssembly標準之下的現代瀏覽器中執行,每個主流瀏覽器(IE11除外),甚至是iOS裝置上的Safari 都支援blazor,這裡要吐槽下微信裡面的哪個瀏覽器貌似支援不太好。我們可以將WebAssembly視為在JavaScript執行所在的沙箱中執行的二進位制編譯程式碼,blazor 正式藉助於WebAssembly 實現了將.NET 執行時執行在瀏覽器中。這個執行時處理 JavaScript 互操作,並提供基本服務(如垃圾回收)和更高階別的功能(佈局、路由和使用者介面小部件等)。換句話說,blazor使用了一個駐留在另一個虛擬機器中的虛擬機器,堪稱《盜夢空間》級別的悖論,也是一種在瀏覽器中執行非 JavaScript 應用程式框架的巧妙方法。

執行時使得blazor 和 WebAssembly 上執行的其他語言與眾不同,MonoCLR 編譯為WebAssembly。任何.NET Standard 2.1的程式碼都可以在上面執行,這樣就可以把.NET生態的大量庫帶到前端開發,其他的語言只實現了直接編譯為WebAssembly,blazor當前利用WebAssembly 的一個獨特創新,據我所知,還沒有一個類似於blazor這樣的WebAssembly執行時存在。

blazor 真正是一個元件模型,元件模型也很優雅,blazor的繫結模型也很容易理解。事件模型和標準的C# 一樣,隨著諸如DevExpress、Telerik、Radzen、Syncfusion等控制元件廠商提供了大量的控制元件,企業應用開發人員有理由開始blazor之旅。InfoQ的一篇文章《Mono 現狀與未來: 從 Xamarin 到 WebAssembly、Blazor 及.NET 5》有助於大家理解blazor和.NET的關係。

我這裡也期望JavaScript的開發同學一起來使用這項創新的前端開發框架,人們經常說,WebAssembly 並不是用來代替 JavaScript 的。但這句話對所有革命性平臺都是一樣的。JavaScript 當初並不是要取代嵌入瀏覽器的 Java。Web 應用程式並非旨在替代桌面應用。但一旦能做到這些,它們必然會走上那條路。 在社群也出現了大量的blazor 開源專案,這項開源專案都是急需前端開發同學的參與:

    • 開源專案 ant-design-blazor,目標是成為Ant Design官方認可的Blazor實現,並豐富Blazor生態

Github:https://github.com/ElderJames/ant-design-blazor
Demo:https://ant-design-blazor.gitee.io
開發文件:https://github.com/ElderJames/ant-design-blazor/wiki

  • Bootstrap 是 Blazor基於Bootstrap ,這個UI庫目前只有伺服器端,客戶端wasm模式等正式版出來會搞

       倉庫地址:https://gitee.com/LongbowEnterprise/BootstrapBlazor

       演示地址:blazor.sdgxgz.com

  • Blazui  Element的blazor版本,用 .NET 寫前端的 UI 框架

       倉庫地址:https://github.com/wzxinchen/Blazui

       演示地址 http://blazui.com:9000

  • Blazorise 是一個元件庫,基於 像Bootstrap, Bulma 和Material 等CSS frameworks

      github:https://github.com/stsrki/Blazorise 

      官網:https://blazorise.com/

  • Skclusive-UI Component library for Blazor using Material Design.

      github: https://github.com/skclusive/Skclusive.Material.Component   

  • Material Design components for Blazor and Razor Components

      github:https://github.com/SamProf/MatBlazor 

github的倉庫: https://github.com/AdrienTorris/awesome-blazor 收集了更全面的blazor 和webassembly相關的資料。

相關文章