Vue: Hoisting-up vnode - ๋ฌดํ•œ ๋ฃจํ”„ ๊ฒฝ๊ณ 

์— ๋งŒ๋“  2017๋…„ 09์›” 15์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vuejs/vue

๋ฒ„์ „

2.4.4

์žฌ์ƒ์‚ฐ ๋งํฌ

http://jsfiddle.net/vjvMp/2019/

์žฌํ˜„ ๋‹จ๊ณ„

๊ตฌ์„ฑ ์š”์†Œ์˜ ์ •ํ™•ํ•œ ๋ ˆ์ด์•„์›ƒ์€ JSFiddle์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ์˜ ์กฐ๋ฆฝ์€ ์–ด๋–ค ์ด์œ ๋กœ ๋งค์šฐ ์ทจ์•ฝํ•˜์—ฌ ์ด๊ฒƒ์ด ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์ตœ์ƒ์œ„ layout ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. http://jsfiddle.net/vjvMp/2020/

๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๊นŒ?

์ž์‹์˜ ์Šฌ๋กฏ์ด ๋ถ€๋ชจ์—๊ฒŒ ํ˜ธ์ด์ŠคํŠธ๋˜๊ณ  ๋ฌธ์ œ ์—†์ด ์ž์‹ ์œ„์— ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ž์‹์ด ๋ Œ๋”๋ง๋˜์ง€๋งŒ ๋ฌดํ•œ ์—…๋ฐ์ดํŠธ ๋ฃจํ”„ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

  • data ์—์„œ API๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด while api ๊ฐ์ฒด๊ฐ€ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค.
  • vnode๋ฅผ API๋กœ ์„ค์ •ํ•˜๋ฉด Vue๊ฐ€ vnode๋ฅผ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • 2.4.3์—์„œ ์Šฌ๋กฏ ๋…ธ๋“œ๋Š” ์ด์ œ ์ผ๋ถ€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ๋•Œ ๋”ฅ ํด๋ก ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์ด ์ „์ฒด vnode๋ฅผ ๋ฐ˜์‘ ์ข…์†์„ฑ์ด ๋˜๋„๋ก ๋“ฑ๋กํ•˜๋ฏ€๋กœ vnode๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์‹œ ๋ Œ๋”๋ง์ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ Object.freeze vnode์ด๊ฑฐ๋‚˜ api ์ฃผ์ž…์„ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ฝ”๋“œ๋Š” v2.4.2 ์—์„œ

  • data ์—์„œ API๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด while api ๊ฐ์ฒด๊ฐ€ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค.
  • vnode๋ฅผ API๋กœ ์„ค์ •ํ•˜๋ฉด Vue๊ฐ€ vnode๋ฅผ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • 2.4.3์—์„œ ์Šฌ๋กฏ ๋…ธ๋“œ๋Š” ์ด์ œ ์ผ๋ถ€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ๋•Œ ๋”ฅ ํด๋ก ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์ด ์ „์ฒด vnode๋ฅผ ๋ฐ˜์‘ ์ข…์†์„ฑ์ด ๋˜๋„๋ก ๋“ฑ๋กํ•˜๋ฏ€๋กœ vnode๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์‹œ ๋ Œ๋”๋ง์ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ Object.freeze vnode์ด๊ฑฐ๋‚˜ api ์ฃผ์ž…์„ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @yyx990803

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰