Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kon Yuichi
9,902 views
Directiveで実現できたこと
ng-mtg#6に登壇した際のスライド
Software
◦
Read more
14
Save
Share
Embed
Embed presentation
Download
Downloaded 18 times
1
/ 40
2
/ 40
3
/ 40
4
/ 40
5
/ 40
6
/ 40
7
/ 40
8
/ 40
9
/ 40
10
/ 40
11
/ 40
12
/ 40
13
/ 40
14
/ 40
15
/ 40
16
/ 40
17
/ 40
18
/ 40
19
/ 40
20
/ 40
21
/ 40
22
/ 40
23
/ 40
24
/ 40
25
/ 40
26
/ 40
27
/ 40
28
/ 40
29
/ 40
30
/ 40
31
/ 40
32
/ 40
33
/ 40
34
/ 40
35
/ 40
36
/ 40
37
/ 40
38
/ 40
39
/ 40
40
/ 40
More Related Content
PPTX
Angular js開発事例
by
Shun Takeyama
PDF
noteをAngularJSで構築した話
by
Kon Yuichi
PDF
Angular 4がやってくる!? 新機能ダイジェスト
by
Masahiko Asai
PDF
スキスキIonic
by
Kon Yuichi
PDF
イベント駆動AngularJS / 今から書くAngular 2.0
by
Okuno Kentaro
PDF
開発ライフサイクルから見たAngularJS
by
Mizuho Sakamaki
PDF
Angular2
by
Kenichi Kanai
PDF
Enterprise x AngularJS
by
Kenichi Kanai
Angular js開発事例
by
Shun Takeyama
noteをAngularJSで構築した話
by
Kon Yuichi
Angular 4がやってくる!? 新機能ダイジェスト
by
Masahiko Asai
スキスキIonic
by
Kon Yuichi
イベント駆動AngularJS / 今から書くAngular 2.0
by
Okuno Kentaro
開発ライフサイクルから見たAngularJS
by
Mizuho Sakamaki
Angular2
by
Kenichi Kanai
Enterprise x AngularJS
by
Kenichi Kanai
What's hot
PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
by
Shumpei Shiraishi
PDF
angular1脳で見るangular2
by
Moriyuki Arakawa
PDF
AngularJSとFluxとRiotJSと
by
Ryo Iinuma
PDF
AngularJSで業務システムUI部品化
by
Toshio Ehara
PDF
Angular1&2
by
Kenichi Kanai
PPTX
Angular2実践入門
by
Shumpei Shiraishi
PDF
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
by
Mitsuru Ogawa
PDF
Angular#Kanazawa
by
Kenichi Kanai
PDF
AngularJSからReactに移ったケースの話
by
kumatch kumatch
PDF
Angularモダンweb開発セミナー紹介 20170923
by
Staffnet_Inc
PDF
angular X designer - デザイナからみたAngularJS #ten1club
by
silvers ofsilvers
PDF
俺とAngular JS 2
by
Masayuki KaToH
PDF
One-time Binding & $digest
by
Hayashi Yuichi
PDF
Angular jsの継続的なバージョンアップ
by
Kazuyoshi Tsuchiya
PDF
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
by
Horiguchi Seito
PPTX
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
by
Hiroyuki Kusu
PDF
AngularJS 概説
by
Kenichi Kanai
PDF
クリエイティブの視点から探るAngular 2の可能性
by
Yasunobu Ikeda
PPTX
【ABC2014Spring LT】AngularJSでWEBアプリ開発
by
Hiroyuki Kusu
PDF
今後のWeb開発の未来を考えてangularJSにしました
by
Mitsuru Ogawa
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
by
Shumpei Shiraishi
angular1脳で見るangular2
by
Moriyuki Arakawa
AngularJSとFluxとRiotJSと
by
Ryo Iinuma
AngularJSで業務システムUI部品化
by
Toshio Ehara
Angular1&2
by
Kenichi Kanai
Angular2実践入門
by
Shumpei Shiraishi
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
by
Mitsuru Ogawa
Angular#Kanazawa
by
Kenichi Kanai
AngularJSからReactに移ったケースの話
by
kumatch kumatch
Angularモダンweb開発セミナー紹介 20170923
by
Staffnet_Inc
angular X designer - デザイナからみたAngularJS #ten1club
by
silvers ofsilvers
俺とAngular JS 2
by
Masayuki KaToH
One-time Binding & $digest
by
Hayashi Yuichi
Angular jsの継続的なバージョンアップ
by
Kazuyoshi Tsuchiya
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
by
Horiguchi Seito
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
by
Hiroyuki Kusu
AngularJS 概説
by
Kenichi Kanai
クリエイティブの視点から探るAngular 2の可能性
by
Yasunobu Ikeda
【ABC2014Spring LT】AngularJSでWEBアプリ開発
by
Hiroyuki Kusu
今後のWeb開発の未来を考えてangularJSにしました
by
Mitsuru Ogawa
Viewers also liked
PDF
そろそろ押さえておきたい AngularJSのセキュリティ
by
Muneaki Nishimura
PPTX
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
by
Kazuhiro Yoshimoto
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
PDF
業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?
by
Fumio SAGAWA
PDF
イマドキのフロントエンドエンジニアの道具箱
by
Fumio SAGAWA
PDF
新標準PSRに学ぶきれいなPHP
by
Yusuke Ando
PPTX
IE11 Enterprise Mode
by
彰 村地
PDF
SPAに必要なJavaScriptFrameWork
by
Mizuho Sakamaki
PPTX
とある脆弱性の永い議論
by
Mtikutea
KEY
Composer による依存管理 と Packagist によるライブラリの公開
by
Shogo Kawahara
PDF
ng-mtg#6 AngularJS ディレクティブ・パターン
by
Hayashi Yuichi
PDF
Introducing Sencha Space
by
久司 中村
PDF
Yeomanではじめる爆速webアプリ開発
by
Masakazu Muraoka
PPTX
IEI and Enterprise
by
彰 村地
PDF
モダンAngularJS @ GDG中国2014.12.6
by
Okuno Kentaro
PDF
Firefox/Thunderbirdを組織内でより良く使う
by
Hiroshi Yuki
そろそろ押さえておきたい AngularJSのセキュリティ
by
Muneaki Nishimura
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
by
Kazuhiro Yoshimoto
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?
by
Fumio SAGAWA
イマドキのフロントエンドエンジニアの道具箱
by
Fumio SAGAWA
新標準PSRに学ぶきれいなPHP
by
Yusuke Ando
IE11 Enterprise Mode
by
彰 村地
SPAに必要なJavaScriptFrameWork
by
Mizuho Sakamaki
とある脆弱性の永い議論
by
Mtikutea
Composer による依存管理 と Packagist によるライブラリの公開
by
Shogo Kawahara
ng-mtg#6 AngularJS ディレクティブ・パターン
by
Hayashi Yuichi
Introducing Sencha Space
by
久司 中村
Yeomanではじめる爆速webアプリ開発
by
Masakazu Muraoka
IEI and Enterprise
by
彰 村地
モダンAngularJS @ GDG中国2014.12.6
by
Okuno Kentaro
Firefox/Thunderbirdを組織内でより良く使う
by
Hiroshi Yuki
Directiveで実現できたこと
1.
Directiveで実現できたこと @konpyu 2014/07/25 ng-mtg#6
2.
自己紹介 • KON Yuichi
(@konpyu)! • Software Engineer in peace of cake! • Server side engineer! • Love Angular
3.
Agenda ・noteについて ・noteでのユースケース ・Directive Tips
5.
文章、音楽、イメージなどの コンテンツを作って発表
6.
簡単に販売できる 簡単に購入できる
7.
マガジン ・ノートを束ねる機能 ・雑誌のように編集 ・カテゴリ機能として ・有料にもできる
8.
開発の規模感 • Rails 4.1
+ nginx + MySQL + AngularJS(1.2系) • coffeeで8500Lくらい • 14 Controller, 33 Service, 36 Directive • エンジニア4名、デザイナー2名
9.
Directive use case
in note
10.
機能単位にコンポーネント化 DOM操作を要するもの
11.
機能単位にコンポーネント化 ・Controllerは極力薄く。Directiveに適切な$scope を与えることを中心事にする ・機能ごとにDirectiveに追い出す ・なるべくIsolate Directiveにする ・Isolateじゃなくても、ng-includeは使わずDirective にする
12.
フォロー 数字が増える フォローする リンクが消える クリックすると…
13.
フォロー html js userをisolate scopeで受け取る Clickイベントをbindする 成功したらフラグを立てる 見た目はng-classで切り替え イベントを発行。通知バーで表示反映
14.
フォロー ユーザがフォローされた時の イベントを$scope.$onで受信し 表示を切り替え
15.
スキ アイコンが追加される 星がつく クリックすると…
16.
スキ noteをisolate scopeで受け取る Clickイベントをbindする OKならフラグを立てる & スキ一覧の配列にunshift
17.
モーダル ui-bootstrapで提供されて いる$modalサービスを Directiveでラップ
18.
モーダル Clickイベントで $modal.open()を呼ぶ Directiveのlink関数のscopeと$modalに渡す コントローラ内の$scopeが混じって危険なのが微妙
19.
やってることはどれも大体同じ ・isolate scopeで変更対象のscopeを受け取る ・clickイベントにAPIをcallする処理を紐付ける ・表示の反映はng-classに適切な変数をbind ・必要に応じて$rootScope.$broadcastして更新通知
20.
DOM操作を要するもの $(element)に対する処理をディレクティブに隠 して再利用できるようにしておく
21.
Shift + Enterで改行するテキストエリア Enterを押すと送信されちゃう。Shift
+ Enterを押した 時には改行にしたい
22.
Shift + Enterで改行するテキストエリア
23.
lazyload.jsをラップして遅延ロード
24.
lazyload.jsをラップして遅延ロード imgタグの代わりにlazy-load-imageタグを使う
25.
・改行に応じて広がるテキストエリア ・表示と同時にフォーカスを当てる ・領域外の任意の位置をクリックすると消える通知 ・自動補完 他にも…
26.
DOMを操作したくなったら Directiveの出番 ・Testablity / コンポーネント化
/ 再利用性 ・ui-bootstrapのような外部ライブラリも検討 ・$watch内でDOM操作をすると激重になるので注意
27.
Directive Tips
28.
Directiveの親子関係 ・Directiveを入れ子にしたいとき ・子の中でrequire: 親のDirective名 を指定する ・linkの第四引数に親のcontrollerが入る ・親のcontrollerではやり取り用のAPIを用意
29.
Directiveの親子関係 子のlinkの 第四引数に入る やり取り用のAPIを用意
30.
・Directiveの内部で起こった変更をどう他の ControllerやDirectiveに伝播させるか ! ・Angularアプリ全体の設計に関わる問題 それなりの規模のアプリを構築 すると必ずぶち当たる問題
31.
ex) フォローボタンを押したら、通知欄の「xxxさんを フォローする」を消す
32.
いまのnote $rootScope NavbarController $rootScopeからイベントを$broadcast 受信側は$scope.$onで受け取り処理を行う $scope.$on followUser (uid)
-> # 表示の反映処理 Directive UserController # フォロー成功イベントを発行 $rootScope.$broadcast followUser , uid Directive
33.
イベントベースの問題点 ・多用するとコードが追いにくくなる(なってる) ・2 way data
bindingのメリットを捨てている
34.
MainCtrlを置く方法 [参考] http://gon.to/2013/05/01/sharing-data-state-on- angularjs-alternatives-comparison-and-my-solution/ MainController UserController NavbarController Directive
Directive scope: user: = Follow.save , (res) -> scope.user.is_follow = true scope: user: = $scope.obj.user = {} $scope.obj.user = { name: kon , is_follow: false} 2 way data bindingされて 自動的に表示変更
35.
MainCtrlベース ・子のcontrollerは親のcontrollerのscopeにアクセスできる 性質を利用 ・MainCtrlにはbindingする変数定義のみ置く ・初期化は子のcontrollerで行う ・2 way data
bind されるので$rootScope.$broadcast不要 ・MainCtrlの肥大化が懸念
36.
実際にあった悲劇 !?
37.
継承に関するDot Rule ・$scopeの継承の仕組みはjavascriptのprototype chainと 同じ($scope
is pure javascript object) ・子の$scopeにhogeが無ければ、親の$scopeへhogeを探 しに行く ・hogeが文字列や整数のようなprimitiveな変数だと prototype chainが実行されない ・$scope.container.hoge のようにしてobjectを挟むとよい
38.
まとめ Directiveを用いると ・共通部分を追い出して使いまわせる ・カプセル化 ・結果的にControllerを薄く出来る ・DOM操作がAngular wayに乗って行える
39.
参考資料 ! Directive to Directive
Communication http://www.thinkster.io/angularjs/sMgLuIxf02/angularjs-directive-to-directive- communication ! PROPOSED ANGULAR S WEBPAGE STRUCTURE http://gon.to/2013/05/18/proposed-angulars-project-structure ! Nested Scopes in AngularJS http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html ! Combining AngularJS with existing Components http://henriquat.re/directives/advanced-directives-combining-angular-with- existing-components-and-jquery/angularAndJquery.html !
40.
参考資料 Rethinking AngularJS Controllers http://toddmotto.com/rethinking-angular-js-controllers/ ! Advanced
Design Patterns and Best Practice http://trochette.github.io/Angular-Design-Patterns-Best-Practices/#/intro !
Download