Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
まだ DOM 操作で消耗してるの? / ngineerxiv #3
Search
Yuki Ishikawa
June 06, 2015
0
58
まだ DOM 操作で消耗してるの? / ngineerxiv #3
(だいたい)新卒エンジニア向け技術交流会 vol.3
https://ngineerxiv.doorkeeper.jp/events/24857
Yuki Ishikawa
June 06, 2015
Tweet
Share
More Decks by Yuki Ishikawa
See All by Yuki Ishikawa
Snowflake Openflow さわってみた
hoto17296
0
430
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
1.1k
ORM と向き合う
hoto17296
14
11k
明日業務で役立たない Web 開発 TIPS
hoto17296
0
220
クソ bot 実装ライブコーディング
hoto17296
0
240
DeepGBM 論文の紹介
hoto17296
0
690
試行錯誤のための Docker 活用術
hoto17296
4
3.2k
Hive 集計テクニック
hoto17296
0
530
データ分析と Docker / Data Analysis with Docker
hoto17296
0
390
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
940
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
76
So, you think you're a good person
axbom
PRO
2
1.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
The agentic SEO stack - context over prompts
schlessera
0
640
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
·ͩ DOM ૢ࡞Ͱ ফͯ͠Δͷʁ 2015.06.06 (͍͍ͩͨ)৽ଔΤϯδχΞ͚ٕज़ަྲྀձ vol.3
None
͜ΜΜ hoge17296 Ͱ͢ʂʂʂʂʂ
hoto 17296
ͱ͏ͱ͏ϓϩάϥϚྺ 10 ʹಥೖ
None
ͦΕͰ 10 Ͱ ͍Ζ͍ΖͳͷΛݟ͖ͯͨ
ΫϥΠΞϯταΠυ JS ࢙ۙ
ʙ 2004 • JS ʮ Web ʹͪΐͬͱಈ͖ΛՃ͑Δͷʯ • ʮJS͕ಈ͔ͳ͍ڥͷ͜ͱ
ɹߟ͑ͳ͖ΌμϝͰ͠ΐʂʂʂʯ • Ϧονͳ͜ͱ Flash ͰΕ
None
None
None
Flash ԫۚ࣌
ਓੜͷઈ
2005
None
Ajax ͷੜ • ࣮ੲ͔Β͚͋ͬͨͲΒΕ͍ͯͳ͔ͬͨ XMLHttpRequest ͕ Google Maps ʹΑͬͯ ࠶ൃݟ͞ΕͯҰ༂༗໊ʹ
• Ajax (Asynchronous JavaScript + XML) ͱ͍͏ ݴ༿͕ੜ·ΕΔ • ͔͠͠·ͩ·ͩෑډ͕ߴ͍
2006
None
jQuery ͷিܸ • ΫϥΠΞϯταΠυϓϩάϥϛϯάͷෑډΛ ѹతʹԼ͛ͨ • DOM ૢ࡞ • Πϕϯτॲཧ
• Ϋϩεϒϥβ • Ajax
$()
͋·͍͋·͍ γϯλοΫε γϡΨʔ
jQuery ৬ਓ͕ࣾձʹ ʮ͜ΕάʔάϧΈ͍ͨʹ ɹΪϡΠʔϯͬͯײ͡Ͱ ɹͰ͖ΔΑͶʁʯ
None
...ͱݴ͑ͳ͍ • ͳ·͡ jQuery ͕͋Εͦͦ͜͜ग़དྷͯ͠·͏ • ͪΐͬͱάάΕϓϥάΠϯ͕མͪͯΔ • ग़དྷΔΑ͏ͳؾ͕ͯ͠͠·͏ •
ʮग़དྷͯͨΓલʯͱͯ͠ཁٻ͞ΕΔ
ͳʹ͕ͭΒ͍͔
ͯ͢ͷ DOM ͷঢ়ଶཧ • Ͳͷ DOM ͕ࠓͲΜͳΛ͍࣋ͬͯΔ͔ • Ͳͷ DOM
͔ΒԿͷΠϕϯτ͕ൃՐ͢Δ͔ • ͜ͷ͕มΘͬͨΒͲͷ DOM Λ ॻ͖͑ͳ͍ͱ͍͚ͳ͍͔
ίϯϙʔωϯτ͕૿͑Δͨͼ ߟ͑Δ͖͜ͱ͕ ࢦؔతʹ૿͍͑ͯ͘ ϓϩάϥϛϯά
Ұ෦ͷ༏Εͨ৬ਓʹ͔͠ ͠ಘͳ͍ઈٕ
ͦͯ͠ 2010
Single Page Application
Single Page Application • HTML5 ͷ history.pushState ʹΑͬͯ URL ͷಈతॻ͖͕͑Մೳʹ
• ϖʔδભҠͱ͍͏֓೦Λӽͨ͠ ΫϥΠΞϯταΠυϓϩάϥϛϯάͷۃ
ྫ ʮSPAͰ࡞ͬͯͶʂʂʂʯ ʮͰ history.back ͯ͠લͷϏϡʔͷ ɹεΫϩʔϧҐஔอ࣋ͯ͠Δͷવͩ͠ ɹใߋ৽͞ΕͯΔΑͶʂʂʂʯ
ਓؒۀͰͳ͍
͜Μͳͷ͕ ”ͨΓલ”ͱͯ͠ ཁٻ͞ΕΔੈͷத ઈରʹؒҧ͍ͬͯΔ
Զ ͏
2014
None
React • Facebook ͷ UI ϥΠϒϥϦ • ϑϨʔϜϫʔΫ͡Όͳ͍ • ಛ
• ϦΞΫςΟϒϓϩάϥϛϯά • Virtual DOM
͏ DOM ૢ࡞͠ͳ͍͍ͯ͘ • มߋ͕͋ͬͨΒ HTML શମΛॻ͖͑Δ • ৗʹ࠷৽ͷঢ়ଶͷ DOM
Λ ϨϯμϦϯά͠ଓ͚Ε͍͍͚ͩ • React ͕෦Ͱ diff / patch ͯ͘͠ΕΔ͔Β ͘ͳ͍
DEMO http://bit.ly/mtg_timer
ʮࣄ͋Δຖʹ࠷৽ͷ HTML Λ ϨϯμϦϯά͢Δʯ ʁʁʁ
͜ΕͬͯੲϖʔδભҠͰ ͍ͬͯͨ͜ͱ͡Όͳ͍͔
γϯϓϧͰݹ͍ ͜ͷ֓೦ͦ͜ ਖ਼͔ͬͨ͠
΅ͨͪ͘ ͪΐͬͱΜͰ͍ͨ ͚ͩͩͬͨΜͩ
·ͱΊ • ΅ͨͪ͘ DOM ૢ࡞ͱ͍͏ ۤ௧Λڧ͍ΒΕ͍ͯΔ • ຑༀ (jQuery) ʹΑΔରྍ๏ݶք͕དྷ͍ͯΔ
• React ʹΑͬͯ΅ͨͪ͘ղ์͞ΕΔ
ָ͔ͬͨ͋͠ͷࠒʹΖ͏
None
·ͩ DOM ૢ࡞Ͱ ফͯ͠Δͷʁ