LoginSignup
1
1

More than 3 years have passed since last update.

RailsチュートリアルCh5 をAurelia2 で作り直す(コンポーネント作成)

Posted at

やること

  • RailsチュートリアルのCh5 をAurelia2 で作成する

ToDo

  • Ch5 のワイヤーフレームから作成するコンポーネントを分割する

  • 各コンポーネントを作成する

ワイヤーフレームをコンポーネントに分割する

共通部分であるヘッダーとフッターとその他のページとに分ける。その上で下記のコンポーネントでアプリケーションを構成したい。

  • shared/header
  • shared/footer
  • pages/home
  • pages/help
  • pages/login
  • pages/about
  • pages/content
  • pages/news

makesコマンドで作成したsrcディレクトリ内にsharedディレクトリを作成し、さらにその中にheaderディレクトリ、footerディレクトリを作成する。同様にpagesディレクトリとその中に各ページ用のディレクトリを作成する。

コンポーネントの作成

各コンポーネントはそれぞれ個別の役割を負うものとする。例えばヘッダーコンポーネントであれば、ヘッダーナビゲーションをユーザーに提供する、等。

コンポーネント作成の基本

コンポーネントは、view-model を提供するためのJavaScript(TypeScript)のクラスとレンダリング対象となるHTMLで構成される。
具体的には、jsまたはtsファイルとhtmlファイルのセットが最小構成になる。例えば、home-pageを作成する場合、

home-page.ts
home-page.html

となる。これに追加で各コンポーネント用のcssファイルも追加する。この際、ファイル名がコンポーネントの名称となる。名称には必ず“-”を使用して命名する必要がある。また、tsファイルとhtmlファイルの名称は拡張子を除いて同一である必要もある。

HomePageコンポーネントの実装


/*
HomePage コンポーネントで使用するモデル
*/
export class HomePage {
}
<div class="center jumbotron">
   <h1>Welcome to the Sample App</h1>

   <h2>
     This is the home page for the Ruby on Rails Tutorial sample application.
   </h2>
</div>

必要最低限の実装はおこなった。次は、アプリケーションのルートコンポーネントで新しく作成したHomePageコンポーネントを使用したい。

アプリケーションルートコンポーネントへのインポート

最初にアプリケーションを作成されるファイルにmain.tsがある。

import Aurelia from 'aurelia';
import { MyApp } from './my-app';

Aurelia
  .app(MyApp)
  .start();

Aurelia は上記のコードでインポートされているmy-app.ts ファイルのクラスMyAppをアプリケーションのルート、大元のコンポーネントとして構成している。先ほど作成したHomeコンポーネントもただファイルを作成しただけではアプリケーションに組み込まれていない。作成したコンポーネントをアプリケーションに組み込む方法はいくつかあるが、今回は使用するコンポーネントのhtmlファイルに直接インポートする方法で実装する。
(別章の実装時に今みているmain.tsファイルに登録する方法に変更する。)

my-appコンポーネントへのインポート

自動生成されたmy-app.htmlのコードをすべて削除して、下記のコードに書き換える。

<import from="./pages/home/home-page"></import>
<home-page></home-page>

コンポーネントを利用するためには、利用するコンポーネントのhtmlファイルにタグを追加し、importタグ内で使用したいコンポーネントを指定する。

import from="コンポーネントの存在する相対パス/コンポーネント名称"

コンポーネントの名称は先ほど作成したファイル名となる。続いて、使用するコンポーネントのタグを記載する。

アプリケーションをサーブする

最後にnpm startコマンドでアプリケーションをローカルで起動して、先ほど作成したhomeページの記載内容がレンダリングされているか確認する。

次にやること

  • 残りのコンポーネントを作成する
  • 複数のコンポーネントをルータによりルーティングする
  • Bootstrapによりデザインを調整する
1
1
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
1
1