# ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ด๋?
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ด๋ ์๋ฒ์์ ํ์ด์ง๋ฅผ ๊ทธ๋ ค ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ก ๋ณด๋ธ ํ ํ๋ฉด์ ํ์ํ๋ ๊ธฐ๋ฒ์ ์๋ฏธํฉ๋๋ค. ๋ทฐ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ๋ฐ๋์ธ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐฉ์์ ๋๋ค. ์ด ๊ธ์์๋ ํด๋ผ์ด์ธํธ ์ฌ์ดํธ ๋ ๋๋ง๊ณผ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐฉ์์ ์ฐจ์ด์ ์ ์ดํด๋ณด๊ณ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ฅ๋จ์ ์ ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
# ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ ์ดํดํ๊ธฐ ์ํด์ ๋ทฐ CLI๋ก ์์ฑ๋ ํ๋ก์ ํธ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋๋ ๋ทฐ CLI๋ก ์์ฑํ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ์ฝ๋์ ๋๋ค.
// src/main.js
import Vue from "vue";
import App from "./App.vue";
new Vue({
render: (h) => h(App),
}).$mount("#app");
์ ์ฝ๋๋ ๋ทฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ์ฝ๋์
๋๋ค. ์ด ์ธ์คํด์ค๋ ์๋ index.html
ํ์ผ์ app
์์ด๋๋ฅผ ๊ฐ๋ ํ๊ทธ์ ๋ถ์ฐฉ๋ฉ๋๋ค.
<!-- public/index.html -->
<!DOCTYPE html>
<html lang="">
<head>
<!-- ... -->
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
CLI๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๋ ํ npm run serve
๋ก ํ๋ก์ ํธ๋ฅผ ์คํํ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ํ์ธํ๋ฉด ๋ทฐ ๊ธฐ๋ณธ ํ์ด์ง๊ฐ ๋น๋๋ค. ์ด ๋ ๊ฐ๋ฐ์ ํจ๋์ Network
ํญ์์ Doc
์ผ๋ก ํํฐ๋งํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
์๋ฒ์์ ๋๊ฒจ๋ฐ์ HTML ์ฝ๋์๋ body
ํ๊ทธ ๋ณธ๋ฌธ์ <div id="app"></div>
๋ฐ์ ์์ง๋ง ํ๋ฉด์๋
Welcome To Your Vue.js App
ํ
์คํธ์ ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค. ์ด ํ
์คํธ์ ์ด๋ฏธ์ง๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์์ ๋์ํ Vue.js
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ทธ๋ ค์ค ๊ฒ์
๋๋ค. ์ฆ ๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ ค๋ธ ๊ฒ์ด์ฃ .
# ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง ์ฐจ์ด์
๊ทธ๋ผ ์๋ฒ ์ฌ์ด๋์ ๋ ๋๋ง์ ์์์ ์ดํด๋ณธ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ๋ฌด์จ ์ฐจ์ด์ ์ด ์์๊น์? ๋ฐ๋ก ์ด๋์ ํ๋ฉด์ ๋ณด์ผ ํ์ด์ง์ ๋ด์ฉ์ ๊ทธ๋ฆฌ๋๋์ ์ฐจ์ด์ ๋๋ค. ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ ํ์ด์ง์ ๋ด์ฉ์ ๋ธ๋ผ์ฐ์ ์์ ๊ทธ๋ฆฌ๊ณ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์๋ฒ์์ ํ์ด์ง์ ๋ด์ฉ์ ๋ค ๊ทธ๋ ค์ ๋ธ๋ผ์ฐ์ ๋ก ๋์ ธ์ค๋๋ค. ์๋์ ๊ฐ์ด ๋ง์ด์ฃ .
# ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ ์ธ๊น?
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ฐ๋ ๋ชฉ์ ์ ํฌ๊ฒ "๊ฒ์ ์์ง ์ต์ ํ"์ "๋น ๋ฅธ ํ์ด์ง ๋ ๋๋ง"์ ๋๋ค. ๊ฒ์ ์์ง ์ต์ ํ๋ ๊ตฌ๊ธ, ๋ค์ด๋ฒ์ ๊ฐ์ ๊ฒ์ ์ฌ์ดํธ์์ ๊ฒ์ํ์ ๋ ๊ฒฐ๊ณผ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ง์ด ๋ ธ์ถ๋ ์ ์๋๋ก ์ต์ ํ ํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ํนํ, SNS์์ ๋งํฌ๋ฅผ ๊ณต์ ํ์ ๋ ํด๋น ์น ์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ์ด๋ฏธ์ง์ ์ค๋ช ์ผ๋ก ํ์ํด์ฃผ๋ OG(Open Graph) Tag๋ฅผ ํ์ด์ง ๋ณ๋ก ์ ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ด ํจ์จ์ ์ ๋๋ค.
๋ํ, ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ๋น HTML ํ์ด์ง๋ฅผ ๋ฐ์ ๋ธ๋ผ์ฐ์ ์์ ๊ทธ๋ฆฌ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ๋ค๋ฅด๊ฒ ์๋ฒ์์ ๋ฏธ๋ฆฌ ๊ทธ๋ ค์ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ด์ง๋ฅผ ๊ทธ๋ฆฌ๋ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ฅ์์๋ ํ๋ฉด์ ์ ์๋ฏธํ ์ ๋ณด๊ฐ ํ์๋๋ ์๊ฐ์ด ๋นจ๋ผ์ง๋ ๊ฒ์ด์ฃ .
# ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ๋จ์
์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ํ๋๊ฒ ์ข๊ฒ ๋ค ๋ผ๊ณ ์๊ฐํ์ค ์ ์์ง๋ง ์์ํ๊ธฐ ์ ์ ์ฃผ์ํด์ผ ํ ์ ์ด ์์ต๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ Node.js ์น ์ ํ๋ฆฌ์ผ์ด์ ์คํ ๋ฐฉ๋ฒ์ ์์์ผํ๊ณ ์๋ฒ์ชฝ ํ๊ฒฝ ๊ตฌ์ฑ๊ณผ ํจ๊ป ํด๋ผ์ด์ธํธ, ์๋ฒ ๋น๋์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์, ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์ ๋ฌธ์ ์ ์ฅ์์๋ ์ฝ์ง ์์ ์ง์ ์ฅ๋ฒฝ์ด ์กด์ฌํฉ๋๋ค.
๋ํ, Node.js ํ๊ฒฝ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๊ด๋ จ API๋ฅผ ๋ค๋ฃฐ ๋ ์ฃผ์ํด์ผ ํฉ๋๋ค. ๋ทฐ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์
์ ๋ผ์ดํ์ฌ์ดํด ํ
๊ณผ๋ ๋ค๋ฅธ ํ๊ฒฝ(๋ธ๋ผ์ฐ์ ๊ฐ ์๋ Node.js)์์ ๋์ํ๊ธฐ ๋๋ฌธ์ beforeCreate
์ created
์์ window
๋ document
์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
TIP
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๊ฐ ์ต์ด๋ก ์์ฑ๋๋ ์์ ์ด ๋ธ๋ผ์ฐ์ ์๊ฐ ์๋๋ผ Node.js ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ beforeCreate
๋ created
์์ ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด๋ฅผ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋์ beforeMount
๋ mounted
์์ window
์ document
๋ฅผ ์ ๊ทผํ ์ ์์ต๋๋ค ๐
# ์จ๋ผ์ธ ๊ฐ์๋ก ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง
โ Introduction Universal Mode โ