Vue.js๋?
Last updated
Last updated
Vue.js๋ ํ๋ฉด๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ ํ๋ ์์ํฌ๋ผ ๋ณผ ์ ์๋ค. ๋ทฐ ์ฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ฉด๋จ ๋ฐ์ดํฐ ํํ์ ๊ดํ ๊ธฐ๋ฅ๋ค์ ์ค์ ์ผ๋ก ์ง์ํ์ง๋ง, ํ๋ ์์ํฌ ๊ธฐ๋ฅ์ธ ๋ผ์ฐํฐ, ์ํ ๊ด๋ฆฌ, ํ ์คํ ๋ฑ์ ์ฝ๊ฒ ๊ฒฐํฉํ ์ ์๋ ํํ๋ก ์ ๊ณต๋๋ค. ๊ทธ๋์ ๊ณต์ ๋ฌธ์์์๋ ๋ทฐ๋ฅผ ์ ์ง์ ์ธ ํ๋ ์์ํฌ(progressive framework)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฅ์
๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ๋ค.
react์ angular์ ๋นํด ์ฑ๋ฅ์ด ์ฐ์ํ๊ณ , ๋น ๋ฅด๋ค.
react์ ์ฅ์ ๊ณผ angular์ ์ฅ์ ์ ๊ฐ๊ณ ์๋ค. ( angular์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ํน์ฑ & react์ virtual DOM ๊ธฐ๋ฐ ๋ ๋๋ง ํน์ง )
๋ค๋ฅธ ํ๋ ์์ํฌ์ ์ฑ๋ฅ ๋น๊ต
vue.js๋ UI ํ๋ฉด ๊ฐ๋ฐ ๋ฐฉ๋ฒ ์ค ํ๋์ธ MVVM ํจํด์ ๋ทฐ ๋ชจ๋ธ์ ํด๋นํ๋ ํ๋ฉด๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
MVVM ํจํด์ด๋ ํ๋ฉด์ Model - View - ViewModel ๋ก ๊ตฌ์กฐํํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ ๋งํ๋ค. ํ๋ฉด์ ์์๋ค์ ์ ์ดํ๋ ์ฝ๋์ ๋ฐ์ดํฐ ์ ์ด๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋๋ฅผ ๋ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๊ณ , ์ ์ง ๋ณด์๊ฐ ์ฌ์์ง๋ค.
MVVM - ์ํคํผ๋์
๋งํฌ์ ์ธ์ด๋ GUI ์ฝ๋๋ฅผ ๋น์ฆ๋์ค ๋ก์ง or ๋ฐฑ์๋ ๋ก์ง๊ณผ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ์ํํธ์จ์ด ๋์์ธ ํจํด
์ฉ์ด
์ค๋ช
View
์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ํ๋ฉด
DOM
HTML ๋ฌธ์์ ๋ค์ด๊ฐ๋ ์์(ํํฌ, ํด๋์ค, ์์ฑ ๋ฑ)์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ ํธ๋ฆฌ
DOM Listener
DOM์ ๋ณ๊ฒฝ ๋ด์ญ์ ๋ํด ๋ฐ๋ก ๋ฐ์ํด ํน์ ๋ก์ง์ ์ํํ๋ ์ฅ์น
Model
๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์ฉ๊ธฐ, ๋ณดํต ์๋ฒ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ javascript ๊ฐ์ฒด ํํ๋ก ์ ์ฅ
Data Binding
View์ ํ์๋๋ ๋ด์ฉ๊ณผ Model์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ
ViewModel
๋ทฐ์ ๋ชจ๋ธ์ ์ค๊ฐ ์์ญ, DOM Listener์ Data Binding์ ์ ๊ณตํ๋ ์์ญ
vue๋ ํ๋ฉด์ ์์๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์กฐ์์ด ์ผ์ด๋ ๋ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ์ฌ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ์ฌ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค. ํ๋ฉด์ ํํ์ ์ฃผ๋ก ๊ด์ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ํ๋ฉด๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ ํ๋ค.
๋ทฐ์ ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ํ๋ฉด์ ๊ตฌ์ฑํ ์ ์๋ค. ์ผ์ชฝ ๊ทธ๋ฆผ์ ๊ฐ ์์ญ์ ์ปดํฌ๋ํธ๋ก ์ง์ ํ์ฌ ๊ตฌ๋ถํ ๊ฒ์ด๊ณ , ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ ๊ฐ ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๋ ์ด์ ๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ทฐ์ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด HTML ์ฝ๋์์ ํ๋ฉด์ ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์๋ค. ์ฆ, ํ๋ ์์ํฌ ์์ฒด์์ ์ปดํฌ๋ํธ ๋ฐฉ์์ ์ถ๊ตฌํ๋ฉด ๋ชจ๋๊ฐ ์ ํด์ง ๋ฐฉ์์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ๋ฏ๋ก ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ๋ ์์ํด์ง๋ค.
vue๋ angular์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ react์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฅ์ ์ ๋ชจ๋ ๊ฒฐํฉํ ํ๋ ์์ํฌ์ด๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด๋ ํ๋ฉด์ ํ์๋๋ ๊ฐ๊ณผ ํ๋ ์์ํฌ์ ๋ชจ๋ธ ๋ฐ์ดํฐ ๊ฐ์ด ๋๊ธฐํ๋์ด ํ์ชฝ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ค๋ฅธ ํ์ชฝ๋ ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋งํ๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ปดํฌ๋ํธ์ ๋จ๋ฐฉํฅ ํต์ ์ ์๋ฏธํ๋ฉฐ, ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ํญ์ ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ ๋ฐฉํฅ์ผ๋ก๋ง ์ ๋ฌํ๋๋ก ๊ตฌ์กฐํ๋์ด ์๋ ๊ฒ์ ๋งํ๋ค.
์ด ์ธ์๋ ๋น ๋ฅธ ํ๋ฉด ๋ ๋๋ง์ ์ํด react์ Virtual DOM ๋ ๋๋ง ๋ฐฉ์์ ์ ์ฉํด ์ ํฉํ ๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค. Virtual DOM์ ํ์ฉํ๋ฉด ํน์ ๋ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ณ๊ฒฝ ๋ฐ์์ ํ๋ฉด ์ ์ฒด๋ฅผ ๋ค์ ๊ทธ๋ฆฌ์ง ์๊ณ ํ๋ ์์ํฌ์์ ์ ์ํ ๋ฐฉ์์ ๋ฐ๋ผ ํ๋ฉด์ ๊ฐฑ์ ํ๋ค. ๋ธ๋ผ์ฐ์ ์ ์ฅ์์๋ ์ฑ๋ฅ ๋ถํ๊ฐ ์ค์ด๋ค์ด ์ผ๋ฐ์ ์ธ ๋ ๋๋ง ๋ฐฉ์๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๊ทธ๋ฆด ์ ์๋ค.