Nuxt.js์ View๋ app template
๊ณผ Layout
, Page
๋ก ๊ตฌ์ฑ๋๋ค. SEO ์ต์ ํ๋ฅผ ์ํดํ์ด์ง ๋ณ๋ก meta ํ๊ทธ์ head ์น์
์ ๊ตฌ์ฑํ ์ ์๋ค.
#
Pages๋ชจ๋ ํ์ด์ง ์ปดํฌ๋ํธ๋ ๋ทฐ ์ปดํฌ๋ํธ์ด๋ค. ํ์ง๋ง Nuxt.js๋ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋กํน๋ณํ ์์ฑ๋ค๊ณผ ํจ์๋ค์ ์ถ๊ฐํ๋ค.
๋ชจ๋ ํ์ด์ง ์์ฑ์ ๋ณด๋ ค๋ฉด Directory Structure๋ฅผ์ฐธ๊ณ
#
Layouts๋ ์ด์์์ Nuxt.js ์ฑ์ Look & Feel์ ๋ณ๊ฒฝํ ๋ ์ ์ฉํ๋ค. (์๋ฅผ ๋ค์ด ์ฌ์ด๋๋ฐ)
๋ ์ด์์์ layouts
๋๋ ํ ๋ฆฌ์ ์ถ๊ฐํ๋ค.
default.vue
ํ์ผ์ ๊ธฐ๋ณธ ๋ ์ด์์์ ์ ์ํ๋ค.
<template> <Nuxt /></template>
๋ ์ด์์์๋
<Nuxt />
์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋์ ์ถ๊ฐํด์ผ ํ๋ค.
๊ธฐ๋ณธ ๋ ์ด์์ ์ธ์ ์ปค์คํ
๋ ์ด์์์ layouts
ํด๋์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์์ฑํ์ฌ ๋ง๋ค ์ ์๋ค.
<template> <div> <div>My blog navigation bar here</div> <Nuxt /> </div></template>
์ด๋ ๊ฒ ์์ฑํ ๋ ์ด์์์ ์ฌ์ฉํ๋ ค๋ฉด, page
์ปดํฌ๋ํธ์์ layout
์์ฑ์ ํ์ผ ์ด๋ฆ์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
<template> <!-- Your template --></template><script> export default { layout: 'blog', // page component definitions };</script>
#
Error Page์๋ฌ ํ์ด์ง๋ ์๋ฌ๊ฐ ๋ฐ์ํ ๋(404
, 500
, ๋ฑ๋ฑ) ํ์๋๋ ํ์ด์ง ์ปดํฌ๋ํธ์ด๋ค.
์๋ฌ ํ์ด์ง๋ ๋ ์ด์์์ด์ง๋ง, ์๋ฌ๊ฐ ๋ฐ์ํ ๋ ํ์๋๋ ํน๋ณํ ์ปดํฌ๋ํธ๋ก ๋ด์ผํ๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ๋ ์ด์์ ์ปดํฌ๋ํธ์ ๋ฌ๋ฆฌ <Nuxt />
์ปดํฌ๋ํธ๋ฅผ ํฌํจํด์ ์๋๊ณ , layouts
๋๋ ํ ๋ฆฌ์ ์์นํด์ผ ํ๋ค. ๋ค๋ฅธ ํ์ด์ง ์ปดํฌ๋ํธ์ฒ๋ผ ๋ค๋ฅธ ๋ ์ด์์์์ฌ์ฉํ ์ ์๋ค.
<template> <div> <h1 v-if="error.statusCode === 404">Page not found</h1> <h1 v-else>An error occurred</h1> <NuxtLink to="/">Home page</NuxtLink> </div></template>
<script> export default { props: ['error'], layout: 'error', // you can set a custom layout for the error page };</script>
#
Document: App.htmlApp ํ ํ๋ฆฟ์ head์ body์ ๋ํ ์ปจํ ์ธ ์ ๋ณ์๋ฅผ ์ฃผ์ ํ๋ Nuxt.js ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ HTML ํ๋ ์์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ค.
์ด ํ์ผ์ ์๋์ ์ผ๋ก ์์ฑ๋๊ณ , ์ผ๋ฐ์ ์ผ๋ก ์์ ํ ํ์๊ฐ ๊ฑฐ์ ์๋ค.
ํ ๊ฐ์ง ์ฌ์ฉ ์์๋ IE์ ๋ํ ์กฐ๊ฑด๋ถ CSS ๋์์ด๋ค.
<!DOCTYPE html><!--[if IE 9]><html class="lt-ie9 ie9" {{ HTML_ATTRS }}><![endif]--><!--[if (gt IE 9)|!(IE)]><!--><html {{ HTML_ATTRS }}><!--<![endif]--> <head {{ HEAD_ATTRS }}> {{ HEAD }} </head> <body {{ BODY_ATTRS }}> {{ APP }} </body></html>