Angular 2 TypeScript 環境設定

この章では、TypeScriptを使用してAngularアプリケーションを作成します。これは公式に推奨されている方法であり、このチュートリアルの例もTypeScriptで記述します。

TypeScriptは、マイクロソフトが開発したフリーかつオープンソースのプログラミング言語です。JavaScriptのスーパーセットであり、JavaScriptの構文を拡張したものです。

TypeScriptに詳しくない場合は、以下の資料を参照してください:

開始する前に、npmがインストールされていることを確認してください。npmをまだインストールしていない場合やnpmについて知らない場合は、私たちのチュートリアルを参照してください:NPM の使い方。

npm公式サイトのミラーは中国国内からのアクセスが遅いため、ここでは淘宝(タオバオ)のnpmミラーを使用します。インストール方法は以下のとおりです:

$ npm install -g cnpm --registry=https://registry.npmmirror.com

実行後、cnpm コマンドを使用してモジュールをインストールできます。

$ cnpm install

ステップ1: プロジェクトの作成と設定

ディレクトリの作成

$ mkdir angular-quickstart
$ cd angular-quickstart

設定ファイルの作成

Angularプロジェクトには以下の設定ファイルが必要です:

  • package.jsonこのプロジェクトに必要なnpm依存パッケージを指定します。
  • tsconfig.jsonTypeScriptコンパイラがプロジェクトのソースファイルからJavaScriptコードを生成する方法を定義します。
  • typings.jsonTypeScriptコンパイラが認識できないライブラリのために、追加の定義ファイルを提供します。
  • systemjs.config.jsモジュールローダーに、アプリケーションモジュールをどこで検索するかに関する情報を提供し、必要な依存パッケージをすべて登録します。また、このドキュメントの後半の例で必要となるパッケージも含まれています。

angular-quickstart ディレクトリに以下のファイルを作成します。コードは次のとおりです:

package.json ファイル:

{ "name": "angular-quickstart", "version": "1.0.0", "scripts": { "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ", "lite": "lite-server", "postinstall": "typings install", "tsc": "tsc", "tsc:w": "tsc -w", "typings": "typings" }, "license": "ISC", "dependencies": { "@angular/common": "2.0.0", "@angular/compiler": "2.0.0", "@angular/core": "2.0.0", "@angular/forms": "2.0.0", "@angular/http": "2.0.0", "@angular/platform-browser": "2.0.0", "@angular/platform-browser-dynamic": "2.0.0", "@angular/router": "3.0.0", "@angular/upgrade": "2.0.0", "core-js": "^2.4.1", "reflect-metadata": "^0.1.3", "rxjs": "5.0.0-beta.12", "systemjs": "0.19.27", "zone.js": "^0.6.23", "angular2-in-memory-web-api": "0.0.20", "bootstrap": "^3.3.6" }, "devDependencies": { "concurrently": "^2.2.0", "lite-server": "^2.2.2", "typescript": "^2.3.4", "typings":"^1.3.2" } }

tsconfig.json ファイル:

{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false } }

typings.json ファイル:

{ "globalDependencies": { "core-js": "registry:dt/core-js#0.0.0+20160725163759", "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", "node": "registry:dt/node#6.0.0+20160909174046" } }

systemjs.config.js ファイル:

/** * System configuration for Angular samples * Adjust as necessary for your application needs. */ (function (global) { System.config({ paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { // our app is within the app folder app: 'app', // angular bundles '@angular/core': 'npm:@angular/core/bundles/core.umd.js', '@angular/common': 'npm:@angular/common/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http/bundles/http.umd.js', '@angular/router': 'npm:@angular/router/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', // other libraries 'rxjs': 'npm:rxjs', 'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api', }, // packages tells the System loader how to load when no filename and/or no extension packages: { app: { main: './main.js', defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' }, 'angular2-in-memory-web-api': { main: './index.js', defaultExtension: 'js' } } }); })(this);

次に、cnpm コマンドを使用して依存パッケージをインストールします:

$ cnpm install

実行が成功すると、angular-quickstart ディレクトリの下に node_modules ディレクトリが生成されます。ここにはこの例で必要なモジュールが含まれています。プロジェクトのディレクトリ構造を確認してみましょう:


ステップ2: アプリケーションの作成

NgModules を使用して、Angular アプリケーションを機能に関連するコードブロックに編成します。

Angular 自体は独立した Angular モジュールに分割されているため、アプリケーションで必要な Angular の部分だけをインポートできます。

各 Angular アプリケーションには少なくとも1つのroot module(ルートモジュール)、この例では AppModule です。

次に、angular-quickstart ディレクトリの下に app ディレクトリを作成します:

$ mkdir app
$ cd app

次に、app ディレクトリの下に app.module.ts ファイルを作成します。コードは次のとおりです:


app.module.ts ファイル:

import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; @NgModule({ imports: [ BrowserModule ] }) export class AppModule { }

QuickStart はブラウザで動作する Web アプリケーションであるため、ルートモジュールは @angular/platform-browser から BrowserModule をインポートし、imports 配列に追加する必要があります。

コンポーネントを作成してアプリケーションに追加する

各 Angular アプリケーションには少なくとも1つのルートコンポーネント、この例では AppComponent です。app.component.ts ファイルのコードは次のとおりです:


app.component.ts ファイル:

import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: '<h1>私の最初の Angular アプリ</h1>' }) export class AppComponent { }

コードの説明:

  • 上記のコードは、angular2/coreインポートしていますComponentパッケージ。

  • @ComponentAngular 2 のデコレータですこれは、メタデータを AppComponent コンポーネントクラスに関連付けます。

  • my-appCSS セレクタであり、HTML タグ内でコンポーネントとして使用できます。

  • @view含んでおり、templateAngular にそのコンポーネントのビューのレンダリング方法を指示します。

  • exportコンポーネントがファイル外で使用できることを指定します。

次に、app.module.ts ファイルを再度開き、新しい AppComponent をインポートして、NgModule デコレータの declarations と bootstrap フィールドに追加します:


app.module.ts ファイル:

import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule ], declarations: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }

ステップ4: アプリケーションの起動

次に、Angular にアプリケーションの起動方法を指示する必要があります。

angular-quickstart/app ディレクトリの下に main.ts ファイルを作成します。コードは次のとおりです:


main.ts ファイル:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; const platform = platformBrowserDynamic(); platform.bootstrapModule(AppModule);

上記のコードはプラットフォームを初期化してコードを実行可能にし、そのプラットフォーム上で AppModule を起動します。


アプリケーションのホストページを定義する

angular-quickstart ディレクトリの下に index.html ファイルを作成します。コードは次のとおりです:


index.html ファイル:

<html> <head> <title>Angular 2 例 - サンプル(example.com)</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="styles.css"> <!--1. ライブラリを読み込む--> <!--IE にはポリフィルが必要--> <script src="node_modules/core-js/client/shim.min.js"></script> <script src="node_modules/zone.js/dist/zone.js"></script> <script src="node_modules/reflect-metadata/Reflect.js"></script> <script src="node_modules/systemjs/dist/system.src.js"></script> <!--2. SystemJS を設定--> <script src="systemjs.config.js"></script> <script> System.import('app').catch(function(err){ console.error(err); }); </script> </head> <!--3. アプリケーションを表示--> <body> <my-app>Loading...</my-app> </body> </html>

ここで注目すべき点は次のとおりです:

  • JavaScript ライブラリ:core-jsは、古いブラウザ向けのポリフィルライブラリです。zone.jsとreflect-metadataライブラリは Angular に必要なものであり、SystemJS ライブラリはモジュールロードに使用されます。

  • SystemJS の設定ファイルとスクリプトは、先ほど main ファイルに記述した app モジュールをインポートして実行できます。

  • <my-app> タグはアプリケーションが読み込まれる場所です。

  • スタイルを追加する

    angular-quickstart ディレクトリの styles.css ファイルに必要なスタイルを設定できます:


    styles.css ファイル:

    /* Master Styles */ h1 { color: #369; font-family: Arial, Helvetica, sans-serif; font-size: 250%; } h2, h3 { color: #444; font-family: Arial, Helvetica, sans-serif; font-weight: lighter; } body { margin: 2em; }

    ステップ6: アプリケーションをコンパイルして実行する

    ターミナルウィンドウを開き、以下のコマンドを入力します:

    npm start
    

    http://localhost:3000/ にアクセスすると、ブラウザに次の結果が表示されます:

    これで最初の Angular2 アプリケーションの作成が完了です。最終的なディレクトリ構造は次のとおりです:

    この記事で使用したソースコードは、以下の方法でダウンロードできます。node_modules と typings ディレクトリは含まれません。

    ソースコードのダウンロード

    その他の拡張