SlideShare a Scribd company logo
angular 1 脳で見るangular 2
自己紹介
株式会社シーエーアドバンス
新川盛幸
業務系社内システム
ruby on rails、angularjs
話すこと
1. 特徴
2. Template Syntax
3. Built-in Directive
4. Component指向
5. angular-cli
angularjsを触った事ある人向けに
なるべくangular1でいうコレがangular2でいうアレっていう形で話せればと思います。
Version
今から説明する事は、versionが変わっていろいろ更新される部分もあるかもしれません
が、どんな感じで書くのか、だいたいのイメージができればいいかなと思ってます。
試したversion = v2.0.0-alpha.44
今 = v2.0.0-alpha.46
特徴
速度
特徴
変更検知
特徴
開発言語の選択
angular2は生のjavascriptでも書けますが、typescript、dartなどのAltJSを選択して開発
できます。
普段はrubyに似た構文で書けるcoffeescriptで開発していますが、angularが推奨して
るっぽいのでtypescriptを使用した説明をします。
typescriptは次期javascriptの仕様となるES6由来の構文で書け、IDEのサポートも受けれ
ます。
特徴
例
特徴
angular1とどのくらい変わったか比較
angular2でも開発言語の選択での違いを比較
<my-app>タグを<h1>にする
簡単なディレクティブの定義の例
Angular 1
特徴
特徴
ng-appもng-controllerもなく、まとめてコンポーネント
(ディレクティブ)
$scopeもなくなり、thisを使う
TypeScript
特徴
TypeScript
特徴
Controller
Directive
必要なモジュールを
ロード
一番上の層のComponentは
bootstrapが必要
Template Syntax
{{}}
Template Syntax
{{}} = 展開
Filter => Pipe
Template Syntax
#
Template Syntax
# = エレメント
[]
Template Syntax
[] = プロパティバインディング
[]
Template Syntax
ng-* => [*]
[]
Template Syntax
angular 1.x angular 2.x
<img ng-src=”image_url”> <img [src]=”image_url”>
<a ng-href=”page_url”> <a [href]=”page_url”>
<div ng-show=”true”> <div [visible]=”true”>
<div ng-hide=”false”> <div [hidden]=”false”>
[]
Template Syntax
angular 1.x angular 2.x
<div ng-style=”color:red”> <div [style.color]=”red”>
<div [style.width.px]=”20”>
<div ng-class=”{‘active’:true}”> <div [class.active]=”true”>
<div [attr.class]=”active”>
()
Template Syntax
() = イベントバインディング
()
Template Syntax
ng-* => (*)
イベント
Template Syntax
<button ng-click=”onClick()”> <button (click)=”onClick()”>
<button ng-keyup=”keyup()”> <button (keyup)=”keyup()”>
<button (keyup.enter)=”enter()”>
<button ng-mouseover=”mouseover()”> <button (mouseover)=”mouseover()”>
ng-* => (*)
[()]
Template Syntax
[()] = 双方向データバインディング
[()]
Template Syntax
[()]
Template Syntax
角カッコ(プロパティバインディング )
[ng-model]だけでは値は入るが、変更
は検知しない
丸カッコ(イベントバインディング )
(ng-model-change)を利用して変更さ
れた値をnameに入れる
[()]
Template Syntax
[()]
Template Syntax
[] = プロパティ = ModelからViewへ
() = イベント= ViewからModelへ
[()] = 両方 = 双方向
Built-in Directives
ng-if
Built-in Directives
ng-if => *if
ng-repert
Built-in Directives
ng-repeat => *for
ng-model
Built-in Directives
ng-model => [(ng-model)]
ng-change
Built-in Directives
ng-change => (ng-model-change)
Component指向
Conponent
ConponentはController(ロジック)やView(html)を含んでいるパーツ
ログインフォームだったりメニューだったりをConponent化してまとめて作っていきます。
Component指向
Conponent
Component指向
Conponent
Component指向
適用するセレクタの指定 (restrict)
'cmp' = タグ
'[cmp]' = 属性
'cmp, [cmp]' = 両方
'button[cmp]' = buttonタグのcmp属性
Conponent
Component指向
展開するテンプレートの指定
templateで直接htmlを書いてもOK
Conponent
Component指向
適用するCSSの指定、なくてもOK
Conponent
Component指向
View側で使用するモジュールの指定
built-in directiveだったり、作成したコンポー
ネントだったり。
FORM_DIRECTIVESにはng−modelとか
が入っている。
使用するモジュールのロード
Shadow Dom
Componentが生成されるとShadow Domという要素になります。
htmlがカプセル化され、cssやjsが干渉しない要素
個人ならまだしもチームでcssを書いたり、大きいアプリケーションになるほどcssのクラス名
を全体に干渉しない名前を調べたり、htmlの子や孫セレクタで絞って適用したりするかと
思いますが、
読み込んだstyleはcomponent単位でのみ有効
Component指向
Shadow Dom
Component指向
my-componentは
BootstrapのCSSは当たるが
Shadow Dom
Component指向
my-componentがstyleUrlで
呼び出したcssは外部に影響しない
Componentの構造
Conponentの中に他のConponentを子として持ち、ツリー構造でアプリケーションを作っ
ていきます。
親は子にデータを渡したり、子は親にイベントを通知したりできます。
angular1でいう$scope.$broadcast、$scope.$onみたいなもの
Component指向
Componentの構造
Conponent指向
親から子へ(attribute)
Component指向
親から子へ(attribute)
Component指向
親が名前や年齢を渡す
子は@Inputで受け取る
子から親へ(event)
Component指向
子から親へ(event)
Component指向
親は子で定義された
eventを受け取る
子はEventEmitterを使って
eventを作る
作成したEventEmitterを
使ってeventを発行
angular-cli
https://github.com/angular/angular-cli
angular-cli
サーバー動かしたりlive-reloadとかtypescriptのコンパイルとか、
簡単にプロジェクトのセットアップをしてくれるnpmのパッケージ
簡単なscafoldがあったり、ディレクトリの分け方の統一ができたりする
angular-cli
SET UP
angular-cli
SCAFFOLD
angular-cli
angular1とかなり変わっていて、結構学習コストがかかりそうですが、速さの面でもメリット
が大きく、コンポーネント単位で組み立てていくangularjsは疎結合にしやすいし、一度
作ったコンポーネントの使い回しが楽そう。
紹介できたのはわずかですが、ajax周りとかanimationとか、まだまだ試せていないAPIが
いっぱいあるのでこれから勉強していきたいです。
angular-cliで簡単にangular2を試せるのでぜひ試してみてください。
Component指向
所感

More Related Content

What's hot (20)

PDF
Angular2
Kenichi Kanai
 
PDF
俺とAngular JS 2
Masayuki KaToH
 
PDF
Directiveで実現できたこと
Kon Yuichi
 
PDF
イベント駆動AngularJS / 今から書くAngular 2.0
Okuno Kentaro
 
PDF
Enterprise x AngularJS
Kenichi Kanai
 
PPTX
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
 
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
 
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
 
PDF
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
 
PPTX
Angular js開発事例
Shun Takeyama
 
PDF
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
 
PPTX
AngularJSを浅めに紹介します
nkazuki
 
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
 
PPTX
React を導入した フロントエンド開発
daisuke-a-matsui
 
PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
 
PDF
JavaScriptと共に歩いて行く決意をした君へ
Muyuu Fujita
 
PDF
Flux react現状確認会
VOYAGE GROUP
 
PPTX
10分でわかるOpenAPI V3
Kazuchika Sekiya
 
PDF
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
 
PDF
AngularJSについて
昌生 高橋
 
Angular2
Kenichi Kanai
 
俺とAngular JS 2
Masayuki KaToH
 
Directiveで実現できたこと
Kon Yuichi
 
イベント駆動AngularJS / 今から書くAngular 2.0
Okuno Kentaro
 
Enterprise x AngularJS
Kenichi Kanai
 
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
 
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
 
Angular js開発事例
Shun Takeyama
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
 
AngularJSを浅めに紹介します
nkazuki
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
 
React を導入した フロントエンド開発
daisuke-a-matsui
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
 
JavaScriptと共に歩いて行く決意をした君へ
Muyuu Fujita
 
Flux react現状確認会
VOYAGE GROUP
 
10分でわかるOpenAPI V3
Kazuchika Sekiya
 
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
 
AngularJSについて
昌生 高橋
 

Similar to angular1脳で見るangular2 (15)

PPTX
angularJS vs angular2
Kamimura Taichi
 
PPTX
Our Track to Modern Angular
Yuta Shimizu
 
PPTX
Our Track to Modern Angular #2
Yuta Shimizu
 
PDF
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
 
PDF
AngularJS で ハイスピードSI
Koichiro Nishijima
 
PDF
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
pinmarch_t Tada
 
PDF
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
 
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
PDF
ngJapan報告会
Fumio SAGAWA
 
PPTX
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
PDF
はじめてのAngular その1
純一 榮枝
 
PPTX
AngularJSを触ってみた
tomowata
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
fisuda
 
PDF
20140529 JS Ojisan #2 LT あの「note」はAngular.js
Shoei Takamaru
 
angularJS vs angular2
Kamimura Taichi
 
Our Track to Modern Angular
Yuta Shimizu
 
Our Track to Modern Angular #2
Yuta Shimizu
 
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
 
AngularJS で ハイスピードSI
Koichiro Nishijima
 
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
pinmarch_t Tada
 
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
 
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
ngJapan報告会
Fumio SAGAWA
 
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
はじめてのAngular その1
純一 榮枝
 
AngularJSを触ってみた
tomowata
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
fisuda
 
20140529 JS Ojisan #2 LT あの「note」はAngular.js
Shoei Takamaru
 
Ad

angular1脳で見るangular2