Angular2の「5 MIN QUICKSTART」を触ってみた。このエントリーは「AngularJS Advent Calendar 2015」12月20日の記事です。
Angular2のQuick Startは、JavaScript、TypeScript、DartとあるがJavaScript、TypeScriptをやってみる
JavaScript
作業ディレクトリの作成
適当な名前でディレクトリを作る
mkdir angular2javascript && cd $_
モジュールのインストール
angularについては--save-exact
でバージョンを固定している。まだアルファ版だからね(かどうかは分からないが)。live-server、これいいよ。
npm init -y npm i angular2@2.0.0-alpha.44 --save --save-exact npm i live-server --save-dev
必要なファイルを作る
簡単に済ませるので2つ
touch index.html touch app.js
index.html
カスタムタグをmy-app
として定義
<html> <head> <title>Angular 2 QuickStart</title> <script src="node_modules/angular2/bundles/angular2.sfx.dev.js"></script> <script src="app.js"></script> </head> <body> <my-app></my-app> </body> </html>
ここでsfxはシステムローダー使わない場合に利用するとのこと
This bundle executes its main module - angular2_sfx, when loaded, without a corresponding System.import call. It is aimed at ES5 developers that do not use System loader polyfills (like system.js and es6 loader).
app.js
selectorで定義したmy-app
がカスタムタグにめがけ挿入、Web Componentsちっく。
(function() { var AppComponent = ng .Component({ selector: 'my-app', template: '<h1>My First Angular 2 App</h1>' }) .Class({ constructor: function () { } }); document.addEventListener('DOMContentLoaded', function() { ng.bootstrap(AppComponent); }); })();
templateはtemplateUrlでも書けて
templateUrl: 'app.html'
app.html:
<h1>My First Angular 2 App</h1>
とすることも出来る
実行
live-server
を実行するとデフォルトブラウザが起動してAngular2JavaScript版が動く
TypeScript
作業ディレクトリの作成
同じように適当な名前でディレクトリを作る
mkdir angular2typescript && cd $_
モジュールのインストール
今回はsystemjs
とtypescript
を追加
npm init -y npm i angular2@2.0.0-alpha.44 --save --save-exact npm i systemjs typescript npm i live-server --save-dev
必要なファイルを作る
簡単に済ませるので2つ。但し今回app
はtsで。
touch index.html touch app.ts
index.html
クラスローダーを使っているのでAngularはangular2.dev.js
を利用
<html> <head> <title>Angular 2 QuickStart</title> <script src="node_modules/systemjs/dist/system.js"></script> <script src="node_modules/typescript/lib/typescript.js"></script> <script src="node_modules/angular2/bundles/angular2.dev.js"></script> <script> System.config({ transpiler: 'typescript', typescriptOptions: { emitDecoratorMetadata: true } }); System.import('./app.ts'); </script> </head> <body> <my-app>loading...</my-app> </body> </html>
app.js
TypeScriptを使ってapp.js
は
import {bootstrap, Component} from 'angular2/angular2'; @Component({ selector: 'my-app', template: '<h1>My First Angular 2 App</h1>' }) class AppComponent { } bootstrap(AppComponent);
import
は重要
スクリプトが、プロパティ、関数、およびオブジェクトを、その情報をエクスポートした署名付きスクリプトからインポートすることを可能にします。この機能は、Traceur CompilerやES6 Module Transpilerのようなトランスコンパイラで実装されています。
実行
live-server
最後に
Typeで書いてもES5で書いてもいいけどTypeの方がちょっといいね 作ったソースはこちら