ユニコードブラウザ
Unicode 文字データベースを参照するための Blazor C# Web アプリケーション。
アプリケーションはそこでホストされています: https://unicode-browser.azurewebsites.net/home
特徴
- テキストを Unicode コードポイントに分解します。
- コードポイントの詳細情報を表示します。
- 指定された Unicode ブロック内のコード ポイントを参照します。
- 任意のキャラクターを名前で検索します。
- Unicode ブロック専用のページに追加情報 (マークダウン形式) を表示します。
試してみてください
アプリケーションの動作を確認するために試せる 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 では依然として jQuery 3.3.1 が必要なようです)
ドキュメントへのリンク
Blazor のドキュメントは docs.microsoft.com で入手できます。
バックストーリー
このアプリケーションの大部分は、もともと 2016 年の初めに、ASP.NET Core、TypeScript、および Aurelia のプレビュー バージョンを使用して書かれたものです。当時、これはそれらの非常に新しいフレームワークについて学ぶ機会であり、非常にうまくいきました。
現在のバージョンのソース コードは、ほとんどが初期のプロトタイプをそのまま応用したものです。実際、サーバー コードのほとんどは、ほとんど変更を加えずに ASP.NET Core 2.1 に移植されただけです。
ただし、クライアント部分は HTML 部分のみが再利用可能であるため、「楽しい」部分でした。 (それでも Bootstrap 4 / Fontawsome 5 への移行が必要でした) これも、他のテクノロジを最新の状態に保つだけでなく、Blazor の使用方法をテストして学ぶ素晴らしい機会でした。
落とし穴
Blazor は非常に新しいテクノロジーであり、まだ初期プレビュー段階にあるため、対処が難しい場合があります。
そのため、些細なことだと思っていたことでつまずいてしまい、これらを機能させるために多くの定型コードを書かなければならなかったと感じています。
例えば
* Blazor は現在、非常に制限された SimpleJson を使用しているため、サーバーとクライアントの間でモデル クラスを共有できないことに非常にがっかりしました。 ? (そして悲しいことに、Newtonsoft.Json は今のところ十分に機能していないようです。?)
- クエリ文字列パラメータへのバインドは手動で行う必要があります
- ページは、場所の変更を手動でリッスンする必要がある場合があります (同じページ上の URL の変更など)。
- すぐに使える状態管理はありません。 (例: 履歴を前後に移動すると何が起こるか) => 状態管理をまったく必要とせず、常にルートまたはクエリ文字列に依存することでそれを解決しました。
- コンポーネントのライフサイクルはあまり拡張性がないようです。基本クラスに複雑な動作を追加するのは困難です (コンテンツがロードされる前にスピナーを表示するなど)。
3.0 では状況は改善されました (ルート パラメーターがデコードされるようになりました ?) が、ほとんどの点は依然として真実であると思います。
.NET Core 3.0 のいくつかの新機能:
- System.Text.Json は、Blazor の新しい (既定の) JSON シリアライザーです。ただし、エッジは非常に粗いです。不変型をそのままでは逆シリアル化できないのは非常に面倒です。 ? => この特定のケースを管理するために JsonConverter を実装しました。動的コード生成に依存することで、新しい API が逆シリアル化を受け入れる型を作成し、その不変型をインスタンス化できます。
- Preview 8 でも、Blazor クライアント プロジェクトは、.NET Standard 2.1 ではなく .NET Standard 2.0 をターゲットにする必要があります。