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
EN
Uploaded by
Kon Yuichi
PDF, PPTX
8,650 views
AngularJSの高速化
2014/8/22 第二回 html5minutes LTのスライドです
Software
◦
Read more
23
Save
Share
Embed
Download
Download as PDF, PPTX
1
/ 30
2
/ 30
3
/ 30
4
/ 30
5
/ 30
6
/ 30
7
/ 30
8
/ 30
9
/ 30
10
/ 30
11
/ 30
12
/ 30
13
/ 30
14
/ 30
15
/ 30
16
/ 30
17
/ 30
18
/ 30
19
/ 30
20
/ 30
21
/ 30
22
/ 30
23
/ 30
24
/ 30
25
/ 30
26
/ 30
27
/ 30
28
/ 30
29
/ 30
30
/ 30
More Related Content
PPTX
Angular js はまりどころ
by
Ayumi Goto
PDF
AngularJSでの非同期処理の話
by
Yosuke Onoue
PDF
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
by
Yusuke Murata
PPTX
React を導入したフロントエンド開発
by
daisuke-a-matsui
PDF
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
by
Kohei Asai
PDF
RailsでReact.jsを動かしてみた話
by
yoshioka_cb
PDF
One-time Binding & $digest
by
Hayashi Yuichi
PDF
One Time Binding & Digest Loop
by
Kon Yuichi
Angular js はまりどころ
by
Ayumi Goto
AngularJSでの非同期処理の話
by
Yosuke Onoue
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
by
Yusuke Murata
React を導入したフロントエンド開発
by
daisuke-a-matsui
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
by
Kohei Asai
RailsでReact.jsを動かしてみた話
by
yoshioka_cb
One-time Binding & $digest
by
Hayashi Yuichi
One Time Binding & Digest Loop
by
Kon Yuichi
What's hot
PDF
Alt01-LT
by
Yuta Hiroto
PDF
Vue.jsでさくっとMVVM
by
Satoshi Anai
PDF
React.js + Flux
by
dsuke Takaoka
PDF
今すぐブラウザでES6を使おう
by
Hayashi Yuichi
PDF
Flux react現状確認会
by
VOYAGE GROUP
PDF
いまさら聞けない!?Backbone.js 超入門
by
Kohei Kadowaki
PPTX
簡単AngularJS(関西AngularJS勉強会)
by
Takahiro Maki
PDF
jQueryを中心としたJavaScript
by
hideaki honda
PDF
なぜ人は必死でjQueryを捨てようとしているのか
by
Yoichi Toyota
PPTX
AngularJS入門
by
Kenji Shirane
PDF
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
PPTX
今からでも遅くない! React事始め
by
ynaruta
PPTX
AngularJSを浅めに紹介します
by
nkazuki
PDF
3分でわかるangular js
by
Shin Adachi
PDF
はじめてのVue.js
by
kamiyam .
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
PPTX
まだDOM操作で消耗してるの?
by
IRI MO
PPTX
エンタープライズ分野での実践AngularJS
by
Ayumi Goto
PPTX
20160927 reactmeetup
by
Naoki Kurosawa
PDF
Angular.jsについてちょっとしゃべる
by
Masashi Haga
Alt01-LT
by
Yuta Hiroto
Vue.jsでさくっとMVVM
by
Satoshi Anai
React.js + Flux
by
dsuke Takaoka
今すぐブラウザでES6を使おう
by
Hayashi Yuichi
Flux react現状確認会
by
VOYAGE GROUP
いまさら聞けない!?Backbone.js 超入門
by
Kohei Kadowaki
簡単AngularJS(関西AngularJS勉強会)
by
Takahiro Maki
jQueryを中心としたJavaScript
by
hideaki honda
なぜ人は必死でjQueryを捨てようとしているのか
by
Yoichi Toyota
AngularJS入門
by
Kenji Shirane
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
今からでも遅くない! React事始め
by
ynaruta
AngularJSを浅めに紹介します
by
nkazuki
3分でわかるangular js
by
Shin Adachi
はじめてのVue.js
by
kamiyam .
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
まだDOM操作で消耗してるの?
by
IRI MO
エンタープライズ分野での実践AngularJS
by
Ayumi Goto
20160927 reactmeetup
by
Naoki Kurosawa
Angular.jsについてちょっとしゃべる
by
Masashi Haga
Viewers also liked
PDF
Angularjs - lazy loading techniques
by
Nir Kaufman
PDF
AngularJS入門の巻2
by
Toshio Ehara
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
PDF
今後のWeb開発の未来を考えてangularJSにしました
by
Mitsuru Ogawa
PDF
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
by
アシアル株式会社
PDF
HTTP/2の現状とこれから
by
shigeki_ohtsu
PDF
深層学習フレームワーク Chainer の開発と今後の展開
by
Seiya Tokui
PDF
Enterprise x AngularJS
by
Kenichi Kanai
PDF
開発ライフサイクルから見たAngularJS
by
Mizuho Sakamaki
PDF
noteをAngularJSで構築した話
by
Kon Yuichi
PDF
スキスキIonic
by
Kon Yuichi
PDF
Angular js - 10 reasons to choose angularjs
by
Nir Kaufman
PPTX
Interaksi antar komponen biotik
by
Devita Sagita
PDF
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
by
Koji Shiraishi
Angularjs - lazy loading techniques
by
Nir Kaufman
AngularJS入門の巻2
by
Toshio Ehara
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
今後のWeb開発の未来を考えてangularJSにしました
by
Mitsuru Ogawa
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
by
アシアル株式会社
HTTP/2の現状とこれから
by
shigeki_ohtsu
深層学習フレームワーク Chainer の開発と今後の展開
by
Seiya Tokui
Enterprise x AngularJS
by
Kenichi Kanai
開発ライフサイクルから見たAngularJS
by
Mizuho Sakamaki
noteをAngularJSで構築した話
by
Kon Yuichi
スキスキIonic
by
Kon Yuichi
Angular js - 10 reasons to choose angularjs
by
Nir Kaufman
Interaksi antar komponen biotik
by
Devita Sagita
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
by
Koji Shiraishi
Similar to AngularJSの高速化
PDF
Angular の紹介
by
Neo Xrea
PDF
あの時AngularJSと出会った僕らは
by
Muyuu Fujita
PDF
Javaな人が気を付けるべきJavaScriptコーディングスタイル
by
Maaya Ishida
PPTX
Angular jsとsinatraでturbolinks
by
Minori Tokuda
PDF
HTML5 ビギナーのための AngularJS
by
Kenichi Kanai
PDF
AngularJS 概説
by
Kenichi Kanai
PDF
実践Knockout
by
Kazuhiro Eguchi
PDF
angularJS in 10ish minutes
by
Kenichi Kanai
PDF
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
PPTX
Angular JSを始めよう!
by
Satoshi Kishi
Angular の紹介
by
Neo Xrea
あの時AngularJSと出会った僕らは
by
Muyuu Fujita
Javaな人が気を付けるべきJavaScriptコーディングスタイル
by
Maaya Ishida
Angular jsとsinatraでturbolinks
by
Minori Tokuda
HTML5 ビギナーのための AngularJS
by
Kenichi Kanai
AngularJS 概説
by
Kenichi Kanai
実践Knockout
by
Kazuhiro Eguchi
angularJS in 10ish minutes
by
Kenichi Kanai
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
Angular JSを始めよう!
by
Satoshi Kishi
AngularJSの高速化
1.
Speeding up AngularJS
@konpyu! html5minute! 2014.8.22
2.
自己紹介 • KON
Yuichi (@konpyu)! • Software Engineer in peace of cake! • Love Angular! • SNS note: AngularでClient構築
4.
Frontend MV*
5.
TodoMVC Benchmark http://vuejs.org/perf/
6.
そもそも遅い
7.
なぜか
8.
2way data binding
ViewModel View ・js が保持するデータと HTML として画面に表示さ れる内容が双方向で自動的に連携 ・大規模なSPA, WebAppで実装コストを削減可
9.
2way data binding
よくあるFW → 専用のクラスを継承して手動でBindingを設定 AngularJS → PureなJavascript ObjectをViewModelとして扱う $scope ↑この方
10.
2way data binding
<p>{{ user.name }}</p> html
11.
2way data binding
<p>{{ user.name }}</p> $scope.user.name = “konpyu”; html js
12.
2way data binding
楽すぎる! <p>{{ user.name }}</p> $scope.user.name = “konpyu”; html js
13.
2way data binding
html <input type=“text” ng-model=“name”>
14.
2way data binding
html <input type=“text” ng-model=“name”>
15.
2way data binding
楽すぎる! <input type=“text” ng-model=“name”> alert($scope.name); html js
16.
Dirty Checking $scopeはPureなjavascript
object → 値に何らかの変更があったかは言語の機能では検出 できない → Object.observe() はよ! ! Angularでは… 特定のタイミングで$scopeに変更があったか否かを $scopeの内容をすべて前後比較してチェック → digest loopと呼ぶ
17.
なので、方針としては 1) 1回のdigest
loopにかかる時間を減らそう 2) digest loopが起こる回数を減らそう
18.
dirty checkingの対象を減らそう 変更あったで
変更あったで digest loop 対象が2000を超えると遅延が目立つと言われている http://stackoverflow.com/questions/9682092/databinding-in-angularjs/9693933#9693933
19.
dirty checkingの対象を減らそう 変更あったで
変更あったで digest loop 対象が2000を超えると遅延が目立つと言われている http://stackoverflow.com/questions/9682092/databinding-in-angularjs/9693933#9693933
20.
one-time binding version
1.3では値の変更が無さそうなものは最初の1回 しか評価しないように設定できる ! 余計な前後比較の数を減らせるので処理時間が減る - Official Doc https://docs.angularjs.org/guide/expression#one-time-binding
21.
one-time binding
22.
one-time binding 変わる可能性アリ
変わる可能性アリ
23.
one-time binding 多分変わらない
多分変わらない 多分変わらない
24.
one-time binding one-time
bindingにしたい変数の前に::を付けるだけ
25.
bindonce ・one-time bindingは1.3での実装
・1.2系でも、同様のコンセプトのDirectiveがいくつか 公開されている ・Pasvaz/bindonce https://github.com/Pasvaz/bindonce
26.
重たいFilter ・Filterは便利だが、digest loopごとに計算されるので
重たい処理を挟むと時間がかかる ・Custom Filterを作る時は実行時間を意識する ・どうしようもなければ事前計算する
27.
digest loopが起こる回数を 減らそう
digest loopが起こるタイミング ! 1) DOMイベントが発生した時 2) $html,$resourceでレスポンスが返ってきた時 3) $locationで遷移が行われる時 4) $timeoutで指定秒が経った時
28.
$timeoutは必要? ・$timeoutはsetTimeoutのwrapper ・setTimeoutとの違いは、tick時にdigest
loopが走るか ・tick時に$scopeの変更がないのであれば、setTimeoutにした 方が余計なdigest loopが走らない ・もしくは、$timeoutの第三引数にfalseをsetするとdigest loop が走らない ← (例)10s後にPVを加算するAPIを call。tick時にDOMの書き換えは無 くdigest loopを走らせる必要がな いので第三引数をfalseにしてskip
29.
API Callはなるべく1本に ・当たり前といえば当たり前だが…
・$http, $resourceでデータをfetchした時にdigest loop が走るため、画面構築時に何本もAPIを呼ぶとdigest loop が多く走ってしまう
30.
まとめ ・Angularの2way data
bindingはPureなJS Objectが ViewModelになります ・PureなJS Objectに変化があったか否かは現状のjsの仕様では 検知できないので、無理やり前後比較をします(Dirty Checking) ・watch対象が増えるとdigest loopにかかる時間が増えて重く なります ・digest loopにかかる時間と、発生頻度を減らす事が高速化の 基本方針です
Download