Skip to content

Latest commit

ย 

History

History
48 lines (33 loc) ยท 2.28 KB

lazy-loading.md

File metadata and controls

48 lines (33 loc) ยท 2.28 KB

์ง€์—ฐ๋œ ๋กœ๋”ฉ

๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์•ฑ์„ ์ œ์ž‘ํ•  ๋•Œ JavaScript ๋ฒˆ๋“ค์ด ์ƒ๋‹นํžˆ ์ปค์ ธ ํŽ˜์ด์ง€๋กœ๋“œ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ผ์šฐํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ„๋„์˜ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๊ฒฝ๋กœ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Vue์˜ ๋น„๋™๊ธฐ ์ปดํฌ๋„ŒํŠธ์™€ Webpack์˜ ์ฝ”๋“œ ๋ถ„ํ• ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ๋น„๋™๊ธฐ ์ปดํฌ๋„ŒํŠธ๋Š” Promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ปดํฌ๋„ŒํŠธ๊ฐ€ resolve ๋˜์–ด์•ผํ•จ).

const Foo = () =>
  Promise.resolve({
    /* ์ปดํฌ๋„ŒํŠธ ์ •์˜ */
  })

๋‘˜์งธ, Webpack 2์—์„œ dynamic import๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋ถ„ํ•  ํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import('./Foo.vue') // returns a Promise

์ฐธ๊ณ : Babel์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•ด syntax-dynamic-import ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ Webpack์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ๋ถ„ํ• ๋  ๋น„๋™๊ธฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

const Foo = () => import('./Foo.vue')

๋ผ์šฐํŠธ ์„ค์ •์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Foo๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

const router = new VueRouter({
  routes: [{ path: '/foo', component: Foo }]
})

๊ฐ™์€ ๋ฌถ์Œ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ

๋•Œ๋กœ๋Š” ๋™์ผํ•œ ๋ผ์šฐํŠธ ์•„๋ž˜์— ์ค‘์ฒฉ๋œ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋™์ผํ•œ ๋น„๋™๊ธฐ ๋ฌถ์Œ์œผ๋กœ ๊ทธ๋ฃนํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŠน์ˆ˜ ์ฃผ์„ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„(Webpack 2.4 ์ด์ƒ ์ง€์›)์„ ์ œ๊ณตํ•˜์—ฌ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฌถ์Œ์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

Webpack์€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฌถ์Œ์„ ๊ฐ€์ง„ ๋น„๋™๊ธฐ ๋ชจ๋“ˆ์„ ๋™์ผํ•œ ๋น„๋™๊ธฐ ๋ฌถ์Œ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.