0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C# Blazor 書初め

Posted at

C# Blazor 書初め

正月ってことで書初め。自分メモとして履歴残します。

やったこと

これをやって要点をまとめました。コピペで10分で確認できるようにまとめてあります。

入れたもの

フォントは最近お試しで使い始めているもの。ゼロ0とオーOが違うなどのPG向き。

  • VSCodeUserSetup-x64-1.52.1
  • dotnet-sdk-3.1.404-win-x64
  • JetBrainsMono-2.221

TL;DR

こまけぇこたぁいいんだ。これだけやれば理解できた気になれる。

プロジェクト生成

  • cd /c/git
  • dotnet new blazorserver -o TodoList
  • cd TodoList

アプリ起動

watch でファイル変更時にリコンパイルかかる。

  • dotnet watch run

page追加

  • dotnet new razorcomponent -n Todo -o Pages

Pages/Todo.razor

@page "/todo"

<h3>Todo</h3>

@code {

}

@page "/todo" を書くことでURLが解釈される。書かないと

Sorry, there's nothing at this address.

が出てページなしエラーとなる。
ルーティングを各ページに書くのね・・・メモメモ。

menu追加

Shared/NavMenu.razor

<li class="nav-item px-3">
    <NavLink class="nav-link" href="todo">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
    </NavLink>
</li>

ここまで書けば、メニュークリックで新しい表示が出来ます。

処理追加

プロジェクト (TodoList フォルダー) のルートに TodoItem.cs ファイルを追加します。

TodoItem.cs

public class TodoItem
{
    public string Title { get; set; }
    public bool IsDone { get; set; }
}

razor側にもコード追加

Pages/Todo.razor

@page "/todo"

<h3>Todo (@todos.Count(todo => !todo.IsDone))</h3>

<ul>
    @foreach (var todo in todos)
    {
        <li>
            <input type="checkbox" @bind="todo.IsDone" />
            <input @bind="todo.Title" />
        </li>
    }
</ul>

<input placeholder="Something todo" @bind="newTodo" />
<button @onclick="AddTodo">Add todo</button>

@code {
    private IList<TodoItem> todos = new List<TodoItem>();
    private string newTodo;

    private void AddTodo()
    {
        if (!string.IsNullOrWhiteSpace(newTodo))
        {
            todos.Add(new TodoItem { Title = newTodo });
            newTodo = string.Empty;
        }
    }
}

え、インポート文とかいらないの?F12で参照ジャンプできるんですけど、なにこれすごい(語彙力

残課題

仕事用の検証としてはまだまだ確認できていない事があるのでメモ。

  • Material Design な UI コンポーネントライブラリ(MatBlazor)を使ってみる
    https://www.matblazor.com/
  • APIの非同期通信と、通信中のグルグル表示
  • IndexedDBでローカル保存
  • サーバーサイドレンダリングとクライアントSPAの違い、メリデメ比較

まとめ

Reactで普通だと思ってたことが、若干「竹槍」に感じるくらいに楽にコード書ける(かもしれない。まだ検証不足)

ReactはCordovaでネイティブアプリ作れるメリットがあるので、住み分けするならBlazorをWeb用で高速開発、Cordovaでスマホアプリか。

xamarin? おや、誰かきたようだ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?