Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Vue.js on Rails / vue-js-on-rails
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiromi Kimura
August 28, 2017
5.1k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vue.js on Rails / vue-js-on-rails
Hiromi Kimura
August 28, 2017
More Decks by Hiromi Kimura
See All by Hiromi Kimura
マネーフォワード Pay for Businessのフロントエンド / Money Forward Pay for Business Frontend
kimromi
0
920
マネーフォワードクラウド経費でのフロントエンドの取り組み / moneyforward-expense-frontend
kimromi
4
1.2k
エンジニアにとってのアウトプットとはなにか考えた / what-is-output
kimromi
3
1.2k
TypeScriptで作るGitHubApps / make GitHub Apps by TypeScript
kimromi
0
680
ムームードメインのJavaScript環境を整えた話 / prepare muumuu-domain's javascript
kimromi
1
620
ぼくがかんがえたさいきょうのぷるりくえすと / saikyo-no-pull-request
kimromi
7
110k
本番環境にVue.jsを使った話 / Use Vue.js at production
kimromi
3
1.5k
how about Marp?
kimromi
0
170
engineer-guideline
kimromi
0
1.1k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
The agentic SEO stack - context over prompts
schlessera
0
910
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Designing for Performance
lara
611
70k
Raft: Consensus for Rubyists
vanstee
141
7.7k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
ラッコキーワード サービス紹介資料
rakko
1
4.8M
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Transcript
ଜւ(.01FQBCP *OD ϖύϘςοΫΧϯϑΝϨϯε 7VFKTPO3BJMT
ೖࣾԬࢧࣾ ଜւ!LJNSPNJ ϗεςΟϯάࣄۀ෦ɹϜʔϜʔυϝΠϯνʔϜΤϯδχΞ IUUQTLJNSPNJHJUIVCJP
ଜւ!LJNSPNJ ϗεςΟϯάࣄۀ෦ɹϜʔϜʔυϝΠϯνʔϜΤϯδχΞ IUUQTLJNSPNJHJUIVCJP ೖࣾԬࢧࣾ
PO
!4FSWFS4JEF3FOEFSJOH !4JOHMF1BHF"QQMJDBUJPO طʹ3BJMTͰαʔϏεӡ༻͍ͯ͠Δ ৽͘͠3BJMTͰαʔϏεΛ࡞Δ !7VFKTͷࡉ͔͍࣮ͷ
ϜʔϜʔυϝΠϯ wυϝΠϯ౷߹αʔϏε w݄ʹϩʔϯνʢࠓͰʣ wʙׂ1)1Ͱͷ࣮ w3VCZPO3BJMTʹগͣͭ͠Ҡߦத wεϚʔτϑΥϯ༻αΠτ3VCZPO3BJMT
IUUQTUFDIQFQBCPDPNNVVNVVTIPQQJOHDBSU
ݱঢ়ͷ3BJMTͷ+BWB4DSJQUڥͷ wK2VFSZΰϦΰϦ wK2VFSZɺੜ+BWB4DSJQUɺ$P⒎FF4DSJQU͕ೖΓཚΕ w୯ମςετͳ͠ʢSTQFDͷGFBUVSFTςετͰͳΜͱ͔ʣ wMJOU͞Ε͍ͯͳ͍
Ͳ͛Μ͔ͤΜͱ͍͔Μ
+BWB4DSJQU ͳΜͱ͔͢Δͧʂ
7VFKTPO3BJMTʂ
8IZ7VFKT wฐࣾαʔϏεͰͷಋೖ࣮͕૿͖͑ͯͨ wάʔϖɺΧϥʔϛʔ wϩϦϙοϓϚωʔδυΫϥυ wϜʔϜʔυϝΠϯͷࣾγεςϜͰಋೖ࣮͕͋Γ͕ࣝ͋ͬͨ wฐࣾΤϯδχΞʹຊޠυΩϡϝϯτ༁ऀ͕͍Δ ʢ!JOPVFUBLVZBɺ!IZQFSNLUʣ wֶशίετ͍
None
7VFKTPO3BJMT Ͳ͏Δ͔ʁ
Γ͍ͨ͜ͱཧ w7VFKTΛ͍͍ͨʂ w୯ମςετΛॻ͖͍ͨʂ wMJOUΓ͍ͨʂ
OQN͔͠ͳ͍ʂ
OQN w/PEFKTͷύοέʔδཧπʔϧ wQBDLBHFKTPOͰ༻͢ΔύοέʔδΛཧ
:BSOͬͨ w3BJMT͔Βਪ͞Ε͍ͯΔ wZBSO·ͨZBSOJOTUBMMίϚϯυͰґଘϥΠϒϥϦΛΠϯετʔϧ wZBSOMPDLϑΝΠϧ͕Ͱ͖Δ wϥΠϒϥϦͷόʔδϣϯΛݻఆͰ͖Δ wϦϙδτϦཧ͢Δ͜ͱͰόʔδϣϯҧ͍ʹΑΔόά͕͓͖ʹ͍͘ɹ wOQNW͔ΒQBDLBHFMPDLKTPOͰόʔδϣϯݻఆͰ͖Δ Α͏ʹͳͬͨɾɾɾ
༨ஊ QBDLBHFKTPOͷTDSJQUTػೳ { "private": true, "scripts": { "show-version": "yarn -V"
} } QBDLBHFKTPO
XFCQBDL
XFCQBDL CBCFM QBDLBHFKTPO { "private": true, "scripts": { "webpack": "webpack"
}, "dependencies": {}, "devDependencies": { "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-preset-es2015": "^6.24.1", "webpack": "^3.5.5" }, "babel": { "presets": ["es2015"] } } w+BWB4DSJQUͷϏϧυπʔϧ wZBSOSVOXFCQBDL wCBCFMͰ&4 &4 ରԠ wઃఆXFCQBDLDPOpHKT
σΟϨΫτϦߏྫ ᵓBQQ ᴹᵋBTTFUT ᴹᵋKBWBTDSJQUT ᴹᵋBQQMJDBUJPOKT ᵓGSPOUFOE ᴹᵓTSD ᴹᴹᵋFOUSZKT ᴹᵓUFTU ᴹᵋXFCQBDLDPOpHKT
ᵓQVCMJD ᴹᵋBTTFUT ᵓʜ ᵓQBDLBHFKTPO ᵋZBSOMPDL wGSPOUFOEʹ·ͱΊΔ w+4։ൃ࣌3BJMTXBZΛҙࣝ͠ͳ͍ ˠ3BJMTͱ+4։ൃΛૄʹͰ͖Δ
Ϗϧυͨ͠ϑΝΠϧΛ Ͳ͜ʹग़ྗ͢Δʁ
4QSPDLFUTͱͲ͏͖߹͏͔
None
4QSPDLFUT w3BJMTͷ+BWB4DSJQUɺ4UZMF4IFFUɺ*NBHFTΛཧ͢Δπʔϧ w"MU+T4BTTͳͲͷίϯύΠϧ wDPODBUɺNJOJGZ wpOHFSQSJOU wग़ྗϑΝΠϧͷTV⒏YʹϋογϡจࣈྻΛ͚ͯ͘ΕΔ w FYBQQMJDBUJPOFGCGEBCGKT wϑΝΠϧʹมߋ͕͋ͬͨͱ͖ͷΈpOHFSQSJOU͕มߋ͞ΕΔ wϒϥβΩϟογϡʹ༗ޮ
4QSPDLFUT͏ʁΘͳ͍ʁ !XFCQBDLͱ4QSPDLFUTͰճϏϧυ͢Δ ӡ༻͍ͯ͠ΔϧʔϧͰͦͷ··։ൃͰ͖Δ ͏ !3BJMTͱ+BWB4DSJQUཧ͕গ͠ີʹͳΔ
4QSPDLFUT͏ʁΘͳ͍ʁ 3BJMTͱ+BWB4DSJQUͷཧ͕ૄʹͳΔ Θͳ͍ !4QSPDLFUT૬ͷػೳΛXFCQBDLͰ༻ҙ͢Δίετ !3BJMTͷ7JFX͔Β+BWB4DSJQUΛಡΈࠐΉͱ͖ʹҰखؒඞཁ ʢ3BJMTXBZʹΕͳ͍ʣ
4QSPDLFUT ͦͷ··͏͜ͱʹͨ͠
ཧ༝ w+BWB4DSJQUεΩϧ3BJMTεΩϧͳνʔϜ wطଘͷ+BWB4DSJQUͨͪͱ৽͘͠࡞ΔͷͷཧΛผʹͨ͘͠ͳ͍ w3BJMTͷϧʔϧ͕มΘͬͯ+4ग़ྗઌΛม͑ΕͳΜͱ͔ͳΔ wແཧ͗͢͠ͳ͍
σΟϨΫτϦߏ ࠶ܝ ᵓBQQ ᴹᵋBTTFUT ᴹᵋKBWBTDSJQUT ᴹᵋBQQMJDBUJPOKT ᵓGSPOUFOE ᴹᵓTSD ᴹᴹᵋFOUSZKT ᴹᵓUFTU
ᴹᵋXFCQBDLDPOpHKT ᵓQVCMJD ᴹᵋBTTFUT ᵓʜ ᵓQBDLBHFKTPO ᵋZBSOMPDL wGSPOUFOEʹ·ͱΊΔ w։ൃ࣌3BJMTXBZΛҙࣝ͠ͳ͍ ˠ3BJMTͱ+4։ൃΛૄʹͰ͖Δ
XFCQBDLϏϧυ ᵓBQQ ᴹᵋBTTFUT ᴹᵋKBWBTDSJQUT ᴹᵋBQQMJDBUJPOKT ᴹᵋCVOEMFKT ᵓGSPOUFOE ᴹᵓTSD ᴹᴹᵋFOUSZKT ᴹᵓUFTU
ᴹᵋXFCQBDLDPOpHKT ᵓQVCMJD ᴹᵋBTTFUT ᵓʜ ᵓQBDLBHFKTPO ᵋZBSOMPDL wϏϧυͯ͠ΞηοτରσΟϨΫτϦ ʹग़ྗ CVOEMFKT wCVOEMFKTHJUJHOPSF w։ൃ࣌GPSFNBOͬͯ SBJMTTFSWFSͱXFCQBDLXBUDIΛ ಉ࣌ʹىಈ
4QSPDLFUTʢBTTFUTQSFDPNQJMFʣ ᵓBQQ ᴹᵋBTTFUT ᴹᵋKBWBTDSJQUT ᴹᵋBQQMJDBUJPOKT ᴹᵋCVOEMFKT ᵓGSPOUFOE ᴹᵓTSD ᴹᴹᵋFOUSZKT ᴹᵓUFTU
ᴹᵋXFCQBDLDPOpHKT ᵓQVCMJD ᴹᵋBTTFUT ᴹᵋBQQMJDBUJPOFGCGEBCGKT ᵓʜ ᵓQBDLBHFKTPO ᵋZBSOMPDL wCVOEMFKTͷ༰ؚ͕·Εͨঢ়ଶͰ QVCMJDBTTFUTʹग़ྗ wpOHFUQSJOU͕ͭ͘
ͪΐͬͱ͚ͩෳࡶʂ
։ൃ࣌+4ͱ3BJMTΛૄʹ ຊ൪ద༻࣌3BJMTXBZʹͷΔ
ͯ͞
7VFKT ॻ͖·͔͢
͜͜·Ͱ͘Ε wGSPOUFOEʹΓग़͍ͯ͠ΔͷͰΨϯΨϯॻ͚Δ w41"Ͱͳͯ͘ಋೖͰ͖Δ w)5.-3BJMTͷ7JFXΛͦͷ··͏ wσβΠφʔͱฒߦ࡞ۀ͍͢͠ wK2VFSZͷΘΓͷ7VFKT $PNQPOFOUͳ͠ Ͱςετॻ͚Δ wͪΖΜ41"Ͱ0,
7VFΠϯελϯεͷ୯ମςετ
"7" wIUUQTHJUIVCDPNBWBKTBWB ⭐PWFS w,BSNB KBTNJOFࢼ͕ͨ͠"7"ͷ΄͏͕ઃఆ͕γϯϓϧ wฒྻͰςετͳͷͰૣ͍ w7VFΠϯελϯεͷςετՄೳ w$PNQPOFOU WVF
Λ͏ͷͰ͋Ε"WPSJB[͕ศརͦ͏ 7VFίϯϙʔωϯτͷϢχοτςετ IUUQTTQFBLFSEFDLDPNIZQFSNLUWVFLPOQPOFOUPGBMTFZVOJUVUPUFTVUP
࣮ྫ GSPOUFOETSDFOUSZKT import Vue from 'vue'; export default new Vue({
el: '#vue-hello', data: { message: 'hello' }, methods: { shout: function () { this.message = 'hello!!!!!!!!!!'; } } });
୯ମςετྫ GSPOUFOETSDFOUSZKT GSPOUFOEUFTUFOUSZUFTUKT import test from 'ava'; import entry from
'../src/entry'; test('entry vue instance', t => { t.is(typeof entry, 'object'); t.is(entry.$data.message, 'hello'); }); test('entry#shout', t => { entry.shout(); t.is(entry.$data.message, 'hello!!!!!!!!!!'); });
7VFKTΑ͍ʂ
·ͱΊ w։ൃ࣌3BJMTͱ+BWB4DSJQUΛૄʹ։ൃ w୯ମςετɺMJOU wແཧͤͣ3BJMTXBZʹ͏·͘ͷͤΔ w7VFΠϯελϯεͷςετॻ͚Δ
7VFKTPO3BJMTͩʂ
XFCQBDLFSHFNͲ͏ͳͷʁ
࠙ձͰ͓͠·͠ΐ͏ʂ
ԬͰҰॹʹ7VFKTॻ͖·͠ΐ͏ʂʂ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU