2022. 3. 14. 00:10ใProgramming Project ์์ ์ค/๋ด์ฉ ์ ๋ฆฌ
๐ง๐ป๐ป Git Hub ์ฃผ์
๐ ๋ชฉ์ฐจ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - Home / Main
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ชฉ๋ก ์กฐํ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์์ธ ์กฐํ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ฑ๋ก / ์์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์ญ์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ต๋ณ ๋ฑ๋ก / ์์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ต๋ณ ์ญ์
๐จ๐ฉ๐ง๐ฆ ํ์ ๊ด๋ จ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ํ์ ๊ด๋ จ : ํ์ ๊ฐ์
- ๋ถ ๋ก -
[FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - Paging ์ฒ๋ฆฌ
[Vue.js] ๊ธฐ์ด ๊ฐ๋ ์ ๋ฆฌ - Vue Router
์๋
ํ์ธ์? ์ฃผ๋ํ๋ ์
๋๋ค!
์ฃผ๋ํ๋์ Back End ( Java - Spring ๊ธฐ๋ฐ )์ผ๋ก ๊ณต๋ถ๋ฅผ ํ๊ณ , FrontEnd๋ ํ ์ ์์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ ๊ฒ์ด์์.
๊ทธ ์ด์ ๋ ๋ด๊ฐ ๋ง๋ค๊ณ ์ถ์ ์๋น์ค๋ฅผ ๋ ํผ์์๋ ๋ง๋ค ์ ์๋ค๋ ์ฅ์ ์ด ์๊ณ , ๋ฌด์๋ณด๋ค ์ทจ์
์ ํ์ ๋ Front End ๊ฐ๋ฐ์์ ์์ฌ์ํต์ด ๋ณด๋ค ํธํ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ๋ ๊ฒ์ด์์.
์์ ์ ์ฒ์ Spring Boot๋ฅผ ์ ํ๋ฉด์ ํ ์ด ํ๋ก์ ํธ๋ฅผ ํ์ ๋, React ๊ธฐ๋ฐ Front End ๊ฐ๋ฐ ๊ณต๋ถํ๋ ๋ถ๋ค๊ณผ ์์ฌ ์ํต์ ํ ๋, ๋ง์ด ํ๋ค์๋๊ฒ์ด์์. ๋ํต ๋ฌด์จ ์๋ฆฌ๋ฅผ ํ๋์ง ... ๐ค
์ฒ์ ๊ณต๋ถ์ด๋ ๋งํผ ์ด ํ๋ก์ ํธ๋ ํด๋ก ์ฝ๋ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ๋ก์ ํธ ์ ๋๋ค.
๋ค๋ง ์๋ฒฝํ๊ฒ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋์ด ์์ง ์์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ ๋ถ๋ถ์ด๊ณ , ์ฃผ๋ํ๋์ ์ ๋ง์ ๋ง์ถฐ์ ์์ ํ ๊ฒ์ ์์ ํ๊ณ , ๋ฐ๋ผํ ๊ฒ์ ๋ฐ๋ผ ํด ๋ณด๋ฉด์ Error๋ ๊ฒฝํํ๊ณ , Vue์ ์ธ๊ณ๋ฅผ ํํ ํด ๋ณด๋ ค๊ณ ํ๋ ๊ฒ์ด์์.
์ฃผ๋ํ๋์ ์๋ฌด๋๋ Java ๊ธฐ๋ฐ Back End ๊ฐ๋ฐ์ด๋ค ๋ณด๋ ์ค๋ช ํ๋ ๋ถ๋ถ์ด Java์ ๋น๋์ด ์ค๋ช ํ๋ ๋ถ๋ถ์ด ๋ง์ ์ ์๋ค๋ ์ ์ฐธ๊ณ ๋ฐ๋ผ๋ ์ ์ด์์!
์ฃผ๋ํ๋๊ณผ ๊ฐ์ด Java ๊ธฐ๋ฐ Back End ๊ฐ๋ฐ์์ธ๋ฐ, Vue๋ฅผ ์ฒ์ ์ ํด๋ณด๊ณ ์ถ์ ๋ถ๋ค๊ป๋ ์ฃผ๋ํ๋์ ๊ธ์ด ๊ฝค ๋์์ด ๋์๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค!
์ด ๊ณณ์์๋ ๊ธฐ๋ณธ์ ์ธ ์ค์น ๋ฑ์ ์์ฑํ์ง ์์ ๊ฒ์ด์์.
์ด์ ๋ ์ฃผ๋ํ๋๋ ์ฒ์ ์ ํ๋ ๋ถ๋ถ์ด๋ค ๋ณด๋ ์ผ๋จ ๋๋์ง๋ฅผ ๋จผ์ ํ์ธํ๊ธฐ ์ํด ์ง๋๊ฐ ๊ฒ๋ค์ด ๋๋ฌด ๋ง์ ๊ฒ์ด์์๐ฅฒ
๋์ Vue๋ฅผ ๊ณต๋ถํ ๋ด์ฉ์ '์ด ๊ณณ'์ ์ค๋น ํด ๋์์ด์!
๊ฐ์ด ์ฑ์ฅ ํฉ์๋ค!
๐ Home (Main) Page ๋ง๋ค๊ธฐ
๋จผ์ ๊ฒฐ๊ณผ๋ถํฐ ๋ณด์๋ฉด ์์ ๊ฐ์ด Main Page๋ฅผ ๋ง๋ ๊ฒ์ด์์. ์์ง ์๋น์ค๋ค์ด ์์ฑ์ด ๋์ง ์์๊ธฐ ๋๋ฌธ์ ํ๋ํ๋ ๋ถํ๊ธฐ ์ํด ๋ค ์์ฑํ์ง๋ ์์ ๊ฒ์ด์์.
๐ฝ App.vue
์ฌ๊ธฐ๊ฐ ๋ฐ๋ก ์ค์ ๋ก Client์ Web Browser์ ์ค์ ๋ก ํ๋ฉด์ด ์ถ๋ ฅ๋๋ ๊ณณ ์ด๋๋๋ค.
๐ฆ <template> Tag ๋ด์ฉ
๋จผ์ <tmplate> Tag์ ์ค์ ๋ก ํ๋ฉด์ ๋ณด์ฌ์ง ๋ด์ฉ์ ๋ฃ์ด ์ค ๊ฒ์ด์์.
์ฃผ๋ํ๋์ด ๋ง๋ ์น์๋น์ค๋ Header์ Footer๋ ๊ณตํต ์ฌํญ์ด๊ณ , ๋ณํ๋ฅผ ์ฃผ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ <TheHeaders />์ <TheFooters /> Tag ๋ ๊ฐ๋ฅผ Contents๊ฐ ๋ค์ด๊ฐ ๊ณณ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ์ ์๋๋ก ๋๋ ๋ฃ์ด์ค ๊ฒ์ด์์.
๊ทธ๋ ๊ฒ ๋๋ฉด ์ด Header์ Footer๋ ํ๋ฉด์ด ๋ณํํ ๋๋ Re rendering์ด ๋์ง ์๋๋ต๋๋ค!
๊ทธ๋ฆฌ๊ณ , 8๋ฒ์งธ ์ค์ ๋ณด๋ฉด <router-view> ๋ผ๋ Tag๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์์. ์ด ๋ด์ฉ์ '์ด ๊ณณ'์ ์ ๋ฆฌ๋ฅผ ํด์ ์ค๋น ํด ๋๊ฒ์!
์ฃผ๋ํ๋์ :key ์์ฑ์ผ๋ก $foute.fullpath๋ผ๋ ๊ฒ์ ์
๋ ฅ ํด ๋ ๊ฒ์ด์์. ๋ฐ๋ก router-view์ Tag ์ถ๊ฐ ๊ธฐ๋ฅ์ธ๋ฐ,
์ด๊ฒ์ ์๋ ๋ด์ฉ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ ๊ฒ์ด์์.
์ปดํฌ๋ํธ๊ฐ ์ฌํ์ฉ๋๊ณ , ํ๋ผ๋ฏธํฐ ๊ฐ๋ง ๋ณ๊ฒฝ๋๋ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ ๊ฒ์ด์์.
parents/1
parents/2
parents๋ผ๋ ๋ด์ฉ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ฉด์ /:id ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ ๊ฐ์ ธ์ค๋ ์ํฉ์ธ ๊ฒ์ด์์.
๋๋ถ๋ถ ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ๊ฒ์๊ธ ๋ฑ ์์ธ ์กฐํ ๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก Backend๊ฐ ๊ตฌ์ฑ์ ํด ๋๋ ๊ฒ์ด์์.
์ด ์ํ์์ Id ๊ฐ์ ๋ฐ๋ผ "create๋, onMount์์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฒ ๋ง๋๋" ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์๋ค๋ฉด ์๋์ ๊ฐ์ ๋ฌธ์ ์ ๋ง๋๊ฒ ๋๋ ๊ฒ์ด์์.
๋ฐ๋ก! ์ฃผ์์ฐฝ์์๋ parameter (id)๊ฐ์ด ๋ณํ๋๋ฐ, ๊ฐ์ ธ์ค๋ ๊ฒฐ๊ณผ๊ฐ ๋ณํ์ง ์๋๋ค!
ํด๋น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์์ธ์ ๋ฌด์์ผ๊น์?
๊ทธ ์ด์ ๋ vue๋ ์์ ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํด ๋์ผ ์ปดํฌ๋ํธ๋ก ์ด๋ ์ Refresh๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์.
๋ฐ๋ผ์ ์๋ ๊ธฐ์กด์ ์๋ ๊ฒ์ ๋ค์ ๋ ๋ณด์ฌ์ฃผ๋ค ๋ณด๋ create๋, mount๊ฐ ๋์ํ์ง ์๋ ๊ฒ์ด์์.
ํ์ด์ง๋ฅผ ๋ง์ด ๋ง๋ค๋ค๋ณด๋ฉด ๋ง์ถ์ง๋ ๋ฌธ์ ์
๋ ๋ค๋ฅธ ์์๋ ํ๋์ ์นดํ
๊ณ ๋ฆฌ์ ์๋ ์ํ๋ฑ์ ํด๋ฆญ ํ์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ ๊ฒ์ด์์.
์๋ฅผ ๋ค์ด ์ธํฐ๋ท ์ผํ๋ชฐ์์ ๋ฌผ๊ฑด์ ๊ตฌ๋งคํ๋ ค๊ณ ํ ๋, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํน์ ์นดํ
๊ณ ๋ฆฌ์ ๋ค์ด๊ฐ์ ๋
ธ์ถ๋ ์ํ์ ๋ณด๋ ๊ฒ์ด์์. ๊ทธ๋ฆฌ๊ณ , ๊ทธ ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ์ด์์. ์ด ๋, ์ฃผ์์ฐฝ์ ๋ณด๋ฉด ์ฃผ์๊ฐ Path Variable ๋๋ Query String ๋ฑ์ผ๋ก ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์. ๋ฐ๋ก API๋ก ํต์ ์ ํด์ ํด๋ฆญ์ ํ ์น๊ตฌ์ Param์ผ๋ก ๋ฃ์ด ๋ณด๋ด๋ ๊ฒ์ธ๋ฐ, ์ด ๋๊น์ง๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด์ ๋ฌธ์ ๊ฐ ์์ ๋๋ ๊ฒ์ด์์.
# Samsung Laptop ๊ตฌ๋งค ํ์ด์ง
/samsung/laptop
# Samsung Mobile ๊ตฌ๋งค ํ์ด์ง
/samsung/mobile
์ฐ๋ฆฌ๊ฐ ๋
ธํธ๋ถ ํ์ด์ง๋ฅผ ์ด๋ํ๊ณ , ๋ฐ๋ก ํธ๋ํฐ ํ์ด์ง๋ก ์ด๋ํ๋ค๊ณ ํ์ ๋, Page๊ฐ Load ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด์์. ์ด ๋ ๋ค์ samsung Page๋ก ์ด๋ํ ๋ค, mobile Page๋ก ์ด๋ํ๋ฉด Page๋ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ด์์.
๊ทธ ์ด์ ๋ ๋ฐ๋ก router view์ Key๋ฅผ Bindding ํ์ง ์์์ ๋ฐ์ํ๋ ๊ฒ์ด์์.
<router-view :key="$route.fullPath"/>
key๋ฅผ ํตํด ๊ฒฝ๋ก ๊ฐ์ฒด ์์ฑ์ ๊ฐ์ ๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๊ฒ์ด์์. ๋ณด์ฌ์ง๋ ํ๋ฉด์ Query ๋ฐ Hash๊ฐ ํฌํจ๋ ์ ์ฒด URL์ ์ฐ๊ฒฐํ์ฌ Query Sring์ด ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ์ฆ, ํ์ํ๋ Event๊ฐ ๋ฐ์ํ ๋ ๋ง๋ค Page๋ฅผ ๋ค์ Loadํ์ฌ ๋ ธ์ถ์ํค๋ ๋ฐฉ๋ฒ์ธ ๊ฒ์ด์์.
์ด ๋ฐฉ๋ฒ ์ธ์ ์๋ ๋ฐฉ๋ฒ๋ ์๋ ๊ฒ์ด์์.
<router-view :key="$route.path" />
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๋ ๋ฐฉ๋ฒ ์ค์ ์๋ ๋ด์ฉ์ ์ด์ฉํ์ฌ ํด๊ฒฐํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด์์.
<router-view :key="$route.fullpath">
๊ทธ๊ฒ์ ์์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ ์ํ๊น์ด ์ฌ๊ฑด์ด ๋ฐ์ํ๋ ๊ฒ์ด์์. ๊ณ์ํด์ ์ ํ๋ฉด์ ์ถ๋ ฅํจ์ผ๋ก์จ, ์ฐ๋ ๊ธฐํต์ ๋ฒ๋ฆฌ๊ณ , ์๋ก์ด ๊ฑฐ ๋ค์ ์ฌ๋ฆฌ๊ณ , ๋ฒ๋ฆฌ๊ณ ๋ฅผ ๊ณ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด์์.
์์ ๋ญ๋น๋ฅผ ์ค์ด๋ฉฐ, ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ ์ฌ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก๋ watch๋ก route params๋ฅผ ๊ฐ์ํ์ฌ ํด๋น ๊ฐ์ด ๋ณํ์ ๋ฐ๋ผ ๋ก์ง์ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ด์์.
์์ ์ฝ๋
created() {
this.$watch(
() => this.$route.params,
(toParams, previousParams) => {
// react to route changes…
}
)
},
route key๋ฅผ ์ฌ์ฉํ์ ๋ Log
hi๋ผ๋ ๋ฌธ์์ด์ด ์ต์์ ์ปดํฌ๋ํธ์ธ๋ฐ, ํ๋ผ๋ฏธํฐ๊ฐ์ ๋ฐ๋ผ ๊ณ์ ์ธ๋ฐ์์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
fullpath๋ฅผ ์ฌ์ฉ ์ํ์ ๋ Log
์์ ๊ทธ๋ฆผ์ ์ต์์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ hi๋ผ๋ ๋ฌธ์์ด์ ์์ฑ๋ ์ด๊ธฐ ๋น์์๋ง ํ๊ธฐ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
๐ฆ <script> ๋ด์ฉ
์ด ๊ณณ์์๋ <template>์์ ์์ฑ๋ DOM์ ์ค์ง์ ์ผ๋ก Handling ํ๊ธฐ ์ํด javascript ๋ฑ์ ์ด์ฉํด์ Coding์ ํ๋ ๋ถ๋ถ์ธ ๊ฒ์ด์์.
๋จผ์ ์ฃผ๋ํ๋์ Hader์ Footer component๋ฅผ Importํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด Import๋ฌธ์ ์์ฑํ ๊ฒ์ด์์.
import TheHeaders from "@/views/include/myHead.vue";
import TheFooters from "@/views/include/myFooter.vue";
๊ทธ๋ฐ ๋ค์ 20 ~ 23๋ฒ์งธ ์ค์ export default - componets์ import ์์ ์์ฑํ Component ์ด๋ฆ์ ๋ฑ๋ก ํด ์ค ๊ฒ์ด์์.
data()๋ ์ด๋ค ๋ณ์๋ ๋ฐฐ์ด ๋ฑ์ ์ ์ธํ๋ ๊ณณ์ธ๋ฐ, ์๋ฐ๋ก ์น๋ฉด ์์ฑ์์์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ์ด๊ธฐํ๋ฅผ ํ๋ ๊ณณ์ด๋ผ๊ณ ์ฃผ๋ํ๋์ ์ดํดํ ๊ฒ์ด์์.
์ด๊ณณ 26 ~ 28 ๋ฒ์งธ ์ค์ ํน๋ณํ ๋ณ์ ๋ฑ์ด ํ์์์ด ๊ทธ๋ฅ ์ ์ธ๋ง ํด ๋์ ๊ฒ์ด๊ณ , 30๋ฒ์งธ ์ค์๋ ํจ์๋ฅผ ์ ์ธํ๋ ๊ณณ์ธ๋ฐ, ์ญ์ ํน๋ณํ ํจ์๊ฐ ํ์ ์์ด ์ ์ธ๋ง ํด ๋์ ๊ฒ์ด์์.
๐ฆ <style> Tag ๋ด์ฉ
์ด ๊ณณ์ CSS๊ฐ ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ธ ๊ฒ์ด์์.
์ฃผ๋ํ๋์ ๊ณตํต์ ์ผ๋ก CSS๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ style์ด๋ผ๋ css ํ์ผ์ ๋ง๋ค๊ณ , ๊ทธ๊ฒ์ url()์ ์ด์ฉํด์ importํ ๊ฒ์ด์์.
๐ฝ myHome.vue
์ผ๋จ ์ด component์ ์ด๋ฆ์ ์ด๋ ๊ฒ ์ง์ ์ด์ ๋ eslint Error ๋๋ฌธ์ธ ๊ฒ์ด์์.
์ด๊ฒ Home์ผ๋ก ์ด๋ฆ์ ์ง์ผ๋ฉด multi-word๋ผ๊ณ Error๊ฐ ๋ฐ์ํ๋๋ฐ, ์์ฃผ ๋ฏธ์น๊ฒ ๋ ๊ฒ์ด์์.
์ค๋ฌด์ ๋ถ๊ป์ ์กฐ์ธ ํด ์ฃผ์๊ธธ ์ด๊ฑธ Disable ์ํฌ ์๋ ์์ง๋ง, ์ด ๋ด์ฉ์ ๋ฐ๋ผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ์ฌ ์์ ๊ทธ๋ฅ ์ด๋ฆ์ ๋ณ๊ฒฝํ ๊ฒ์ด์์. ํด๋น Error ๊ด๋ จ ๋ด์ฉ์ '์ด ๊ณณ'์ ์ ์ ๋ฆฌํด์ ์ค๋น ํด ๋๊ฒ์!
๐ฆ <template> Tag ๋ด์ฉ
๋ณธ๊ฒฉ์ ์ผ๋ก Component๋ฅผ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด์์.
ํด๋น ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ HTML Tag์ CSS๋ ๊ฐ๊ฐ ๋ฐ๋ก ์ ๋ฆฌ๋ฅผ ํด ๋ ๊ฒ์ด์์.
์์ ํํ์ด์ง ๊ทธ๋ฆผ์ ๋ณด์ จ๋ฏ์ด ๋ฉ์ธ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์๋จ์๋ Navigation์ ๋ง๋ค๊ณ , Header์ Contents ๋ถ๋ฅผ ๋๋๊ธฐ ์ํด
์ด๋ ๊ฒ ๊ตฌ๋ถ์ ํด ์ค ๊ฒ์ด์์.
๊ทธ๋ฆฌ๊ณ , ์ปจํ ์ธ ๋ถ์๋ ๊ฒ์ํ์ ๋ค์ด๊ฐ ์ ์๊ฒ ์์ ์ ํ ๊ฒ์ด๊ณ , 61~64๋ฒ์งธ ์ค ์ฒ๋ผ ๊ฐ๋ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ด๋๋งํผ ์ฃผ๋ํ๋์ด ์์ฃผ ์ ์ฉํ๋ ๊ฐ๋ฐ ๊ด๋ จ ์ฌ์ดํธ๋ฅผ ์์ ์๋ ๋ชฉ๋ก์ ๋ง๋ค๊ธฐ ์ํด <ul> <li> tag๋ฅผ ํตํด Logo๋ฅผ ๋ฃ์ด์ค ๊ฒ์ด์์. a Tag๋ ํ์ดํผ๋งํฌ๋ฅผ ์ง์ํ๋ ํ๊ทธ์ด๋ฉฐ, href ์์ฑ์ URL์ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ ํด๋ฆญํ์ ๋, ํด๋น ์ฌ์ดํธ๋ก ์ด๋ํ ์ ์๋ ๊ฒ์ด์์. ๋ง์ฝ href ์์ฑ์ `#`์ ๋ฃ์ด๋๋๋ค๋ฉด ๋ชจ์๋ง ์์ ๋ฟ ๋์ํ์ง ์๋๋ต๋๋ค.
img Tag์ src๋ ํด๋น ์ด๋ฏธ์ง์ ์์น๋ฅผ ์ง์ ํด ์ฃผ๋ ๊ณณ์ธ๊ฒ์ด์์. ๊ทผ๋ฐ ์? require๋ฅผ ๋ ์ถ๊ฐํด์ฃผ์์๊น์? ๊ทธ ์ด์ ๋ require๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด src์ ์ ๋ ฅ๋ img Path๋ ๋จ์ ๋ฌธ์์ด๋ก ์ธ์์ด ๋๋ ๊ฒ์ด์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์์น ๊ฐ์ผ๋ก ์ธ์ ์์ผ์ฃผ๊ธฐ ์ํด ์ ๋ ฅ์ ํด ์ฃผ์๋ต๋๋ค.
alt์์ฑ์ ํด๋น ์ด๋ฏธ์ง๊ฐ ๋์ค์ง ์์ ๋, ๋์ ๋ณด์ฌ์ค ๋ฌธ์์ด์ ์ง์ ํ๋ ๊ฒ์ด์์.