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
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
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
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
Making the Leap to Tech Lead
cromwellryan
135
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Faster Mobile Websites
deanohume
310
32k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
エンジニアに許された特別な時間の終わり
watany
108
250k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
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