Solid Meta๋ก SolidJS์ ๋ฌธ์ ํค๋ ๊ด๋ฆฌ๋ฅผ ๋ง์คํฐํ์ธ์. SEO ์ต์ ํ, ์ฌ์ฉ์ ๊ฒฝํ ํฅ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ฆ์ง ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ธ์.
Solid Meta: SolidJS์์์ ๋ฌธ์ ํค๋ ๊ด๋ฆฌ๋ฅผ ์ํ ์ต์ข ๊ฐ์ด๋
๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ธ๊ณ์์, ๊ฒ์ ์์ง, ์์
๋ฏธ๋์ด, ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ ํํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ๋์ ์ด๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ธ SolidJS๋ ๋ฐ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๊ฐ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. SolidJS๊ฐ ์ปดํฌ๋ํธ ๋ ๋๋ง๊ณผ ์ํ ๊ด๋ฆฌ์์ ๋ฐ์ด๋์ง๋ง, ๋ฌธ์ ํค๋, ํนํ <title>
, <meta>
ํ๊ทธ ๋ฐ ๊ธฐํ ์ค์ํ ์์๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋๋ก ๋ฒ๊ฑฐ๋กญ๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ Solid Meta๊ฐ ๋ฑ์ฅํ์ฌ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฌธ์ ํค๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ์ธ์ ์ด๊ณ ํจ์จ์ ์ธ ์๋ฃจ์
์ ์ ๊ณตํฉ๋๋ค.
Solid Meta๋ ๋ฌด์์ธ๊ฐ?
Solid Meta๋ SolidJS๋ฅผ ์ํด ํน๋ณํ ์ค๊ณ๋ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌธ์ ํค๋ ์์๋ค์ ์ค์ ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๊ณผ์ ์ ๋จ์ํํ์ฌ, ๊ฐ๋ฐ์๋ค์ด ๋ณต์กํ DOM ์กฐ์์ด๋ ์์ฉ๊ตฌ ์ฝ๋์ ์จ๋ฆํ์ง ์๊ณ ๋ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ง์คํ ์ ์๊ฒ ํด์ค๋๋ค. SolidJS์ ๋ฐ์์ฑ๊ณผ ์ ์ธ์ ํน์ฑ์ ํ์ฉํ์ฌ, Solid Meta๋ ๊ฐ๋ฐ์๋ค์ด SolidJS ์ปดํฌ๋ํธ ๋ด์์ ์ง์ ๋ฌธ์ ํค๋ ์์๋ฅผ ์ ์ํ ์ ์๋๋ก ํฉ๋๋ค.
Solid Meta๋ฅผ ์ฌ์ฉํ๋ ์ด์
Solid Meta๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ค์ํ ์ด์ ์ด ์์ต๋๋ค:
- ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์: ๋ฉํ ํ๊ทธ์ ์ ๋ชฉ ์์๋ฅผ SolidJS ์ปดํฌ๋ํธ ๋ด์์ ์ ์ํ์ฌ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ข๊ฒ ๋ง๋ญ๋๋ค. ๋ ์ด์ ๋ช ๋ นํ DOM ์กฐ์์ ํ์ ์์ต๋๋ค!
- ๋ฐ์์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์ํ ๋ณํ์ ๋์ํ์ฌ ๋ฌธ์ ํค๋๋ฅผ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด๋ ๋์ ์ผ๋ก ๋ก๋๋๋ ์ ๋ชฉ๊ณผ ์ค๋ช ์ด ์๋ ์ ํ ํ์ด์ง์ ๊ฐ์ ๋์ ์ฝํ ์ธ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: Solid Meta๋ ์ฑ๋ฅ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ต๋๋ค. ๋ฌธ์ ํค๋์์ ํ์ํ ์์๋ง ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ๋ ๋๋ง ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํฉ๋๋ค.
- SEO ์ด์ : ๋ฌธ์ ํค๋๋ฅผ ์ ์ ํ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ฒ์ ์์ง ์ต์ ํ(SEO)์ ํ์์ ์ ๋๋ค. Solid Meta๋ ๊ฒ์ ๊ฒฐ๊ณผ์์ ์น์ฌ์ดํธ์ ๊ฐ์์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ์ ๋ชฉ ํ๊ทธ, ๋ฉํ ์ค๋ช ๋ฐ ๊ธฐํ ์ค์ํ ์์๋ค์ ์ค์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ์์ ๋ฏธ๋์ด ํตํฉ: ์คํ ๊ทธ๋ํ(Open Graph) ๋ฐ ํธ์ํฐ ์นด๋(Twitter Card) ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฏธ๋์ด ํ๋ซํผ์์ ๊ณต์ ๋ ๋ ์น์ฌ์ดํธ๊ฐ ํ์๋๋ ๋ฐฉ์์ ๊ฐ์ ํ์ฌ ์ฝํ ์ธ ๋ฅผ ๋ ๋งค๋ ฅ์ ์ด๊ณ ๊ณต์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๋จ์ํ๋ ๊ด๋ฆฌ: ํฌ๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฌธ์ ํค๋ ๊ตฌ์ฑ์ ์ฒด๊ณ์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ์งํฉ๋๋ค.
Solid Meta ์์ํ๊ธฐ
Solid Meta ์ค์น๋ ๊ฐ๋จํฉ๋๋ค. npm์ด๋ yarn๊ณผ ๊ฐ์ ์ ํธํ๋ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
npm install solid-meta
๋๋
yarn add solid-meta
์ค์น ํ, SolidJS ์ปดํฌ๋ํธ ๋ด์์ Meta
์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Meta
์ปดํฌ๋ํธ๋ ๋ฌธ์ ํค๋ ์์๋ฅผ ์ ์ํ๊ธฐ ์ํด ๋ค์ํ props๋ฅผ ๋ฐ์ต๋๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ: ์ ๋ชฉ ๋ฐ ์ค๋ช ์ค์ ํ๊ธฐ
๋ค์์ Solid Meta๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง ์ ๋ชฉ๊ณผ ๋ฉํ ์ค๋ช ์ ์ค์ ํ๋ ๊ฐ๋จํ ์์ ์ ๋๋ค:
import { Meta } from 'solid-meta';
import { createSignal } from 'solid-js';
function HomePage() {
const [title, setTitle] = createSignal('My Website');
const [description, setDescription] = createSignal('Welcome to my website!');
return (
<div>
<Meta
title={title()}
description={description()}
/>
<h1>Home Page</h1>
<p>This is the home page content.</p>
<button onClick={() => {
setTitle('Updated Title');
setDescription('Updated Description');
}}>Update Title & Description</button>
</div>
);
}
export default HomePage;
์ด ์์ ์์:
solid-meta
์์Meta
์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.- SolidJS์
createSignal
์ ์ฌ์ฉํ์ฌ ๋ฐ์ํ ์ ๋ชฉ ๋ฐ ์ค๋ช ์๊ทธ๋์ ์์ฑํฉ๋๋ค. - ์ ๋ชฉ๊ณผ ์ค๋ช
์๊ทธ๋์
Meta
์ปดํฌ๋ํธ์ props๋ก ์ ๋ฌํฉ๋๋ค. - ๋ฒํผ์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ฐ๋ผ ์ ๋ชฉ๊ณผ ์ค๋ช ์ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๊ณ ๊ธ ์ฌ์ฉ๋ฒ: ์คํ ๊ทธ๋ํ ๋ฐ ํธ์ํฐ ์นด๋
Solid Meta๋ ํ์ด์ค๋ถ, ํธ์ํฐ, ๋งํฌ๋์ธ๊ณผ ๊ฐ์ ์์ ๋ฏธ๋์ด ํ๋ซํผ์์ ์น์ฌ์ดํธ๊ฐ ๊ณต์ ๋ ๋ ์ด๋ป๊ฒ ํ์๋๋์ง๋ฅผ ์ ์ดํ๋ ๋ฐ ํ์์ ์ธ ์คํ ๊ทธ๋ํ(Open Graph) ๋ฐ ํธ์ํฐ ์นด๋(Twitter Card) ๋ฉํ ํ๊ทธ ์ค์ ๋ ์ง์ํฉ๋๋ค. ์ด ํ๊ทธ๋ค์ ์ฌ์ฉํ๋ฉด ํ์ด์ง ์ ๋ชฉ, ์ค๋ช , ์ด๋ฏธ์ง ๋ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
import { Meta } from 'solid-meta';
function ProductPage(props) {
const product = props.product;
return (
<div>
<Meta
title={product.name}
description={product.description}
openGraph={{
title: product.name,
description: product.description,
image: product.imageUrl,
url: `https://example.com/products/${product.id}`,
type: 'product',
}}
twitter={{
card: 'summary_large_image',
title: product.name,
description: product.description,
image: product.imageUrl,
creator: '@yourTwitterHandle',
}}
/>
<h1>{product.name}</h1>
<p>{product.description}</p>
</div>
);
}
export default ProductPage;
์ด ์์ ์์:
Meta
์ปดํฌ๋ํธ ๋ด์openGraph
์twitter
props๋ฅผ ์ ์ํฉ๋๋ค.openGraph
prop์ ์ฌ์ฉํ๋ฉดtitle
,description
,image
,url
,type
๊ณผ ๊ฐ์ ์คํ ๊ทธ๋ํ ํ๊ทธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.twitter
prop์ ์ฌ์ฉํ๋ฉดcard
,title
,description
,image
,creator
์ ๊ฐ์ ํธ์ํฐ ์นด๋ ํ๊ทธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.- ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์์ค์์ ๊ฐ์ ธ์จ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ธฐํ ์ฌ์ฉ ๊ฐ๋ฅํ Props
Meta
์ปดํฌ๋ํธ๋ ๋ค์ํ ์ข
๋ฅ์ ๋ฉํ ํ๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ค๋ฅธ props๋ฅผ ์ง์ํฉ๋๋ค:
title
: ํ์ด์ง ์ ๋ชฉ์ ์ค์ ํฉ๋๋ค.description
: ๋ฉํ ์ค๋ช ์ ์ค์ ํฉ๋๋ค.keywords
: ๋ฉํ ํค์๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ฐธ๊ณ : ํค์๋๋ ์์ ๋ณด๋ค SEO์ ๋ ์ค์ํด์ก์ง๋ง, ํน์ ์ํฉ์์๋ ์ฌ์ ํ ์ ์ฉํ ์ ์์ต๋๋ค.canonical
: ํ์ด์ง์ ํ์ค URL์ ์ค์ ํฉ๋๋ค. ์ด๋ ์ค๋ณต ์ฝํ ์ธ ๋ฌธ์ ๋ฅผ ํผํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.robots
: ๋ก๋ด ๋ฉํ ํ๊ทธ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค (์:index, follow
,noindex, nofollow
).charset
: ๋ฌธ์ ์งํฉ์ ์ค์ ํฉ๋๋ค (๋ณดํต 'utf-8').og:
(์คํ ๊ทธ๋ํ): ์คํ ๊ทธ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค (์:og:title
,og:description
,og:image
,og:url
).twitter:
(ํธ์ํฐ ์นด๋): ํธ์ํฐ ์นด๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค (์:twitter:card
,twitter:title
,twitter:description
,twitter:image
).link
: link ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์์: ํ๋น์ฝ ์ค์ :link={{ rel: 'icon', href: '/favicon.ico' }}
style
: style ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค (์๋ฅผ ๋ค์ด CSS ์ถ๊ฐ์ฉ).script
: script ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค (์๋ฅผ ๋ค์ด ์ธ๋ผ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ํฌํจ์ฉ).
๋ฌธ์ ํค๋ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Solid Meta์ ์ด์ ์ ๊ทน๋ํํ๊ณ ์ต์ ์ ์ฑ๋ฅ๊ณผ SEO๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ์ค๋ช ์ ์ธ ์ ๋ชฉ ์ฌ์ฉ: ๊ฐ ํ์ด์ง์ ๋ด์ฉ์ ์ ํํ๊ฒ ๋ฐ์ํ๊ณ ๊ด๋ จ ํค์๋๋ฅผ ํฌํจํ๋ ๋งค๋ ฅ์ ์ธ ์ ๋ชฉ์ ์์ฑํ์ญ์์ค.
- ๋งค๋ ฅ์ ์ธ ์ค๋ช ์์ฑ: ์ฌ์ฉ์๊ฐ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํด๋ฆญํ๋๋ก ์ ๋ํ๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ตํ ๋ฉํ ์ค๋ช ์ ๋ง๋์ญ์์ค. ์ฝ 150-160์๋ฅผ ๋ชฉํ๋ก ํ์ญ์์ค.
- ์คํ ๊ทธ๋ํ ๋ฐ ํธ์ํฐ ์นด๋์ฉ ์ด๋ฏธ์ง ์ต์ ํ: ์ด๋ฏธ์ง๊ฐ ์์ ๋ฏธ๋์ด ๊ณต์ ์ ์ ํฉํ ํฌ๊ธฐ๋ก ์ต์ ํ๋์๋์ง ํ์ธํ์ญ์์ค. ๊ถ์ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ ํ๋ซํผ๋ง๋ค ๋ค๋ฆ ๋๋ค.
- ํ์ค URL ์ ๊ณต: ํนํ ์ฌ๋ฌ URL์ด๋ ๋ณํ์ด ์๋ ํ์ด์ง์ ๊ฒฝ์ฐ, ์ค๋ณต ์ฝํ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ ํ์ด์ง์ ํญ์ ํ์ค URL์ ์ง์ ํ์ญ์์ค.
- ๋ก๋ด ๋ฉํ ํ๊ทธ ์ ๋ต์ ์ฌ์ฉ:
robots
๋ฉํ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ ์ฝํ ์ธ ๋ฅผ ์ธ๋ฑ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ธ๋ฑ์ฑ์ ์ํ์ง ์์ง๋ง ํ์ด์ง ๋ด ๋งํฌ๋ ๋ฐ๋ผ๊ฐ๊ฒ ํ๋ ค๋ฉดnoindex, follow
๋ฅผ ์ฌ์ฉํ์ญ์์ค. ํ์ด์ง๋ ์ธ๋ฑ์ฑํ๋ ๋งํฌ๋ ๋ฐ๋ผ๊ฐ์ง ์๊ฒ ํ๋ ค๋ฉดindex, nofollow
๋ฅผ ์ฌ์ฉํ์ญ์์ค. - ๋์ ์ฝํ ์ธ ์ฒ๋ฆฌ: ๋์ ์ผ๋ก ์์ฑ๋ ์ฝํ ์ธ (์: ์ ํ ํ์ด์ง)์ ๊ฒฝ์ฐ, ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฌธ์ ํค๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๋๋์ง ํ์ธํ์ญ์์ค. Solid Meta์ ๋ฐ์์ฑ ๋๋ถ์ ์ด ์์ ์ด ์ฌ์์ง๋๋ค.
- ํ ์คํธ ๋ฐ ๊ฒ์ฆ: Solid Meta๋ฅผ ๊ตฌํํ ํ, ๋ค์ํ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ๋ฅผ ์ฒ ์ ํ ํ ์คํธํ์ฌ ๋ฌธ์ ํค๋ ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋์ง ํ์ธํ์ญ์์ค. ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๊ทธ๋ํ ๋ฐ ํธ์ํฐ ์นด๋ ๋งํฌ์ ์ ๊ฒ์ฆํ์ญ์์ค.
- ์๋ฒ ์ธก ๋ ๋๋ง(SSR) ๊ณ ๋ ค: SolidJS์ ํจ๊ป SSR์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด(์: Solid Start์ ๊ฐ์ ํ๋ ์์ํฌ ์ฌ์ฉ), Solid Meta๋ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. ์ด๊ธฐ ๋ ๋๋ง์ ์ํด ์๋ฒ ์ธก์์ ๋ฉํ ํ๊ทธ๋ฅผ ์ ์ํ์ฌ SEO์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ต์ ์ํ ์ ์ง: ์ต์ ๊ธฐ๋ฅ, ์ฑ๋ฅ ๊ฐ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ ์ด์ ์ ๋๋ฆฌ๋ ค๋ฉด Solid Meta์ SolidJS๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค.
์์ : ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๋ฉํ ํ๊ทธ ๊ด๋ฆฌ
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๋ฉํ ํ๊ทธ๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ ์์ ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๊ฒ์๋ฌผ ๋ฐ์ดํฐ๋ฅผ prop์ผ๋ก ๋ฐ๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค:
import { Meta } from 'solid-meta';
function BlogPost({ post }) {
return (
<div>
<Meta
title={post.title}
description={post.excerpt}
keywords={post.tags.join(', ')}
canonical={`https://yourwebsite.com/blog/${post.slug}`}
openGraph={{
title: post.title,
description: post.excerpt,
image: post.featuredImage,
url: `https://yourwebsite.com/blog/${post.slug}`,
type: 'article',
published_time: post.publishedAt,
author: post.author.name,
}}
twitter={{
card: 'summary_large_image',
title: post.title,
description: post.excerpt,
image: post.featuredImage,
creator: `@${post.author.twitterHandle}`,
}}
/>
<h1>{post.title}</h1>
<p>{post.content}</p>
</div>
);
}
export default BlogPost;
์ด ์์ ์์:
- ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ๋ฐ์ดํฐ๋ฅผ
BlogPost
์ปดํฌ๋ํธ์ prop์ผ๋ก ์ ๋ฌํฉ๋๋ค. Meta
์ปดํฌ๋ํธ๋ ๊ฒ์๋ฌผ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ชฉ, ์ค๋ช , ํค์๋, ํ์ค URL, ์คํ ๊ทธ๋ํ ํ๊ทธ ๋ฐ ํธ์ํฐ ์นด๋ ํ๊ทธ๋ฅผ ๋์ ์ผ๋ก ์ค์ ํฉ๋๋ค.- ์ด๋ฅผ ํตํด ๊ฐ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ SEO ๋ฐ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฅผ ์ํด ๊ณ ์ ํ๊ณ ์ต์ ํ๋ ๋ฉํ ํ๊ทธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ํ์ค URL์ ๋์ ์ผ๋ก ์์ฑํ๊ธฐ ์ํด ๋ฐฑํฑ(`)์ ์ฌ์ฉํ ์ ์ ์ ์ํ์ญ์์ค.
- ์คํ ๊ทธ๋ํ ํ๊ทธ์๋ ํ๋ถํ ๊ณต์ ๊ฒฝํ์ ๋ง๋ค๊ธฐ ์ํด ๋ฐํ ์๊ฐ๊ณผ ์ ์ ์ด๋ฆ์ด ํฌํจ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๋ฐ ํด๊ฒฐ์ฑ
Solid Meta๊ฐ ๋ฌธ์ ํค๋ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ์ง๋ง, ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค:
- ๋์ ์ ๋ฐ์ดํธ๊ฐ ์๋ํ์ง ์์: ๋ฉํ ํ๊ทธ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ์ธ์ง ํ์ธํ์ญ์์ค. API์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ SolidJS์ ์๊ทธ๋์ด๋ ์คํ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋๋๋ก ํ์ฌ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฌธ์ ํค๋์ ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๋๋ก ํ์ญ์์ค.
- ์๋ชป๋ ์คํ ๊ทธ๋ํ ์ด๋ฏธ์ง: ์ด๋ฏธ์ง URL์ด ์ฌ๋ฐ๋ฅด๊ณ ์์ ๋ฏธ๋์ด ํฌ๋กค๋ฌ๊ฐ ์ด๋ฏธ์ง์ ์ ๊ทผํ ์ ์๋์ง ํ์ธํ์ญ์์ค. ์ด๋ฏธ์ง ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์ ๋ฏธ๋์ด ๋๋ฒ๊น ๋๊ตฌ(์: Facebook์ ๊ณต์ ๋๋ฒ๊ฑฐ ๋๋ Twitter์ ์นด๋ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ)๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ์ค๋ณต๋ ๋ฉํ ํ๊ทธ: ์ค์๋ก ์ฌ๋ฌ
Meta
์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์๋์ผ๋ก ๋ฉํ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ก ํ์ญ์์ค. Solid Meta๋ ์ฃผ์ด์ง ํ์ด์ง์ DOM์ ์๋ ๋ชจ๋ ํค๋ ์์๋ฅผ ๊ด๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. - ์ฑ๋ฅ ๋ณ๋ชฉ ํ์: ํนํ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋ ๋
Meta
์ปดํฌ๋ํธ ๋ด์์ ๋ณต์กํ ๋ก์ง์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋กํ์ผ๋งํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ์ญ์์ค. - SSR์ ๋ณต์ก์ฑ: ์๋ฒ ์ธก ๋ ๋๋ง(SSR) ํ๋ ์์ํฌ๊ฐ solid-meta์ ์ ๋๋ก ํตํฉ๋๋์ง ํ์ธํ์ญ์์ค. solid-start๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ถ๋ถ์ด ์ด๋ฏธ ์ฒ๋ฆฌ๋์ง๋ง, ์์ฒด ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ์ ํ์ธํด์ผ ํฉ๋๋ค.
๊ฒฐ๋ก
Solid Meta๋ SolidJS ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฌธ์ ํค๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ์ฐ์ํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ๊ณ SolidJS์ ๋ฐ์์ฑ์ ํ์ฉํ์ฌ ๊ฒ์ ์์ง, ์์ ๋ฏธ๋์ด ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๊ฒ ์น์ฌ์ดํธ๋ฅผ ์ฝ๊ฒ ์ต์ ํํ ์ ์์ต๋๋ค. ์น์ฌ์ดํธ์ ๋ฌธ์ ํค๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ๊ตฌํ์ ์ฒ ์ ํ ํ ์คํธํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. Solid Meta๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ SEO ์นํ์ ์ธ SolidJS ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ฌ์์ก์ต๋๋ค. Solid Meta์ ํ์ ๋ฐ์๋ค์ฌ ์น ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์์ค์ ํ ๋จ๊ณ ๋์ฌ๋ณด์ธ์!
Solid Meta๋ฅผ SolidJS ํ๋ก์ ํธ์ ํตํฉํจ์ผ๋ก์จ, ์ฌ๋ฌ๋ถ์ ๊ฒฌ๊ณ ํ๊ณ SEO ์นํ์ ์ด๋ฉฐ ์ฌ์ฉ์ ์ฐธ์ฌ๋ฅผ ์ ๋ํ๋ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ํ ๊ฑธ์์ ๋ด๋๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ ํธ์์ฑ๊ณผ ์ฑ๋ฅ ์ต์ ํ ๋๋ถ์ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค์ฐ ๊ท์คํ ๋๊ตฌ๊ฐ ๋์์ต๋๋ค. ์ฆ๊ฑฐ์ด ์ฝ๋ฉ ๋์ธ์!