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
220
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
150
モバイルWeb開発最前線 -PWA開発パターン「PRPL」の紹介-
maechabin
0
560
最新フロントエンド事情2016年版
maechabin
1
770
Other Decks in Technology
See All in Technology
小さな開発会社がWebサービスを作る理由
polidog
PRO
0
120
AWS を使う上で知っておきたいオンプレミス知識/aws-on-premise-essentials
emiki
1
4.1k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
3
160
〜小さく始めて大きく育てる〜データ分析基盤の開発から活用まで
kniino
0
1.9k
強みを伸ばすキャリアデザイン
yug1224
0
200
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
110
【SORACOM UG】SIM Deep Dive セキュアエレメント編
soracom
PRO
0
240
人間の尊厳、幸福、アクセシビリティ / 第116回「WEB TOUCH MEETING」アクセシビリティSP
nulabinc
PRO
2
180
0→1開発における技術選定において一番大切なこと
bicstone
1
320
「ふりかえりのふりかえり」をふりかえり、実のあるふりかえりにする
naitosatoshi
0
210
Databricks におけるデータエンジニアリング
databricksjapan
0
370
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
320
Featured
See All Featured
How GitHub (no longer) Works
holman
304
140k
What the flash - Photography Introduction
edds
64
11k
4 Signs Your Business is Dying
shpigford
175
21k
KATA
mclloyd
14
12k
Code Review Best Practice
trishagee
54
15k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Raft: Consensus for Rubyists
vanstee
131
6.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
645
57k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
What's in a price? How to price your products and services
michaelherold
237
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
153
14k
Ruby is Unlike a Banana
tanoku
95
10k
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Ͱ࣮͍ͯ͠·͢ɻ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ