Vue.js 3 に向けた Vue.js 入門
by
kazupon
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Vue.js 3 ʹ͚ͨ Vue.js ೖ Microsoft Ignite The Tour 2019.12.06 @kazupon
Slide 2
Slide 2 text
ࣗݾհ
Slide 3
Slide 3 text
PLAID, inc. Vue.js Core Team Member Vue.js Japan User Group Organizer Vue I18n Author WebAssembly Love ❤ @kazu_pon kazupon kazupon
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
͡Ίʹ
Slide 6
Slide 6 text
201910݄
Slide 7
Slide 7 text
Vue.js 3 pre-alpha ެ։ʂ https://twitter.com/vuejs/status/1180159603507638274
Slide 8
Slide 8 text
vuejs/vue-next Ͱެ։ https://github.com/vuejs/vue-next
Slide 9
Slide 9 text
2020Q1ʹ͚ͯ։ൃத • RFCͰ༷ΛݻΊͭͭ։ൃ https://github.com/vuejs/rfcs
Slide 10
Slide 10 text
Vue.js 3 Ͱͷ৽ػೳ • ίϯϙδγϣϯ API • ϑϥάϝϯτ / ϙʔλϧ • TypeScript ϑϧαϙʔτ • … ͳͲͳͲ https://github.com/vuejs/rfcs
Slide 11
Slide 11 text
v2 → v3
Slide 12
Slide 12 text
͍Ζ͍Ζͱ ػೳ͕૿͑ͯ
Slide 13
Slide 13 text
ഁյతมߋ ͋Δͱ
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
͜ͷ࣌ظʹೖ ͢Δͱେมͦ͏…
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
ͦ͏ ݟ͑ͦ͏Ͱ͕͢
Slide 18
Slide 18 text
৺͠ͳͯ͘ େৎͰ͢ʂ
Slide 19
Slide 19 text
ओཁػೳ
Slide 20
Slide 20 text
΄΅ͦͷ··Ͱ
Slide 21
Slide 21 text
ಈ͖·͢ʂ
Slide 22
Slide 22 text
ͱ͍͏Θ͚Ͱ
Slide 23
Slide 23 text
ࠓ͢͜ͱ
Slide 24
Slide 24 text
• Vue.js ͷಛͱઃܭࢥ • Vue.js 3 Ͱ௨༻͢Δߏจɾػೳͷհ • ࠷৽҆ఆόʔδϣϯ v2.6.10 Ͱઆ໌ • Vue.js 3 ͷۄػೳ ίϯϙδγϣϯAPIʹ ͍ͭͯܰ͘հ ࠓ͢͜ͱ
Slide 25
Slide 25 text
Vue.js ʹ͍ͭͯ
Slide 26
Slide 26 text
Vue.js • ࡞ऀ: Evan You • viewͷϥΠϒϥϦ • 2013ݸਓϓϩ δΣΫτͱͯ͠։࢝ • 20142݄ʹv0.8ެ ࣜϦϦʔε
Slide 27
Slide 27 text
2015.04.20 Laravel Ͱ࠾༻ܾఆ 2015.10.26 v1.0 Evangelion 2016.10.01 v2.0 Ghost in the Shell 2019.02.05 v2.6 Macross 2019.12.06 ݱࡏ ࠷৽: v2.6.10 ྺ࢙
Slide 28
Slide 28 text
• ߴͳٕज़εΩϧ͕ແͯ͑͘Δ • ίϯϙʔωϯτࢦʹΑΔUIߏԽ • ϦΞΫςΟϒͳσʔλόΠϯσΟϯά ಛ
Slide 29
Slide 29 text
• HTML / JavaScript / CSS ͷجຊ͕ࣝ͋ Ε͙͢ʹ͑Δ • index.html ͷ script λά͔Β͏͜ͱ͕Ͱ ͖Δ ߴͳٕज़εΩϧ͕ͳͯ͑͘Δ
Slide 30
Slide 30 text
• ίϯϙʔωϯτͱ͍͏෦ΛΈཱͯͯɺ UI ΛΈͨͯΔ ίϯϙʔωϯτࢦʹΑΔUIߏԽ
Slide 31
Slide 31 text
• DOM ্ͷσʔλͱJavaScript͕࣋ͭσʔλ ؒͰόΠϯυͯ͠ಉظΛऔΔ͜ͱ͕Ͱ͖Δ ϦΞΫςΟϒͳσʔλόΠϯσΟϯά
Slide 32
Slide 32 text
ϑϨʔϜϫʔΫ ͱͯ͠ͷ ઃܭࢥ
Slide 33
Slide 33 text
ϓϩάϨογϒ ϑϨʔϜϫʔΫ
Slide 34
Slide 34 text
VS ϑϨʔϜϫʔΫͷෳࡶ͞ ΞϓϦέʔγϣϯͷෳࡶ͞
Slide 35
Slide 35 text
ෆेͳέʔε
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
ෆेͳέʔε ͷ ൺᄻ
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
Φʔόʔͳέʔε
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
Φʔόʔͳέʔε ͷ ൺᄻ
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
ϑϨʔϜϫʔΫͷෳࡶੑ ΞϓϦέʔγϣϯͷෳࡶੑʹରͯ͠ ेͳίετΛPayͰ͖ΔͷͰͳ͚ΕͳΒͳ͍
Slide 44
Slide 44 text
͔͠͠ͳ͕Β ࣮ࡍͷݱ…
Slide 45
Slide 45 text
Ϗδωεཁ݅ ઈ͑ͣม͢Δ
Slide 46
Slide 46 text
ϑϨʔϜϫʔΫ ͜ΕʹରԠͰ͖ͳ͚Ε ͳΒͳ͍
Slide 47
Slide 47 text
͜Μͳײ͡Ͱελʔτͯ͠ viewίΞ
Slide 48
Slide 48 text
ن͕େ͖͘ͳ͖ͬͯͨͱ͖ viewίΞ ʴ ϧʔςΟϯάɺঢ়ଶཧ ͕ඞཁʂ
Slide 49
Slide 49 text
αϙʔτͰ͖Δ ϥΠϒϥϦͳ͚Ε…
Slide 50
Slide 50 text
ϑϩϯτΤϯυ։ൃ ਏ͍…
Slide 51
Slide 51 text
ϓϩάϨογϒ ϑϨʔϜϫʔΫ
Slide 52
Slide 52 text
http://ejje.weblio.jp/content/progressive
Slide 53
Slide 53 text
ΞϓϦέʔγϣϯͷ ஈ֊తͳมԽཁٻʹԠͯ͡ ղܾͰ͖Δํ๏Λఏڙ͢Δ
Slide 54
Slide 54 text
Vue.jsຊମ Vue Router Vuex Vue CLI
Slide 55
Slide 55 text
Vue.jsͰ WebΞϓϦΛ ࡞ͬͯΈΔ
Slide 56
Slide 56 text
• Vue ΠϯελϯεΛ࡞ • UIදࣔʹඞཁͳσʔλ(ঢ়ଶ)Λఆٛ • ςϯϓϨʔτͰ UI Λએݴ • Vue ΠϯελϯεΛDOM ʹϚϯτ WebΞϓϦΛ࡞ΔྲྀΕ
Slide 57
Slide 57 text
ϝοηʔδΛ දࣔͤ͞ΔΞϓϦ
Slide 58
Slide 58 text
• Vue ίϯετϥΫλ Ͱ new ͢Δ VueΠϯελϯεΛ࡞
Slide 59
Slide 59 text
• data ΦϓγϣϯʹσʔλΛఆٛ UIදࣔʹඞཁͳσʔλΛఆٛ
Slide 60
Slide 60 text
• template Φϓγϣϯʹ HTML Λهड़ ςϯϓϨʔτʹUIΛએݴ
Slide 61
Slide 61 text
• $mount ϝιουͰର DOM ʹϚϯτ VueΠϯελϯεΛDOMʹϚϯτ
Slide 62
Slide 62 text
࣮ߦ͢Δͱ…
Slide 63
Slide 63 text
͍͔͕Ͱͨ͠Ͱ ͠ΐ͏͔ʁ
Slide 64
Slide 64 text
ςϯϓϨʔτ ߏจ
Slide 65
Slide 65 text
• ΠϯλʔϙϨʔγϣϯ (Interpolation) • σΟϨΫςΟϒ (Directive) ςϯϓϨʔτߏจ
Slide 66
Slide 66 text
ΠϯλʔϙϨʔγϣϯ ʹ͍ͭͯ
Slide 67
Slide 67 text
• ϓϩάϥϜʹ͓͍ͯɺ͋ΔมͱҰॹʹ ߏ͞Εͨσʔλʹ͓͍ͯɺίϯύΠϧ ࣌ɺ·࣮ͨߦ࣌ʹม͕ల։͞ΕΔ͜ͱ • ྫ: JavaScript ςϯϓϨʔτϦςϥϧ ΠϯλʔϙϨʔγϣϯͱʁ
Slide 68
Slide 68 text
• JavaScript Ҏ֎ʹςϯϓϨʔτଘࡏ͢Δ • ςϯϓϨʔτͰҎԼΛαϙʔτ • ςΩετ • HTMLͷଐੑ • JavaScript ͷࣜ Vue.jsʹ͓͚ΔΠϯλʔϙϨʔγϣϯͱʁ
Slide 69
Slide 69 text
σΟϨΫςΟϒ ʹ͍ͭͯ
Slide 70
Slide 70 text
• ϓϩάϥϛϯάݴޠɺιϑτΣΞͷจ຺ ʹ͓͍ͯɺ໋ྩίϚϯυΛ࣮ߦ͢Δͨ Ίʹࢦࣔߏจ • ྫ: nginx (Webαʔό)ͷઃఆϑΝΠϧ σΟϨΫςΟϒͱʁ
Slide 71
Slide 71 text
• ςϯϓϨʔτʹ͓͍ͯɺWebඪ४༷ʹͳ͍ಛผͳ໋ྩΛ༩ ͑ΔͨΊͷߏจ • v-if / v-show: ཁૉͷදࣔɾඇදࣔͷͨΊͷ݅ఆ • v-for: ཁૉʹର͢Δ܁Γฦ͠ॲཧ • v-bind: ཁૉʹର͢ΔσʔλͷόΠϯυ(ଋറ) • v-on: ཁૉͷΠϕϯτϋϯυϦϯά • v-model: ೖྗडՄೳͳཁૉͱσʔλؒํʹόΠϯυ Vue.jsʹ͓͚ΔσΟϨΫςΟϒͱʁ
Slide 72
Slide 72 text
• v-if • v-show v-if / v-show
Slide 73
Slide 73 text
v-for
Slide 74
Slide 74 text
v-bind
Slide 75
Slide 75 text
v-on
Slide 76
Slide 76 text
v-model
Slide 77
Slide 77 text
• v-slot • v-text • v-once • v-pre • v-cloak ͦͷଞͷσΟϨΫςΟϒ
Slide 78
Slide 78 text
ࢉग़ϓϩύςΟ
Slide 79
Slide 79 text
• Ұൠతʹɺఆٛ͞Εͨσʔλ(ঢ়ଶ)ͷ ΛݩʹɺͦΕΒσʔλͷࢉग़͞Εͨσʔλ ͷ͜ͱ ྫ: JavaScript ͷ getter ࢉग़ϓϩύςΟͱʁ
Slide 80
Slide 80 text
• ͨͩ୯ʹܭࢉ ͯ͠ฦ͢σʔ λ͚ͩͰͳ ͘ɺσʔλͷ ͷมߋΛಈ తʹݕͯ͠ දࣔʹөͰ ͖ΔΑ͏ʹ͠ ͍ͯΔ Vue.jsʹ͓͚Δࢉग़ϓϩύςΟͱʁ
Slide 81
Slide 81 text
• ςϯϓϨʔτʹΠϯλʔϙϨʔγϣϯ͕ෳ ࡶʹͳ͖ͬͯͨͱ͖ ࢉग़ϓϩύςΟͷϢʔεέʔε ࢉग़ϓϩύςΟ ෦ͰΩϟογϡ͢ΔͷͰ ύϑΥʔϚϯε্͢Δʂ
Slide 82
Slide 82 text
Υονϟ
Slide 83
Slide 83 text
• Vue.jsͰఆٛ͞ΕͨσʔλΛࢹͯ͠ɺม ߋ௨Λఏڙ͢Δ Υονϟͱʁ
Slide 84
Slide 84 text
• ࢉग़ϓϩύ ςΟɺ Υονϟ ͰػೳΛఏ ڙ͍ͯ͠Δ Υονϟͱʁ
Slide 85
Slide 85 text
ΥονϟΛͬͨίʔυྫ
Slide 86
Slide 86 text
• ࢉग़ϓϩύςΟͷܭࢉෛՙ͕ߴ͍ • ྫ: ڊେͳσʔλ͔Βࢉग़͢Δ͕ຖճҟͳͬ ͯ͠·͏ • ࢉग़ϓϩύςΟͰͰ͖ͳ͍͜ͱΛΓ͍ͨͱ͖ • ྫ: αʔό͔Βඇಉظʹऔಘͨ͠σʔλΛݩʹ ࢉग़͍͍ͯͨ͠ͱ͖ ΥονϟͷϢʔεέʔε
Slide 87
Slide 87 text
ίϯϙʔωϯτ
Slide 88
Slide 88 text
• ҰൠతͳιϑτΣΞͷ จ຺ʹ͓͍ͯɺϓϩά ϥϜΛ࠶ར༻ʹ͢ΔͨΊ Ϟδϡʔϧͱͯ͠෦Խ ͞Εͨͷ • ϒϩοΫͷΑ͏ʹίϯ ϙʔωϯτΛΈཱͯͯ ߏ͍ͯ͘͠ ίϯϙʔωϯτͱʁ
Slide 89
Slide 89 text
• UI Λػೳใߏ ʹैͬͯϞδϡʔ ϧԽͨ͠ͷ • ίϯϙʔωϯτΛ Έ߹ΘΔ͜ͱͰ ࣗવͱπϦʔ্ʹ ߏ͞ΕΔ Vue.jsʹ͓͚Δίϯϙʔωϯτͱʁ
Slide 90
Slide 90 text
Vue.jsಠࣗͷίϯϙʔωϯτ֓೦ • ୯ҰϑΝΠϧί ϯϙʔωϯτ (Single-file components) • Vue ίϯϙʔω ϯτͱݺͿ͜ ͱ {CSS} ({JS})
Slide 91
Slide 91 text
• ଞͷίϯϙʔωϯτͱΓऔΓ͢ΔͨΊʹ ΠϯλʔϑΣʔεΛఏڙ͢Δ • ϓϩύςΟ (props) • Πϕϯτ (emits) • εϩοτ (slots) ίϯϙʔωϯτI/FΛఏڙ͢Δ
Slide 92
Slide 92 text
ϓϩύςΟ(Props) • ଞͷίϯϙʔωϯτ͔ΒσʔλΛड͚औΔ ͨΊͷΠϯλʔϑΣʔε Child ίϯϙʔωϯτ Parent ίϯϙʔωϯτ Props ܦ༝Ͱ͢
Slide 93
Slide 93 text
Πϕϯτ (emits) • ίϯϙʔωϯτΛ͏ଆ()ʹσʔλΛ ͨ͢ΊͷΠϯλʔϑΣʔε Child ίϯϙʔωϯτ Parent ίϯϙʔωϯτ $emitͰ Πϕϯτ Λൃߦ
Slide 94
Slide 94 text
εϩοτ (slots) • ίϯϙʔωϯτʹ͏ଆ()͔Βίϯςϯ πΛࠩ͠ࠐ·ͤΔͨΊͷΠϯλʔϑΣʔε Child ίϯϙʔωϯτ Parent ίϯϙʔωϯτ ʹ ࠩ͠ࠐ·ΕΔ
Slide 95
Slide 95 text
ίϯϙʔωϯτؒσʔλͷΓऔΓͷϧʔϧ • σʔλ͕ྲྀΕΔํΛنΛઃ͚Δ͜ͱͰ ෳࡶʹͳΔͷΛආ͚Δ
Slide 96
Slide 96 text
ଞʹ৭ʑ ͋Γ·͕͢
Slide 97
Slide 97 text
͜ͷล͓͑ͯ͞ ͓͍͍ͯͩ͘͞ʂ
Slide 98
Slide 98 text
Vue.js 3 ίϯϙδγϣϯ API
Slide 99
Slide 99 text
ίϯϙδγϣϯAPIͱʁ • ؔϕʔεͰఏڙ͞ΕΔ API • ίϯϙʔωϯτΛϩδοΫΛࣗ༝ߴ͘ Έ߹Θ࣮ͤ͢Δ͜ͱ͕Ͱ͖Δ
Slide 100
Slide 100 text
ੜ·Εͨഎܠ • Vue.js Ͱେن։ൃͰ͖Δ͕͕͋ͬͨ • ίϯϙʔωϯτ͕େ͖͘ͳΔͱίʔυ͕ಡ Έʹ͘͘ͳΔ • ίʔυ࠶ར༻ͷύλʔϯԽ͠ʹ͍͘ • TypeScript ʹΑΔܕͷαϙʔτ͕ड͚ʹ͘ ͍
Slide 101
Slide 101 text
ίϯϙδγϣϯAPIΛ͏ͱ… • ίϯϙʔωϯτ ͷϩδοΫ͕៉ ྷʹͳΓɺ Λղܾ͢Δʂ
Slide 102
Slide 102 text
ྫ: ΧϯτΞοϓ
Slide 103
Slide 103 text
ৄࡉ͕ؾʹͳΔํRFCΛ͝ཡ͍ͩ͘͞ʂ • υΩϡϝϯτ https://vue-composition-api-rfc.netlify.com/
Slide 104
Slide 104 text
Vue.js v2 Ͱ͓ࢼ͠Ͱ͑Δ • vuejs/composition-api https://github.com/vuejs/composition-api
Slide 105
Slide 105 text
ऴΘΓʹ
Slide 106
Slide 106 text
• ͖ͨΔ Vue.js 3 ʹ͚ͯ • Vue.js ͷಛͱઃܭࢥ • Vue.js 3 Ͱ௨༻͢Δߏจɾػೳ • Vue.js 3 ͷۄػೳ ίϯϙδγϣϯAPI ࠓͨ͜͠ͱ
Slide 107
Slide 107 text
• ΦϯϥΠϯ: Vue.js ެࣜυΩϡϝϯτ https://jp.vuejs.org • ॻ੶: Vue.js ೖ (ٕज़ධࣾ) ͞Βʹ Vue.js ೖ͍ͯ͘͠ʹʁ
Slide 108
Slide 108 text
࠷ޙʹ
Slide 109
Slide 109 text
ίϛϡχςΟʹࢀՃ͠Α͏ʂ • Vue.jsຊϢʔβʔάϧʔϓӡӦ • Slack https://vuejs-jp-slackin.herokuapp.com • VuejsຊޠެࣜαΠτܦ༝ͰδϣΠϯͰ͖·͢ http://jp.vuejs.org • Vue.js Meetup (connpass) https://vuejs-meetup.connpass.com
Slide 110
Slide 110 text
དྷ 2/1 ʹ Vue.js 3 ʹ͍ͭͯ͠·͢ • 2020-02-01 PWA Night CONFERENCE 2020 https://conf2020.pwanight.jp/
Slide 111
Slide 111 text
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ