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 ファイル:
(function (global) {
System.config({
paths: {
'npm:': 'node_modules/'
},
map: {
app: 'app',
'@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',
'rxjs': 'npm:rxjs',
'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api',
},
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">
<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>
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function(err){ console.error(err); });
</script>
</head>
<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 ファイル:
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 ディレクトリは含まれません。
ソースコードのダウンロード
その他の拡張