読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Advent Calendar 11 - Iron Routerを一言で言うと

Meteorはシングルページウェブアプリのプラットフォームです。
マルチページにするにはmrtでIron Routerパッケージを追加します。

https://github.com/EventedMind/iron-router

Iron Routerは(シングルページウェブアプリを拡張したためか)基本的にクライアント側のルータです。つまり、ルータのスクリプトを読み込み、パスに応じてPJAXでコンテンツを取得して描画します。
各コンテンツはテンプレートで記述します。テンプレートはあくまでbodyタグに埋め込むHTMLのクラスなので、headタグの中身は変えることができず、結果としてheadタグの中身は基本的に全ページ共通。headタグ内の変更が必要な場合にはルーターのbeforeフックを使って書き換えます。

Router.map ->
    @route 'home',
        path: '/'
        template: 'home'
        before: ->
            document.title = getLocalizedString 'Go Live "Mimiaka"'

headタグの記述には注意が必要です。すべてのパスで共通のheadになるので、通常相対アドレスで書く自サイトリソースのURLはすべてのルートからの絶対アドレスで書く必要があります。

上記のようにIron Routerは基本的にはクライアント側のルーターですが、HTMLではなくテキストを返すなど全く違うコンテンツを返す場合にはサーバー側でルーティングすることもできます。