๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปWEB FrontEnd/ํ”„๋ ˆ์ž„์›Œํฌ Vue

(17)
์žฌ์‚ฌ์šฉ & ์ปดํฌ์ง€์…˜(2) - ์‚ฌ์šฉ์ž ์ง€์ • ๋””๋ ‰ํ‹ฐ๋ธŒ ์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ v3.vuejs-korea.org/ko-kr/guide/custom-directive.html 1. ์‚ฌ์šฉ์ž ์ง€์ • ๋””๋ ‰ํ‹ฐ๋ธŒ Vue๋Š” ์ฝ”์–ด์— ํฌํ•จ๋œ ๊ธฐ๋ณธ ๋””๋ ‰ํ‹ฐ๋ธŒ ์„ธํŠธ ์™ธ์—๋„ ์‚ฌ์šฉ์ž ์ •์˜ ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. 1) ๋””๋ ‰ํ‹ฐ๋ธŒ ๋“ฑ๋ก ๋ฐฉ๋ฒ• ์‚ฌ์šฉ์ž ์ง€์ • ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ „์—ญ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ• ๋กœ์ปฌ ๊ฒ€ํฌ๋„ŒํŠธ์— ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ• ์ „์—ญ ์„ ์–ธ Vue ์ธ์Šคํ„ด์Šค ์„ ์–ธํ•˜๊ธฐ ์ „์— Vue.directive ์ „์—ญ ๋“ฑ๋ก์„ ์‹œ์ผœ์ค€๋‹ค. // ์ „์—ญ ์‚ฌ์šฉ์ž ์ •์˜ ๋””๋ ‰ํ‹ฐ๋ธŒ v-focus ๋“ฑ๋ก Vue.directive('focus', { // ๋ฐ”์ธ๋”ฉ ๋œ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ DOM์— ์‚ฝ์ž…๋˜์—ˆ์„ ๋•Œ... inserted: function (el) { // ์—˜๋ฆฌ๋จผํŠธ์— ํฌ์ปค์Šค๋ฅผ ์ค๋‹ˆ๋‹ค el.focus() } }..
์žฌ์‚ฌ์šฉ & ์ปดํฌ์ง€์…˜(1) - ๋ฏน์Šค์ธ ๋ฏน์Šค์ธ์€ ์ด๋ฆ„์ด ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ž์–ด ์›ํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋ฏน์Šค์ธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋™์ž‘์‹œํ‚ค๋Š” ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ์“ฐ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๋ฏน์Šค์ธํ•  ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  2. ์ปดํฌ๋„ŒํŠธ์— ๊ฐ์ฒด๋ฅผ ๋ฏน์Šค์ธํ•˜๊ณ  3. ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด ์™„์„ฑํ•œ๋‹ค ์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ kr.vuejs.org/v2/guide/mixins.html velog.io/@bluestragglr/Vue.js-Mixin 1. ๊ธฐ์ดˆ Mixins๋Š” Vue ์ปดํฌ๋„ŒํŠธ์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ๋ฐฐํฌํ•˜๋Š” ์œ ์—ฐํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. mixin ๊ฐ์ฒด๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ ์˜ต์…˜์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ์— mixin์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น mixin์˜ ๋ชจ๋“  ์˜ต์…˜์ด ์ปดํฌ๋„ŒํŠธ์˜ ๊ณ ์œ  ์˜ต์…˜์— โ€œํ˜ผํ•ฉโ€๋œ๋‹ค. // mixin ๊ฐ์ฒด ์ƒ์„ฑ var myMixin ..
์ธ๋ผ์ธ ์Šคํƒ€์ผ ๋ฐ”์ธ๋”ฉ 1. ๊ฐ์ฒด ๊ตฌ๋ฌธ 1) v-bind ์ธ๋ผ์ธ ์Šคํƒ€์ผ ๋ฐ”์ธ๋”ฉ ์ด์šฉ v-bind:style ๊ฐ์ฒด ๊ตฌ๋ฌธ์€ ๋งค์šฐ ์ง์„ค์ ์œผ๋กœ, ๊ฑฐ์˜ CSS ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ JavaScript ๊ฐ์ฒด์ด๋‹ค. ์†์„ฑ ์ด๋ฆ„์— camelCase์™€ kebab-case๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. data: { activeColor: 'red', fontSize: 30 } 2) ์Šคํƒ€์ผ ๊ฐ์ฒด์— ์ง์ ‘ ๋ฐ”์ธ๋”ฉ ํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์ด ๋” ๊ฐ„๊ฒฐํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. data: { styleObject: { color: 'red', fontSize: '13px' } } 2. ๋ฐฐ์—ด ๊ตฌ๋ฌธ v-bind:style์— ๋Œ€ํ•œ ๋ฐฐ์—ด ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šคํƒ€์ผ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ์ž๋™ ์ ‘๋‘์‚ฌ v-bind:style์— ๋ธŒ๋ผ์šฐ์ € ๋ฒค๋” ์ ‘๋‘์–ด๊ฐ€ ํ•„์š”ํ•œ CSS ์†์„ฑ (์˜ˆ: tr..
ํด๋ž˜์Šค ๋ฐ”์ธ๋”ฉ v-bind ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ class์™€ style์„ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ์Šคํƒ€์ผ๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. v-bind:class="ํด๋ž˜์Šค๋ช…" v-bind:class="{ ํด๋ž˜์Šค๋ช…: ์กฐ๊ฑด }" ์œ„์ฒ˜๋Ÿผ v-bind:class๋Š” ๋ฌธ์ž์—ด๊ณผ ๊ฐ์ฒด ๋˜๋Š” ๋ฐฐ์—ด์„ ๋‘˜ ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ๋ฐ›์€ ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šค๋ช…์€ ๊ฐ์ฒด์˜ ์†์„ฑ ํ‚ค์—, ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์ ์šฉ๋˜์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ด ์†์„ฑ ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. 1. ๊ฐ์ฒด ๊ตฌ๋ฌธ 1) v-bind ํด๋ž˜์Šค ๋ฐ”์ธ๋”ฉ์„ ์ด์šฉํ•œ ํด๋ž˜์Šค ํ† ๊ธ€ ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ํ† ๊ธ€ํ•˜๊ธฐ ์œ„ํ•ด v-bind:class์— ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๊ตฌ๋ฌธ์€ active ํด๋ž˜์Šค์˜ ์กด์žฌ ์—ฌ๋ถ€๊ฐ€ ๋ฐ์ดํ„ฐ ์†์„ฑ isActive์˜ ์ฐธ ์†์„ฑ์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค. 2) ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ํ† ๊ธ€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ํ† ๊ธ€ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๊ฐ์ฒด์— ํ•„๋“œ๋ฅผ..
v-model ๋ฐ”์ธ๋”ฉ ์บกํ‹ดํŒ๊ต๋‹˜์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ๊ณ ํ•ด ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 1. v-model v-model ์ง€์‹œ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ์— ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. โ€ป ๋ฐ”์ธ๋”ฉ ์ง€์‹œ์ž v-bind v-model ์ฃผ๋กœ HTML ์†์„ฑ ๋ฐ”์ธ๋”ฉ์— ์‚ฌ์šฉ ์ฃผ๋กœ ์ž…๋ ฅ๊ณผ ํผ ๋ฐ”์ธ๋”ฉ์— ์‚ฌ์šฉ 2. v-model ์‚ฌ์šฉ๋ฒ• 1) v-model ์‚ฌ์šฉํ•ด ๋ฐ”์ธ๋”ฉ new Vue({ data: { inputText: '' } }) 2) v-bind์™€ v-on์„ ์‚ฌ์šฉํ•ด ๋ฐ”์ธ๋”ฉ new Vue({ data: { inputText: '' }, methods: { updateInput: function(event) { var updatedText = event.target.value; this.inputText = updatedText; } } }) 1๋ฒˆ ๋ฐฉ๋ฒ•๊ณผ 2..
CSR์™€ SSR์˜ ์žฅ๋‹จ์  ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ฐจ SPA - CSR MPA - SSR ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ SPA์™€ SSR๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 1. SPA ์ฒซ ์š”์ฒญ์‹œ ๋”ฑ ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ํŽ˜์ด์ง€ ์ด๋™์‹œ ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹ SPA(single page application)์€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(CSR, client side rendering) ๋ฐฉ์‹์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ๋ช… ์ฃผ๊ธฐ ์ค‘์—์„œ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋”ฉํ•˜๊ณ , ๊ทธ ํ›„์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋–„๋งŒ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•œ๋‹ค. ์žฅ์  ์ž์—ฐ์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋งŒ ๋ถ€๋ถ„์ ์œผ๋กœ ๋กœ๋”ฉ ์„œ๋ฒ„์˜ ํ…œํ”Œ๋ฆฟ ์—ฐ์‚ฐ์„ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ถ„์‚ฐ ์ปดํฌ๋„ŒํŠธ๋ณ„ ๊ฐœ๋ฐœ ์šฉ์ด ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์„ ์—ผ๋‘์— ๋‘”๋‹ค๋ฉด ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„ ๊ฐ€๋Šฅ ๋‹จ์  JavaScript ..
vue์˜ ๋ฐ˜์‘์„ฑ reactivity ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ฐจ 1. ๋ฐ˜์‘์„ฑ 1-1) vue๊ฐ€ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ• 1. ๋ฐ˜์‘์„ฑ vue๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ฐฑ์‹ ํ•˜๋Š” ํŠน์„ฑ ๋ฐ˜์‘์„ฑ์— ๋Œ€ํ•ด ์•Œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋“ค์„ ์ตํž ์ˆ˜ ์žˆ๋‹ค! ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์ ์œผ๋กœ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ• ๊ฐ€์ƒ ๋”์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• ํ™”๋ฉด์„ ๋น ๋ฅด๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š๊ณ  ๋”์„ ์ถ”๊ฐ€,์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ• 1-1) vue๊ฐ€ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ• Vue ์ธ์Šคํ„ด์Šค์— JavaScript ๊ฐ์ฒด๋ฅผ data ์˜ต์…˜์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. Vue๋Š” ๋ชจ๋“  ์†์„ฑ์— Object.defineProperty๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ getter/setters๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. โ€ป getter / setter ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ณด์ด์ง€ ์•Š์œผ๋‚˜ ์†์„ฑ์— ์•ก์„ธ์Šค ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ Vue๊ฐ€..
Vuex ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ฐจ 1. ์ƒํƒœ ๊ด€๋ฆฌ 2. Vuex 3. state 4. Getters & Mutations 5. Actions 6. Vuex ํ—ฌํผ ํ•จ์ˆ˜ (mapGetters, mapMutations, mapActions ) ์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ joshua1988.github.io/web-development/vuejs/vuex-start/ joshua1988.github.io/web-development/vuejs/vuex-getters-mutations/ joshua1988.github.io/web-development/vuejs/vuex-actions-modules/ 1. ์ƒํƒœ ๊ด€๋ฆฌ 1-1) ์ƒํƒœ ๊ด€๋ฆฌ ์ƒํƒœ ๊ด€๋ฆฌ๋ž€ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๊ณผ ์ด๋ฒคํŠธ ํ†ต์‹ ์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ„ด์„ ..
Single File Components ์ฒด๊ณ„ ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒŒ์‹œ๋ฌผ kr.vuejs.org/v2/guide/components.html 1. Single File Components ์ฒด๊ณ„ .vue ํŒŒ์ผ๋กœ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹ (.vue ํŒŒ์ผ 1๊ฐœ = ์ปดํฌ๋„ŒํŠธ 1๊ฐœ) 1) .vue ํŒŒ์ผ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ex) "์ปดํฌ๋„ŒํŠธ๋ช….vue" ํŒŒ์ผ {{message}} 2. ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•˜๊ณ  ๋“ฑ๋กํ•˜๊ธฐ 1) ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ํด๋”์˜ srcํด๋” ๋ฐ‘์— componentsํด๋” ์ƒ์„ฑ componentsํด๋” ์•ˆ์— "์ปดํฌ๋„ŒํŠธ๋ช….vue"ํŒŒ์ผ๋“ค์„ ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค. .vueํŒŒ์ผ ์•ˆ์— ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ๋‘ ์ž‘์„ฑํ•ด์ค€๋‹ค. header 2) ์ปดํฌ๋„ŒํŠธ ๋“ฑ๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋ชจ๋‘ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์ธ App.vue์— ๋“ฑ๋กํ•ด์•ผ..
Vue์˜ template์†์„ฑ ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ฐจ 1. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding) 2. ๋””๋ ‰ํ‹ฐ๋ธŒ(Directive) 3. ๊ณ ๊ธ‰ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฒ• template์ด๋ž€ ๋ทฐ๋กœ ํ™”๋ฉด์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค. template์†์„ฑ์€ HTML, CSS ๋“ฑ์˜ ๋งˆํฌ์—… ์†์„ฑ๊ณผ ๋ทฐ ์ธ์Šคํ„ด์Šค์—์„œ ์ •์˜ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ์ง๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ HTML๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์ ์œผ๋กœ template์†์„ฑ์—์„œ ์ •์˜ํ•œ ๋งˆํฌ์—…+๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ƒ ๋” ๊ธฐ๋ฐ˜์˜ render()ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋ณ€ํ™˜๋œ reder()ํ•จ์ˆ˜๋Š” ์ตœ์ข…์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. - temlate์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• 1. ES5 2. ES6 : ์‹ฑ๊ธ€ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ์ฒด๊ณ„ Hello..