Mithril

―最速クライアントサイドMVC

[cover photo]
TOPICS
Web , JavaScript
発行年月日
ISBN
978-4-87311-744-7
FORMAT
EPUB
Ebook
1,650円
Ebookを購入する

Mithrilは2014年にリリースされたクライアントサイドMVCフレームワークです。ムダが削ぎ落とされ、必要な機能にフォーカスされており、旧来のフレームワークでは成し得なかったパフォーマンスを引き出します。
本書は、そのMithrilを使ったシングルページアプリケーションの作り方について紹介します。まずシングルページアプリケーションの概要から、Mithrilの役割、アプリケーションのコード、アプリケーションの各レイヤーについて、またユーザインタフェースのライブラリの活用方法についても紹介します。さらに大規模なアプリケーション開発を補助する機能について、ラウターの仕組み、コンポーネント、またユニットテストの仕方やMithrilの自動再描画システム、JavaScriptの非同期処理の次世代標準となったPromiseなどについても説明しています。本書によって最近注目を集めるシングルページアプリケーションの、Mithrilを使っての作り方を学べるでしょう。
なお、本書はEbookのみの販売となります。

本書のサンプルコード

[サンプルコードのリポジトリ]

著者の渋川さんによる解題

Shibu's Diary: 世界最速でMithril本をリリースした話

目次

まえがき

第1章 GUIのパターンとMithrilの概要
    1.1 MVC(モデル・ビュー・コントローラ)
    1.2 MVP(モデル・ビュー・プレゼンター)
    1.3 Model 2
    1.4 MVVM(モデル・ビュー・ビューモデル)
    1.5 シングルページアプリケーション
    1.6 Webクライアント用MVCフレームワーク
    1.7 Mithrilの特徴
    1.8 Mithrilを学ぶ意義
    1.9 Mithrilのモデル
    1.10 本章のまとめ

第2章 Mithrilチュートリアル
    2.1 最小限のMithrilアプリケーション
    2.2 ToDoアプリケーションを作ってみる
    2.3 ローカル保存機能を追加する
    2.4 サーバ保存機能を追加する
    2.5 本章のまとめ

第3章 Mithrilのコントローラ、モデル、ビューモデル
    3.1 コントローラ
        3.1.1 コントローラが扱うデータ
        3.1.2 コントローラの実装
        3.1.3 後片付け処理
    3.2 モデル
        3.2.1 Mithrilのモデルのインタフェース
        3.2.2 コンストラクタ
        3.2.3 セッター・ゲッター
        3.2.4 非同期アクセス
        3.2.5 モデルの永続化
        3.2.6 モデルのライフサイクルと名前空間
    3.3 ビューモデル
        3.3.1 ビューモデルはコンポーネントの中?外?
    3.4 MithirlのAPIとレイヤー分けの目安
    3.5 大きなアプリケーションのファイル分割構成
    3.6 本章のまとめ

第4章 Mithrilのビュー
    4.1 コンポーネントの中のビュー関数
    4.2 ビューの基本的な書き方
    4.3 バインディング
        4.3.1 モデルからビューへのバインディング
        4.3.2 ビューからモデルへのバインディング
    4.4 再生成を避けるためのTipsとkey擬似属性
    4.5 config擬似属性によるビューのカスタマイズ
        4.5.1 context.onunload
        4.5.2 context.retain
    4.6 どこまでをビューにするか
    4.7 テンプレートの条件分岐、ループ、構造化
    4.8 安全でないコンテンツの挿入
    4.9 ビューの変換補助ツール
    4.10 本章のまとめ

第5章 Bootstrapを適用する
    5.1 Bootstrapとは?
    5.2 CDNでBootstrapを利用
    5.3 Bowerを使ってBootstrapをインストール
    5.4 Bootstrapの部品を利用する際の注意点
    5.5 BootstrapのCSSを利用したコンポーネントを利用する
    5.6 BootstrapのJavaScriptを利用したコンポーネントを利用する
    5.7 ナビゲーションコンポーネントを作成する
    5.8 本章のまとめ

第6章 ラウターとシングルページアプリケーション
    6.1 RESTful
    6.2 ラウターとは?
    6.3 MithrilのラウターのAPI
    6.4 URLのパラメータ
    6.5 Mithrilのラウターの種類
    6.6 Wikiの実装
        6.6.1 簡易版Wikiの機能
        6.6.2 サーバ側のサポートの実装
        6.6.3 クライアントHTMLの実装
        6.6.4 モデルクラスの実装
        6.6.5 ラウター定義
        6.6.6 コンテンツ表示ページのコンポーネント
        6.6.7 コンテンツ編集ページのコンポーネント
        6.6.8 確認ページの追加
    6.7 本章のまとめ

第7章 コンポーネント
    7.1 ソースコードレベルで見たコンポーネント
    7.2 初期値の設定
    7.3 コンポーネントのネスト
        7.3.1 サブコンポーネントの制限
        7.3.2 コンポーネントのネストとkey属性
    7.4 コンポーネントの種類
        7.4.1 ステートレスなコンポーネント
        7.4.2 ステートフルなコンポーネント
    7.5 アプリケーション構成のレシピ
        7.5.1 基本レシピ
        7.5.2 ステートレスなサブコンポーネントを増やす
        7.5.3 ページ間で状態を共有させる
        7.5.4 サブコンポーネントに独立して状態を持たせる
        7.5.5 似たデータを要求するサブコンポーネントの通信をまとめる
        7.5.6 コンポーネント間の結合を疎にする
    7.6 PubSub-jsを使った疎結合なモジュール間通信の実装
    7.7 MithrilのコンポーネントとWebComponentsの違い
    7.8 本章のまとめ

第8章 ユニットテスト
    8.1 Browserifyでブラウザ・node.jsの差異を吸収する
    8.2 テスティングフレームワーク環境の準備
    8.3 テストの書き方とモデルのテスト
        8.3.1 Ajaxのテスト
        8.3.2 モックを使ったテストの注意点
    8.4 ビューモデルのテスト
    8.5 ビューのテスト
        8.5.1 JSONによるビューのテスト
        8.5.2 DOMを作り、jQueryでテストする
        8.5.3 mithril-queryモジュールを使う
    8.6 本章のまとめ

第9章 自動再描画システム
    9.1 再描画システムの基本戦略
    9.2 再描画タイミングの管理
        9.2.1 カウンタを使った再描画処理のマージ
        9.2.2 フレーム間の再描画処理のマージ
    9.3 外部のライブラリと再描画システムの統合
        9.3.1 カウンタによる描画指示
        9.3.2 m.redraw()による強制再描画
    9.4 仮想DOMによる高速化
        9.4.1 ライフサイクルと描画戦略
        9.4.2 仮想DOMによる差分更新
        9.4.3 差分検知のスキップ
    9.5 サンプル・ポモドーロタイマー
    9.6 仮想DOMでは高速化できないこと
        9.6.1 JavaScriptレイヤーで改善できること
        9.6.2 HTMLやCSSの構造に必要な修正
        9.6.3 初回サーバ通信の高速化
        9.6.4 変更がCSSアニメーションだけで完結する場合
    9.7 本章のまとめ

第10章 Promiseで非同期を扱う
    10.1 Promiseを使ってパイプを組み立てる
    10.2 Promiseを作る
    10.3 Promiseの並行実行と待ち合わせ
    10.4 Promiseのエラー処理
    10.5 非同期処理とユニットテスト
    10.6 m.requestとPromise
    10.7 例外モニタ
    10.8 標準のPromise APIとの違い
    10.9 本章のまとめ

第11章 AJAXとサーバ通信
    11.1 Mithril標準のAJAX機能によるGET/POSTアクセス
        11.1.1 m.requestのデフォルト動作の変更
    11.2 ファイルの送信
    11.3 socket.ioを使ったチャットの実装
    11.4 本章のまとめ

第12章 TypeScriptからMithrilを使う
    12.1 TypeScriptの開発環境
    12.2 TypeScriptを使ったMithrilのコード補完の設定
    12.3 本章のまとめ

付録A 本書で使用するツール
    A.1 Bower
    A.2 Browserify

著者紹介