統一碼瀏覽器
用於瀏覽 Unicode 字元資料庫的 Blazor C# Web 應用程式。
該應用程式託管在那裡:https://unicode-browser.azurewebsites.net/home
特徵
- 以 Unicode 碼點分解文字。
- 查看有關代碼點的詳細資訊。
- 瀏覽給定 Unicode 區塊中的程式碼點。
- 按名稱搜尋任何字元。
- 在專用於 Unicode 區塊的頁面上顯示附加資訊(以 Markdown 格式)。
嘗試一下
您可以嘗試使用以下幾個 URL 來查看應用程式的運行情況:
- https://unicode-browser.azurewebsites.net/blocks/Miscellaneous%20Symbols%20and%20Pictographs
- https://unicode-browser.azurewebsites.net/codepoints/1F365
- https://unicode-browser.azurewebsites.net/search?q=Tree
- https://unicode-browser.azurewebsites.net/decomposition?text=????????
- https://unicode-browser.azurewebsites.net/blocks/Tangut
- https://unicode-browser.azurewebsites.net/blocks/Tags
使用的主要技術
- ASP.NET Core 3.0(.NET Core 3.0.0-預覽版8.19405.7)
- 布拉佐爾
- 馬克迪格 0.17.1
- 引導程式4.1
- 棒字體 5.0.10
- jQuery 3.3.1(因為 Bootstrap JS 似乎仍然需要它)
文件連結
Blazor 文件可從 docs.microsoft.com 取得。
背景故事
應用程式的大部分內容最初是在 2016 年初使用 ASP.NET Core、TypeScript 和 Aurelia 的預覽版本編寫的。當時,這是一個了解這些非常新的框架的機會,而且效果很好。
目前版本的源代碼主要是早期原型的直接改編。事實上,大部分伺服器程式碼只是簡單地移植到 ASP.NET Core 2.1,幾乎沒有進行任何修改。
然而,客戶端部分才是「有趣」的地方,因為只有 HTML 部分是可重複使用的。 (並且仍然需要遷移到 Bootstrap 4 / Fontawesome 5)這又是測試和學習如何使用 Blazor 以及跟上其他技術最新動態的絕佳機會。
陷阱
Blazor 是一項非常新的技術,仍處於早期預覽階段,有時可能很難處理。
正因為如此,我發現自己在一些我認為微不足道的事情上絆倒了,我覺得我必須編寫大量的樣板程式碼才能讓這些事情發揮作用。
例如
* 令我非常失望的是,我無法在伺服器和客戶端之間共享我的模型類,因為 Blazor 目前使用 SimpleJson,但它的功能受到很大限制。 ? (遺憾的是,Newtonsoft.Json 目前似乎運作得還不夠好。?)
- 必須手動綁定到查詢字串參數
- 頁面有時需要手動偵聽位置變更(例如同一頁面上的 URL 變更)
- 沒有現成的狀態管理。 (例如,當您在歷史記錄中前進和後退時會發生什麼)=> 我透過根本不需要狀態管理並始終依賴路由或查詢字串來解決這個問題。
- 組件生命週期似乎不太可擴展:在基類中添加複雜的行為很困難(例如在加載內容之前顯示旋轉器)
3.0 中情況有所改善(路由參數現在已解碼?),但我認為大多數觀點仍然正確。
.NET Core 3.0 的一些新穎之處:
- System.Text.Json 是 Blazor 的新(預設)JSON 序列化器。然而,它的邊緣非常粗糙。無法開箱即用地反序列化不可變類型是一個真正的痛苦。 ? => 我實作了一個 JsonConverter 來管理這個特定的情況。透過依賴動態程式碼生成,我們可以建立一個新 API 將接受反序列化的類型,然後實例化不可變類型。
- 在預覽版 8 中,Blazor 用戶端專案仍必須以 .NET Standard 2.0 為目標,而非 .NET Standard 2.1。