Share
Embed
15分でわかった気になるVite / Explain Vite in 15 minutes
慶島亜門(LINE Growth Technology UIT1チーム)
UIT Meetup vol. 13 『知っておきたいFront-end Toolingの今』
での登壇資料です
https://uit.connpass.com/event/216043/
LINE Developers
July 07, 2021
Transcript
28 slides
-
IUUQTWJUFKTEFWΛϕʔεʹ Ұ෦ਂງΓͭͭ͠ Ͱ7JUFΛΘ͔ͬͨؾʹͤͪ͞Ό͓͏ あ " そ " ゆ " こ
と ね 完 全 に 理 解 し た ※この発表が終わった後の みなさんのイメージ -
։ൃ࣌αʔόʔ ຊ൪Ϗϧυ࣌όϯυϥʔͱͯ͠ಈ͘ ಛ 7JUFͬͯͳʹ ։ൃ࣌ʹ FTCVJME Λ༻ͯ͠ߴʹґଘύοέʔδΛϏϧυ ϒϥβͷ&4.PEVMFରԠΛ͏·͘ར༻ͨ͠ߴͳ։ൃମݧ &4.PEVMF &4.PEVMF
EZOBNJDJNQPSUରԠϒϥβ͕λʔήοτ !WJUFKTQMVHJOMFHBDZΛ͏͜ͱͰɺϨΨγʔϒϥβ͚ͷαϙʔτͰ͖Δ ʢ7JUFࣗମͰ*&ͷαϙʔτߦ͑ΔͬΆ͍͕ɺ7VF*&Λαϙʔτ͠ͳ͍ʹҙʣ 7VFҎ֎ͷϑϩϯτΤϯυϥΠϒϥϦʹରԠ 3FBDU1SFBDU -JU&MFNFOU7BOJMMB+4ʹରԠ͍ͯ͠Δ -
%FQFOEFODZ1SFCVOEMJOH 7JUFԿΛ͍ͯ͠Δͷ ͱ͍͏Α͏ͳίʔυ͕͋Εɺ OPEF@NPEVMFTWJUF ͷԼʹ FTCVJME ͰϏϧυͨ͠ϑΝΠϧΛஔ͍ͯɺͦΕΛࢀরͤ͞Δػೳ ͜ͷͱ͖ $PNNPO+4 6.%ˠ
&4.ͷมඞཁʹԠͯ͡ߦ͏ ˞ग़యɿIUUQTFTCVJMEHJUIVCJP import { chunk } from 'lodash-es'; ˞ग़యɿ IUUQTWJUFKTEFWHVJEFEFQQSFCVOEMJOHIUNM -
#BSFNPEVMFJNQPSUΛॻ͖͑Δ 7JUFԿΛ͍ͯ͠Δͷ ϒϥβ্Ͱ &4.PEVMF ͷ JNQPSUΛߦ͍ͬͯ͘ 7JUF Λͬͨ։ൃڥͰ import Vue
from 'vue'; ͱ͍ͬͨίʔυͰ 7VFΛਖ਼͘͠ղܾ͢Δ͜ͱ͕Ͱ͖ͳ͍ ͦͷͨΊ 7JUF Ͱ import Vue from ‘/node_modules/.vite/vue.js?v=f3sf2ebd'; ͷΑ͏ͳܗͱॻ͖͑ͯ͘ΕΔ max-age=31536000,immutable ͰڧྗʹΩϟογϡ͠·͢ ˞ग़యɿ IUUQTWJUFKTEFWHVJEFGFBUVSFTIUNM -
)PU.PEVMF3FMPBE ).3 7JUFԿ͕Ͱ͖Δͷ 7VF4'$ͷαϙʔτͱ 3FBDU'BTU3FGSFTIͷαϙʔτΛϑΝʔετύʔςΟͰߦ͍ͬͯΔ 1SFBDU αʔυύʔςΟͷ !QSFGSFTIWJUF Ͱαϙʔτ͍ͯ͠Δ ͱ͍͍ͭͭʜ
OQN JOJU !WJUFKTBQQͰ࡞ΒΕͯͨ 7VF3FBDU1SFBDU 4WFMUFϓϩδΣΫτʹ͍ͭͯ ࠷ॳ͔Β).3͕αϙʔτ͞Εͨঢ়ଶͰ։ൃΛ࢝ΊΔ͜ͱ͕Ͱ͖Δ IUUQTHJUIVCDPNWJUFKTWJUFUSFFNBJOQBDLBHFTDSFBUFBQQ Λݟͨײ͡ MJUFMFNFOUͱ WBOJMMBະରԠ ˞ग़యɿ IUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMIPUNPEVMFSFQMBDFNFOU -
5ZQF4DSJQUͷτϥϯεύΠϧ 7JUFԿ͕Ͱ͖Δͷ 5ZQF4DSJQU࠷ॳ͔ΒରԠࡁΈɻͨͩ͠ɺܕνΣοΫΛߦΘͣτϥϯεύΠϧ͚ͩߦ͏ɻ ΈΜͳ74$PEFͳΓɺ*OUFMMJ+ͳΓɺΤσΟλ͕ࣗ54ͷܕνΣοΫͰ͖ΔڥͰॻ͍ͯΔΑͶʁ ͱ͍͏͜ͱͬΆ͍ FTCVJME ͕ 54ͷτϥϯεύΠϧΛߦ͏͕ɺUTD ʹൺͯഒ͍Β͍͠ ҰԠ͋ͬͯɺDPOTUFOVN
ͱ͔ JNQMJDJUUZQFPOMZJNQPSUT͑ͳ͍ͱ͍ͯ͠Δ Λ͢Δ͜ͱΛਪ͞Ε͍ͯΔ λʔϛφϧ$*ڥͳͲͰܕνΣοΫ௨Βͳ͔ͬͨΒΤϥʔʹ͢Δʜͱ͔Γ͚ͨΕ Λ͑0, tsc --noEmit // or vue-tsc --noEmit ˞WVFUTD ʹ͍ͭͯ࠷ޙʹ৮Ε·͢ compilerOptions.isolatedModules = true ˞ग़యɿ IUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMUZQFTDSJQU -
7VFͷαϙʔτ 7JUFԿ͕Ͱ͖Δͷ 7VF 7JUF ͕ެࣜαϙʔτ͍ͯ͠Δ 4'$+49ڞʹ 7VF VOEFSGJOWJUFQMVHJOWVFΛ͏͜ͱͰ 7JUF Λར༻Մೳ
).3͋ΔΑ ˞ग़యɿIUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMWVF -
$44$PEF4QMJUUJOH #VJMEͷ࠷దԽ 7JUFԿ͕Ͱ͖Δͷ '06$ 'MBTIPGVOTUZMFE DPOUFOU Λ͙ͨΊɺEZOBNJDJNQPSUͰಡΈࠐΉ DIVOL͕ Ճͷ DTT
Λ ಡΈࠐΉ߹ɺઌʹ $44ͷ MPBE͕ऴΘ͔ͬͯΒ DIVOLΛಡΉΑ͏ʹͯ͘͠ΕΔ ˞ग़యɿIUUQTHJUIVCDPNWJUFKTWJUFCMPCNBJOQBDLBHFTWJUFTSDOPEFQMVHJOTJNQPSU"OBMZTJT#VJMEUT- IUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMDTTDPEFTQMJUUJOH const e = await h( (() => import("./lib-a.5453f0dd.js")), [ "/assets/lib-a.5453f0dd.js", "/assets/common.16805b00.js", "/assets/common.3313c481.css” ] ) ˢ Ϗϧυ͞ΕͨίʔυͷҰ෦ -
1SFMPBE%JSFDUJWFT(FOFSBUJPO #VJMEͷ࠷దԽ 7JUFԿ͕Ͱ͖Δͷ ॳظಡΈࠐΈ࣌ʹඞཁʹͳΔDIVOLʹରͯ͠ MJOLSFMlQSFMPBEzλάΛIUNMʹຒΊࠐΜͰ͘ΕΔ <html lang="en"> <head> <link rel="icon"
href="/favicon.ico" /> <title>Vite App</title> <script type="module" crossorigin src="/assets/index.dc67d65e.js"></script> <link rel="modulepreload" href="/assets/vendor.0b16fac1.js"> <link rel="stylesheet" href="/assets/index.4ace5166.css"> </head> <body> <div id="app"></div> </body> </html> ˞ग़యɿIUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMQSFMPBEEJSFDUJWFTHFOFSBUJPO -
"TZOD$IVOL-PBEJOH0QUJNJ[BUJPO #VJMEͷ࠷దԽ 7JUFԿ͕Ͱ͖Δͷ %ZOBNJDJNQPSUͰ JNQPSUͨ͠ ෳͷ DIVOL͔Β ͞Βʹڞ௨ͷ DIVOLʹରͯ͠ EJSFDUJNQPSUΛ͢Δέʔε
$PNNPODIVOL$ $IVOL" %ZOBNJDJNQPSU &OUSZ $IVOL# %JSFDUJNQPSU ͜ͷέʔεͰɺΑΓޮͷ͍͍νϟϯΫͷऔΓํΛ͢ΔΑ͏ʹίʔυΛ࠷దԽ͠·͢ ˞ग़యɿIUUQTWJUFKTEFWHVJEFGFBUVSFTIUNMBTZODDIVOLMPBEJOHPQUJNJ[BUJPO -
3PMMVQ༻ͷ1MVHJOΛαϙʔτ 1MVHJO 7JUFԿ͕Ͱ͖Δͷ 7JUF ʹ SPMMVQΛϕʔεʹͨ͠ϓϥάΠϯγεςϜ͕ଘࡏ͢Δɻ Ұൠతͳ 8FC։ൃͷ߹ 7JUF Ͱଟ͘ͷϢʔεέʔεΛΧόʔͰ͖Δ͜ͱ͔Β
ϓϥάΠϯ͢Βඞཁͳ͍Αͱͭͭ͠ɺ3PMMVQ༻ͷ QMVHJOΛ͏͜ͱͰ͖Δ ˞ग़యɿIUUQTWJUFKTEFWHVJEFVTJOHQMVHJOTIUNM !SPMMVQQMVHJOFTMJOU ΛೖΕͯΈͨྫ -
-JCSBSZ.PEFΛͬͨϥΠϒϥϦ࡞ͷαϙʔτ 7JUFԿ͕Ͱ͖Δͷ ϥΠϒϥϦΛ࡞Δͱ͖7JUFศར JOEFYIUNM ͱ͔ͷ TSD σΟϨΫτϦ EFNP ϥΠϒϥϦ։ൃͷڥͱ͓͍ͯ࣋ͬͯͯ͠ OQN
SVOCVJME͢Δͱ ϥΠϒϥϦͷίʔυ͚͕ͩ EJTU ʹు͖ग़͞ΕΔ ˞ग़యɿIUUQTWJUFKTEFWHVJEFCVJMEIUNMMJCSBSZNPEF -
4OPXQBDL ଞͷόϯυϥʔͱൺͯ ʮ&4.PEVMF ͕ϕʔεʹ͋Δʯ ʮ։ൃதόϯυϧ͠ͳ͍ͷΛ TFSWF͢ΔʯΈ͍ͨͳɺํੑࣅ͍ͯΔͬΆ͍ 7JUFT EFQFOEFODZQSFCVOEMJOHJTBMTPJOTQJSFECZ4OPXQBDLW ͱ͋ΔΑ͏ʹɺӨڹΛड͚͍ͯΔ෦͋ΔΑ͏ͩ ͍ΖΜͳόϯυϥʔͱʮ͘ઙ͘ʯͱ͍ͬͨҹͷ4OPXQBDLʹൺͯ
7JUF 3PMMVQͱΨοπϦ JOUFHSBUFE͞Ε͍ͯΔͷͰɺΕΔ͜ͱ͕ଟ͍ͱݴΘΕ͍ͯΔ ʢݸਓతʹ 'JSTUDMBTTͷ 7VF αϙʔτ͕σΧ͍ͱࢥͬͯ·͢ʂʣ ʢ͜ͷ͋ͱͷࡾ͞Μͷൃද 6*5*OTJEFͰ 4OPXQBDLʹ͍ͭͯ৮Ε͍ͯΔͷͰΑ͔ͬͨΒʜʣ ˞ग़యɿIUUQTWJUFKTEFWHVJEFDPNQBSJTPOTIUNM -
XFCQBDL ଞͷόϯυϥʔͱൺͯ XFCQBDLͱൺΔͱͦͦͷ࡞Γ͕ҧ͏ XFCQBDLόϯυϧΛ࡞͔ͬͯΒ TFSWFSSFBEZʹͳΔ ରͯ͠ʜ 7JUF ·ͣ TFSWFSSFBEZʹͳΔɻ &4.PEVMF
ͷ EZOBNJDJNQPSUΛར༻͢Δ͜ͱͰ େ͖ͳόϯυϧΛ࡞Βͳͯ͘ࡁΉ͔Β͍ɻ FTCVJME ͷύϫʔआΓΔ͜ͱͰɺ&4.PEVMF ͷϏϧυ͍ɻ ˞ग़యɿIUUQTWJUFKTEFWHVJEFXIZIUNMTMPXTFSWFSTUBSU -
ຊจλΠτϧ ຊ൪͚ʹόϯυϧ࡞ͬͯΔͷʁ&4.PEVMFΘͳ͍ͷʁ ͍ͷΘ͔ͬͨɺͰͳΜͰʜ &4.͕ଟ͘ͷϒϥβͰαϙʔτ͞ΕΔΑ͏ʹͳͬͨͷͷ όϯυϧ͞Ε͍ͯͳ͍&4.·ͩඇޮͳ໘͋ΔͨΊɻ ࠷దԽ͞ΕͨίʔυͬͺΓڧ͍ USFFTIBLJOH
MB[ZMPBEJOH DPNNPODIVOLTQMJUUJOH Ωϟογϡ໘Ͱڧ͍ ˞ग़యɿIUUQTWJUFKTEFWHVJEFXIZIUNMXIZCVOEMFGPSQSPEVDUJPO -
ͳΜͰຊ൪͚FTCVJMEͰόϯυϧ͠ͳ͍ͷʁ ͍ͷΘ͔ͬͨɺͰͳΜͰʜ ։ൃͰ͏ʹे͍͚Ͳɺ͍͔ͭ͘ͷόϯυϥͱͯ͠ॏཁͳػೳ͕8*1Ͱ͋Δɻ ʢྫʣDPEFTQMJUUJOHͱ͔ $44ͷϋϯυϦϯάͱ͔ɻ ͜ͷ͋ͨΓΛߟ͑Δͱ SPMMVQ͕͍͍ΑͶʂͬͯ͜ͱʹͳͬͨɻ ͨͩɺ͜ΕͱΓ͋͑ͣࠓͷ͏ͪͬͯ͜ͱͰ͋ͬͯ কདྷతʹ FTCVJME
ʹͳΔ͜ͱ͋Δ͔Ͷ తͳ͜ͱ͕υΩϡϝϯτͰॻ͔Ε͍ͯΔ ˞ग़యɿIUUQTWJUFKTEFWHVJEFXIZIUNMXIZOPUCVOEMFXJUIFTCVJME -
WVFDMJͳ͔͚ͬͨͬʁ݁ہͲ͕ͬͪະདྷͳͷʁ 7JUF͕Πέ͍ͯΔͷΘ͔ͬͨɺͰʜ 7VFKT "NTUFSEBNʹͯ &WBO:PV͕ݴ͍ͬͯͨΑ͏ʹ ͍ͰݟΕ྆ํଘࡏ͢Δ ͍Ͱݟͨ߹ɺ7JUF ͷ
WVFDMJͷแׅతͳαϙʔτ ྆ํͷϝϦοτΛड͚͍ͨ ͱ͍͏͜ͱͷΑ͏ɻ ʢݸਓతͳߟ͑Ͱ͕͢ʣ ͱΓ͖͋͑ͣͳํΛ͍͍͑ͷͰʁ ˞ग़యɿ IUUQTXXXZPVUVCFDPNXBUDI W&M+X$'KH -
WVFUTD ͬͯͳʹʁ ͖ͬ͞ݴͬͯͨʜ WVFUTD UTD WTDPEFWVFMBOHVBHFTFSWJDF ΛΈ߹Θͤͨͷ 7PMBS 74$PEF
֦ுػೳ ͷதͰ͋Δ WTDPEFWVFMBOHVBHFTFSWVJDF Ͱ ςϯϓϨʔτ্ͷܕνΣοΫߦͬͯ͘ΕΔͷͰɺඇৗʹ։ൃମݧ͕ྑ͔ͬͨͰ͢ɻ