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
Why React and not jQuery?
Search
Takanori Maeda
May 27, 2016
Technology
0
230
Why React and not jQuery?
社内LT大会用のスライドです。
Takanori Maeda
May 27, 2016
Tweet
Share
More Decks by Takanori Maeda
See All by Takanori Maeda
Why Redux?
maechabin
0
160
モバイルWeb開発最前線 -PWA開発パターン「PRPL」の紹介-
maechabin
0
570
最新フロントエンド事情2016年版
maechabin
1
790
Other Decks in Technology
See All in Technology
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
1
13k
Delegating the chores of authenticating users to Keycloak
ahus1
0
140
Operating Operator
shhnjk
1
470
What’s new in Android development tools
yanzm
0
110
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
120
AIとともに進化するエンジニアリング / Engineering-Evolving-with-AI_final.pdf
lycorptech_jp
PRO
0
150
改めてAWS WAFを振り返る~業務で使うためのポイント~
masakiokuda
2
230
B2C&B2B&社内向けサービスを抱える開発組織におけるサービス価値を最大化するイニシアチブ管理
belongadmin
1
5.7k
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
0
210
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
270
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
420
OPENLOGI Company Profile
hr01
0
67k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Cult of Friendly URLs
andyhume
79
6.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Rails Girls Zürich Keynote
gr2m
94
14k
Six Lessons from altMBA
skipperchong
28
3.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Optimizing for Happiness
mojombo
379
70k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Transcript
Why React? and not jQuery? ίϯϙʔωϯτࢦͳUI։ൃ͕ ͳͥྲྀߦ͍ͬͯΔͷ͔ʁ @maechabin
jQueryਖ਼͠ΜͲ͘ͳ͍Ͱ͔͢ʁ
ྫ͑͜Μͳέʔε
ඇಉظͰݕࡧ݁Ռ͕දࣔ͞ΕΔը໘ ݕࡧ ݅A ݅B ݅C ೖྗʮΩʔϫʔυʯͱબ ͨ͠ʮ݅ʯʹΑͬͯ ݕࡧ݁Ռ͕දࣔ͞ΕΔ
༧͞ΕΔ࣮ґཔ • Ωʔϫʔυ͕ೖྗ͞Ε͍ͯͳ͍࣌ɺݕࡧϘλϯΛԡͤͳ͍Α͏ʹͨ͠ ͍ɻ·ͨೖྗͨ͠ΩʔϫʔυݕࡧϘλϯΛԡͨ͠ޙɺอ͍࣋ͨ͠ɻ • ݅Aͱ݅BΛબͨ࣌͠ಉ͡ϑΥʔϚοτͷݕࡧ݁ՌΛදࣔ͢Δ ͕ɺ݅CΛબͨ࣌͠ɺҟͳͬͨϑΥʔϚοτͷݕࡧ݁ՌΛදࣔ͞ ͍ͤͨɻ • ݅CΛબ͚ͨ࣌ͩ͠ɺݕࡧ݁Ռ͔Βͦͷ༰ΛฤूͰ͖ΔΑ͏ʹ
͠ɺฤूͨ͠Βͦͷ෦͚ͩഎܠ৭Λม͑ɺ͞Βʹݕࡧ݁ՌͷҰ൪্ʹ ද͍ࣔͤͨ͞ɻ • ݕࡧϘλϯΛͳͯ͘͠ɺΩʔϫʔυ݅Λมߋ͢Δʹɺݕࡧ݁Ռ͕ දࣔ͞ΕΔΑ͏ʹ͍ͨ͠ɻ Etc…
jQueryΛͬͯͲ͏࣮ํ͢Δ͔ ॠ࣌ʹΠϝʔδͰ͖·͔͢ʁ
jQuery͠ΜͲ͍Ͱ͢ΑͶ…
React͕͍͍Αͱ͍͏Λ લஔ͖͜Ε͘Β͍ʹͯ͠ ͜Ε͔Β͍͖ͯ͠·͢ ͱ͍͏͜ͱͰ
ͯ͞ɺReactͬͯԿʁ
Reactͱ • 2013͔ΒFacebook͕த৺ͱͳͬͯ։ൃ͍ͯ͠ΔUI ߏஙͷͨΊͷJavaScriptϥΠϒϥϦ • AngularͳͲͷϑϨʔϜϫʔΫͱಉʹѻΘΕͨΓ͠ ͍ͯΔ͕ɺ͋͘·ͰViewΛߏங͢ΔͨΊͷͷ • େखͷWebαʔϏεถYahoo!ɺAirBnBɺNetflixͳͲ͕ ੵۃతʹ࠾༻
• ෦Ͱঢ়ଶΛཧ͠ɺঢ়ଶʹมߋ͕͋ΔͨͼʹView શମΛϨϯμϦϯά͢Δ߽తͳΞϓϩʔν • SPAΛ࣮͢Δࡍʹཱͭ
Reactͷಛ 1. ίϯϙʔωϯτࢦ 2. VirtualDOM 3. σʔλͷྲྀΕҰํͷΈ https://facebook.github.io/react/
ίϯϙʔωϯτࢦ • ReactͰɺViewͷ֤ύʔπΛίϯϙʔωϯτ୯ ҐͰ࡞ΓɺίϯϙʔωϯτΛΈ߹ΘͤͯView Λ࣮͢Δ ݕࡧ ݅A ݅B ݅C
ίϯϙʔωϯτࢦʹΑΓ • React͕෦ʹอ͍࣋ͯ͠Δʮঢ়ଶʯʹ߹Θͤͯ ίϯϙʔωϯτΛΈ߹ΘͤΔ͜ͱͰɺʮঢ়ଶʯ ʹ߹ΘͤͨViewͷߏங͕͘͢͠ͳΔ • ෦୯ҐͰॻ͘ͷͰɺ୭Ͱ؆୯ʹॻ͚Δ • ΧϓηϧԽʹΑΔอकੑ͕ߴ·Δ •
·ͨɺෳਓͰͷ։ൃςετ͕͘͢͠ͳΔ ͱ͍ͬͨϝϦοτ͋Δ
VirtualDOM • ReactͷίϯϙʔωϯτɺVirtualDOMͱ͍͏Ծ తͳDOMΛ࣮ͬͯ͠ɺ࠷ऴతʹϒϥβ ʹϨϯμϦϯά͢Δ࣌ʹຊͷDOMʹม͢Δ ঢ়ଶAͷ࣌ͷ ίϯϙʔωϯτ ʢVirtualDOMʣ ঢ়ଶBͷ࣌ͷ ίϯϙʔωϯτ
ʢVirtualDOMʣ ঢ়ଶAͷ࣌ͷ View ʢ࣮DOMʣ React ϒϥβ ঢ়ଶAͷ࣌ͷDOMΛ ϨϯμϦϯά ʢVirtualDOMΛ࣮DOMʹมʣ
VirtualDOM͍ ঢ়ଶAͷ࣌ͷ ίϯϙʔωϯτ ʢVirtualDOMʣ ঢ়ଶBͷ࣌ͷ ίϯϙʔωϯτ ʢVirtualDOMʣ ঢ়ଶBͷ࣌ͷ View ʢ࣮DOMʣ
• DOMͷશͯΛϨϯμϦϯά͍ͯ͠ΔΑ͏ʹৼͬ ͍ͯΔ͕ɺ࣮ࡍίϯϙʔωϯτΛ࣮DOMʹϨϯ μϦϯά͢Δࡍʹɺલޙͷঢ়ଶΛൺֱ͠ɺࠩ ͷΈߋ৽͍ͯ͠ΔͷͰɺ͔ͳΓߴɻ ঢ়ଶAͷ࣌ͷ View ʢ࣮DOMʣ ϒϥβ ϒϥβ React લޙͷVirtualDOMΛൺֱ ࠩͷΈ ߋ৽
Ұํੑͷσʔλϑϩʔ • ReactͷVirtualDOMɺrootίϯϙʔωϯτΛ ͱͨ͠πϦʔߏʹͳ͓ͬͯΓɺσʔλ ͔Βࢠʹ͔͠ྲྀΕͳ͍ɻࢠ͔ΒʹྲྀΕͳ ͍ɻʮঢ়ଶʯඞͣrooίϯϙʔωϯτ͕࣋ͭɻ × Rootίϯϙʔωϯτʢঢ়ଶΛ࣋ͭʣ ίϯϙʔωϯτ ʢঢ়ଶΛ࣋ͨͳ͍ʣ
ίϯϙʔωϯτ ʢঢ়ଶΛ࣋ͨͳ͍ʣ Rootίϯϙʔωϯτ ͷอ࣋͢Δʮঢ়ଶʯ ʹΑͬͯͦͷԼʹඥ ͘ίϯϙʔωϯτ ͕͞ΕΔ VirtualDOM
ҰํੑσʔλϑϩʔͷϝϦοτ • σʔλඞ͔ͣΒࢠʹ͔͠ྲྀΕͳ͍ͷͰɺσʔ λͷྲྀΕ͕Ѳ͘͢͠ɺݟ௨͠ͷྑ͍ઃܭͱ ͳΔ • Rootͷঢ়ଶͷΈͰίϯϙʔωϯτશମ ʢVirtualDOMʣͷߋ৽͕Ͱ͖ΔͷͰɺViewͷঢ় ଶཧָ͕ʹͳΔ •
ΞϓϦέʔγϣϯ͕ڊେʹͳͬͯɺഁ͠ ʹ͍͘
Reactɺ͜Μͳײ͡Ͱ͢
Α͘Α͘ݟͯΈΔͱ
ঢ়ଶʹదͨ͠HTMLΛు͖ग़͢
·͞ʹ αʔόʔαΠυͰ͍ͬͯΔ͜ͱͱಉ͡
͜Ε͕ࠓϑϩϯτΤϯυͰى͖͍ͯΔ ύϥμΠϜγϑτͰ͢
React
ͭͮ͘…
αϯϓϧͷ͝հ http://bit.ly/1Ua13pN Moba8.netͷηϧϑόοΫϒοΫϚʔΫػೳ ReactͱFacebook/FluxͰ࣮͍ͯ͠·͢ɻ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ