2017年2月3日金曜日

Aurelia 学ぶ 1

Aurelia(アウレリア)の勉強を始めました。
http://aurelia.io/

Angularと、どちらにするかで悩みましたが、まずは、モダンな方(Aurelia)を勉強して、だめなら、保守的な選択(Angular)をすれば良いと考えてのことです。

また、JavaScriptを知っているといっても、これからは、新しい記述方法に移行していく必要があります。
TypeScriptと、ES6の選択でも悩みました。
型で制約を受けるというだけでも、TypeScriptの方が魅力的ですが、ES6を知らずに、TypeScriptを学んでも意味が無いと思い、ES6を選択しました。

勉強のスタートは、本家のHPが一番です。
本や、日本語の紹介サイトでは、雰囲気は学べますが、既に、古い情報になっていることが多く、本家が間違いありません。

まずは、<Get Started>を学びます。

適当(ここでは、ある意味、手抜き)に読んでいるため、間違いがあるかもしれません。間違いがあれば、コメントいただけると助かります。


最初の一歩は、ダウンロード。

基本的なプロジェクトをダウンロードし、プロジェクトフォルダに展開します。

ルートに、index.html、jsconfig.json。
scriptsフォルダに、スクリプトファイル。
srcフォルダに、プログラムファイル。

が配置されています。
最初は、srcフォルダは、空です。

firefoxで、index.htmlを表示させましたが、白紙でした。


環境の設定
index.htmlファイル内のスクリプトを修正することで、TypeScriptと、ES6のどちらにするかを決めるようです。
ES6を使うので、
<script src="scripts/config-typescript.js"></script>

<script src="scripts/config-esnext.js"></script>
にします。

index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Aurelia</title>
  </head>
  <body aurelia-app="src/main">
    <script src="scripts/system.js"></script>
    <script src="scripts/config-esnext.js"></script>
    <script src="scripts/aurelia-core.min.js"></script>
    <script>
      System.import('aurelia-bootstrapper');
    </script>
  </body>
</html>



プログラムを記述

srcフォルダに、次の4つのファイルを作ります。

todo.js
保存データのモデルです。

export class Todo {
  constructor(description) {
    this.description = description;
    this.done = false;
  }
}

app.js
アプリケーションのモデルです。

   
import {Todo} from './todo';
export class App {
  constructor() {
    this.heading = "Todos";
    this.todos = [];
    this.todoDescription = '';
  }
  addTodo() {
    if (this.todoDescription) {
      this.todos.push(new Todo(this.todoDescription));
      this.todoDescription = '';
    }
  }
  removeTodo(todo) {
    let index = this.todos.indexOf(todo);
    if (index !== -1) {
      this.todos.splice(index, 1);
    }
  }
}

app.html
アプリケーションのビューです。

<template>
  <h1>${heading}</h1>
</template>


main.js
最初に呼ばれるところ。
   
export function configure(aurelia) {
  aurelia.use.basicConfiguration();
  aurelia.start().then(() => aurelia.setRoot());
}


これで、firefoxのブラウザに、「Todos」と表示されます。


詳細に見ていくと、
index.htmlの<body aurelia-app="src/main">タグの部分に、プログラムの内容が表示されます。
タグに、aurelia-app属性を付けると、そこに表示されるようです。
これなら、Webの機能を分割して、配置したり、取り除いたりすることが、簡単にできそうです。

"src/main"のため、main.jsが呼び出される。

app.jsは、どこで呼ばれるのでしょう。別の名前に変更できるのでしょうか。
この点は、不明です。
とりあえず、今は、暗黙の内に、app.jsが呼ばれると考えておきます。

app.jsと、app.htmlは、自動的に、密接に結びつけられるようです。

htmlに、${heading}と記述すれば、ここに、Appクラスのheadingプロパティが表示されます。


firefoxで、index.htmlファイルを表示させましたが、Webサーバーを使って表示させる方法もあります。

その場合、NodeJSがインストールされていれば、次のコマンドで、Webサーバーがインストールされます。
$ npm install http-server -g

実行は、プロジェクトのフォルダで、
$ http-server -o -c-1

これで、ブラウザが自動的に起動し、プログラムが表示されます。
終了するには、ターミナルで、Ctrlを押しながら、cを押します。(Ctrl+c)

0 件のコメント:

コメントを投稿