header-img
Info :
728x90

์˜ค๋Š˜์€ HTML์˜ ๊ธฐ๋ณธ SEO ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
์‚ฌ์œ ๋Š” ๋ช‡์ผ ์ „์˜ ๋‚ด๊ฐ€ TITLE ๋„ ์•ˆ ๋ฐ”๊พธ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฆด๋ป”ํ•œ ์ ์ด ์žˆ์–ด์„œ
๋‚˜๋Š” HTML์— H๋„ ๋ชจ๋ฅด๋Š”๊ตฌ๋‚˜ ๋ผ๊ณ  ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋Œ€์ฐธ์‚ฌ๋Š” ๋ˆˆ์น˜๊ป ๋ง‰์•„๋ƒˆ์ง€๋งŒ..

๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์•„๊ธฐ ์›น์•ฑ ๐Ÿ‘ถ์€ ๋ณด๋‹ค์‹ถ์ด ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

๋…ธ์…˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ•œ์ฐธ ๋กœ๋”ฉ์ด ๊ฑธ๋ฆฌ๋‹ค๊ฐ€ - ๊ทธ๋ƒฅ ๋งํฌ ์ด๋ฆ„๋งŒ ๊ฑธ์–ด์ค€๋‹ค ๐Ÿ˜ฅ


๋Œ€๊ฐ• ์ด๋Ÿฐ ๋Š๋‚Œ์ด๋‹ค.. ์ฝฉ์ง€์•ผ.. ๋‚œ ๋”์ด์ƒ ์•ˆ๋˜๊ฐœ์จ ๐Ÿธ

์ด ์ด์œ ์— ๋Œ€ํ•ด์„œ๋Š” ์‹ฌ๊ฐํ•œ ๊ฑด ์•„๋‹ˆ๊ณ  ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ
HTML ๊ธฐ๋ณธ SEO์— ๋Œ€ํ•ด ์•Œ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๐Ÿต๐Ÿต๐Ÿต


์šฐ์„ 

0. SEO ๋ž€?

Search Engine Optimization์˜ ์•ฝ์ž๋กœ, ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™” ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ,

์›น ์‚ฌ์ดํŠธ์™€ ์›นํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰์—”์ง„์ด ์‰ฝ๊ฒŒ 1) ๋ฐœ๊ฒฌ(discovery)ํ•˜๊ณ , 2) ์ฝ์–ด๊ฐ€์„œ(crawling), 3) ์ƒ‰์ธํ•˜๊ณ (indexing), 4) ์ƒ์œ„ ๋…ธ์ถœ(ranking)์‹œ์ผœ ์ž์—ฐ ์œ ์ž…๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ์–‘๊ณผ ์งˆ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ จ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ์›น์‚ฌ์ดํŠธ์˜ ๊ตฌ์กฐ๋‚˜ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ์ผ๋ จ์˜ ์ž‘์—… ์„ ๋งํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

๋ฌด์กฐ๊ฑด ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ฝ์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ๊ทธ๋Ÿฐ ๋ˆ์ฃผ๊ณ  ์‚ฌ๋Š” ํŒŒ์›Œ๋žญํ‚น๋งํฌ ๊ฐ™์€ ๋Š๋‚Œ์ด ์•„๋‹ˆ๋ผ
๊ฒ€์ƒ‰ ์ด์šฉ์ž์˜ ๊ฒ€์ƒ‰ ์˜๋„์— ์ •๊ตํ•˜๊ฒŒ ์ž˜ ๋งž์ถ˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•œ๋‹ค ๋Š” ๋ง์ด ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”(SEO)์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ ํฌ์ธํŠธ ์ผ ๊ฒƒ์ด๋‹ค. (์•„๋งˆ๋„)

0-1. SEO ์˜ ์š”์†Œ

์›น์‚ฌ์ดํŠธ ๋‚ด์™ธ์— ๋”ฐ๋ผ ์˜จํŽ˜์ด์ง€ SEO ์™€ ์˜คํ”„ํŽ˜์ด์ง€ SEO๊ฐ€ ์žˆ๋‹ค.

  1. ์˜จํŽ˜์ด์ง€SEO : ์›น์‚ฌ์ดํŠธ ๋‚ด์— ์žˆ๋Š” HTML์š”์†Œ, SERVER์š”์†Œ, ํ•ต์‹ฌ ๋ฐ ์—ฐ๊ด€ํ‚ค์›Œ๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค.
  2. ์˜คํ”„ํŽ˜์ด์ง€ SEO : ์›น ์‚ฌ์ดํŠธ ๋ฐ–์—์„œ ํ™œ๋™์„ ํ•˜๋Š” ์†Œ์…œ ๋ฏธ๋””์–ด, ํƒ€ ์›น์‚ฌ์ดํŠธ ๋งํฌ ๋“ฑ์„ ๋งํ•œ๋‹ค.

1) ํ…Œํฌ๋‹ˆ์ปฌSEO(Technical SEO) : ์›น์‚ฌ์ดํŠธ ์†๋„, ๊ตฌ์กฐ ์ธ๋ฑ์‹ฑ, ํƒœ๊น…, ์Šคํ‚ค๋งˆ ๋“ฑ ์›น ๊ฐœ๋ฐœ์— ๊ด€๋ จ๋œ ์˜์—ญ

2) ์˜จ ํŽ˜์ด์ง€SEO(On-page SEO) : ํŽ˜์ด์ง€์˜ ๊ตฌ์„ฑ์š”์†Œ์™€ ์™„์„ฑ๋„, ์ฆ‰ '๊ธ€(ํ‚ค์›Œ๋“œ)'์˜ ํ€„๋ฆฌํ‹ฐ์™€ ๊ด€๋ จ๋œ ์˜์—ญ

3) ์˜คํ”„ํŽ˜์ด์ง€SEO(Off-page SEO) : ๋‚ด ์›น์‚ฌ์ดํŠธ ์™ธ๋ถ€ ์˜์—ญ, ํƒ€ ์‚ฌ์ดํŠธ์—์„œ ๋‚ด ์‚ฌ์ดํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€ํ•˜๊ณ  ์‹ ๋ขฐํ•˜๋Š”์ง€ (domain authority) (์™ธ๋ถ€์‚ฌ์ดํŠธ์—์„œ ๋‚ด ํŽ˜์ด์ง€๋ฅผ ์–ผ๋งˆํผ ๋งํฌ๋กœ ๊ฑธ์–ด์ฃผ๋Š”์ง€)์— ๊ด€ํ•œ ์˜์—ญ

๋‚˜๋จธ์ง€๋Š” ๋””์ž์ด๋„ˆ๋‚˜.. ๋ญ ๋“ฑ๋“ฑ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๊ฒ ์ง€..
๋‚˜๋Š” ํ…Œํฌ๋‹ˆ์ปฌSEO๋ฅผ ์ค‘์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ƒ๊ฐ์ด๋‹ค.

1. ํ…Œํฌ๋‹ˆ์ปฌSEO

1.1 ์ œ๋ชฉ(Title/ํƒ€์ดํ‹€) ํƒœ๊ทธ

์›นํŽ˜์ด์ง€์˜ ๊ณ ์œ  ์ œ๋ชฉ์ด๋ฉฐ ๊ฒ€์ƒ‰์—”์ง„์ด ์›นํŽ˜์ด์ง€๋ฅผ ์ฝ์„ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์ฝ๋Š” ๋‚ด์šฉ
1) ์›น๋ธŒ๋ผ์šฐ์ € ํƒญ ๋ฉ”๋‰ด์—์„œ ๋ณด์—ฌ์ง€๋ฉฐ 2) ๊ตฌ๊ธ€ ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์‹œ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์˜ ์ œ๋ชฉ ์„ ์˜๋ฏธํ•œ๋‹ค.

<title></title>

์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

1.2 ์›นํŽ˜์ด์ง€ ์š”์•ฝ์„ค๋ช…(Meta Description, ๋ฉ”ํƒ€๋””์Šคํฌ๋ฆฝ์…˜)

์ž‘์„ฑ ๊ธธ์ด์˜ ๊ธฐ์ค€๋„ ์žˆ๋‹ค๋Š”๋ฐ.. 1) ๊ตฌ๊ธ€์€ 160์ž ๋ฏธ๋งŒ, 2) ๋„ค์ด๋ฒ„๋Š” 80์ž ๋ฏธ๋งŒ

<meta name="description" content="์„ค๋ช…์“ฐ์‚ผ">

์ด๋Ÿฐ ์–‘์‹์ด๊ณ 

์ด๋ ‡๊ฒŒ ๋จน์ด๋ฉด ๋œ๋‹ค.

1.3 ์ œ๋ชฉํƒœ๊ทธ(Heading Tags, h1~h2)

HTML ๊ตฌ์กฐ์—์„œ ์ œ๋ชฉ, ์†Œ์ œ๋ชฉ ๋ฐ ๋‹จ๋ฝ์„ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฐœ๋…
์›น๋ฌธ์„œ๋ฅผ ์žก์•„์ฃผ๋Š” '๊ธฐ๋ณธ์ ์ธ ๊ณจ๊ฒฉ'์œผ๋กœ ์น˜๋ถ€๋˜๊ธฐ ๋•Œ๋ฌธ์— SEO ์ตœ์ ํ™”์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜.

[ ์ฐธ๊ณ  ]
1) ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ํฌ๊ธฐ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉฐ
2) H1  H2 ํƒœ๊ทธ์˜ ์ˆœ์œผ๋กœ ํฌ๊ธฐ์™€ ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค
3) ๊ทธ๋Ÿฐ ์˜๋ฏธ๋กœ H1 ํƒœ๊ทธ๋Š” ๊ฐ€์žฅ ํฐ ์ œ๋ชฉ(๋Œ€์ฃผ์ œ) ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.
3-1) H1์€ 1๊ฐœ, H2๋Š” 3๊ฐœ๊นŒ์ง€๋งŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ‚ค์›Œ๋“œ ๋ฐ€๋„์— ์ œ์ผ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

์ด์™ธ์—๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋‚˜ ์œ ๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ผ๋Š” ์˜๋ฏธ ๊ฐ™๊ณ ,
๊ฐœ๋ฐœ์ž์˜ ์˜์—ญ์ด ์•„๋‹ˆ๊ธฐ์— ํŒจ์Šคํ•œ๋‹ค.

1.4 ์›น์‚ฌ์ดํŠธ ๋‚ด ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

* Naver ๋ธ”๋กœ๊ทธ, ์นด์นด์˜คํ†ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์„ค์ •
<meta property="og:title" content="..."> : ์ฝ˜ํ…์ธ  ์ œ๋ชฉ
<meta property="og:url" content="..."> : ์›นํŽ˜์ด์ง€ URL
<meta property="og:type" content="..."> : ์›นํŽ˜์ด์ง€ ํƒ€์ž…(blog, website ๋“ฑ)
<meta property="og:image" content="..."> : ํ‘œ์‹œ๋˜๋Š” ์ด๋ฏธ์ง€
<meta property="og:site_name" content="..."> : ์›น์‚ฌ์ดํŠธ ์ด๋ฆ„(URL๊ณผ ๋‹ค๋ฆ„)
<meta property="og:description" content="..."> : ์›นํŽ˜์ด์ง€ ์„ค๋ช…(์ œ๋ชฉ ์•„๋ž˜์— ํ‘œ์‹œ)	
*ํŠธ์œ„ํ„ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์„ค์ •
<meta name="twitter:card" content="..."> : ํŠธ์œ„ํ„ฐ ์นด๋“œ ํƒ€์ž…(์š”์•ฝ์ •๋ณด, ์‚ฌ์ง„, ๋น„๋””์˜ค)
<meta name="twitter:title" content="..."> : ์ฝ˜ํ…์ธ  ์ œ๋ชฉ
<meta name="twitter:description" content="..."> : ์›นํŽ˜์ด์ง€ ์„ค๋ช…
<meta name="twitter:image" content="..."> : ํ‘œ์‹œ๋˜๋Š” ์ด๋ฏธ์ง€	

๋‚˜๋จธ์ง€๋Š” ์„œ๋น„์Šค ์˜์—ญ์ด๊ธฐ์—
์šฐ๋ฆฌ ๊ฒŒ์‹œํŒ ๐Ÿ‘ถ์€ ๋จน์ผ ํ•„์š”๊ฐ€ ์ •๋ง ํ•„์š”๊ฐ€ ์—†์–ด๋ณด์—ฌ์„œ...

์ถ”๊ฐ€๋กœ ์ฐธ๊ณ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด

SEO ์ด์ •๋ฆฌ ๊ฐ€์ด๋“œ

๋ฅผ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.


์ธ์ค„ ์•Œ์•˜์œผ๋‚˜... ์„ธ์ƒ.. ์‰ฝ๊ฒŒ๋งŒ ์‚ด์•„๊ฐ€๋ฉด ์žฌ๋ฏธ์—†์–ด ๋น™๊ณ 
1.4 ๋‚ด์šฉ์„ ๋จน์ด๊ณ ์„œ npm run build ๋ฅผ ํ•˜๋‹ˆ๊นŒ html์ด ์ ์šฉ๋˜๊ธฐ๋Š” ์ปค๋…•
์ฝ”๋“œ๋งˆ์ € ์‹น ์ง€์›Œ์ ธ๋ฒ„๋ฆฐ๋‹ค

๐Ÿต๐Ÿต๐Ÿต

์–ด์ด๊ฐ€ ์—†๋„ค..

2. React์—์„œ SEO ๋จน์ด๋Š” ๋ฒ•

๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋„๋ก ํ•œ๋‹ค.

1. pre-rendering
2. server side rendering

๋‘ ๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

์„ค๋ช…์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค ์ ์–ด ๋‘˜ ๊ฒƒ์ด๋‚˜
1) ๋‚˜๋Š” next.js ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๊ณ  2) ๋™์ ์œผ๋กœ url์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ œ๊ณตํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค. (์™œ๋ƒ๋ฉด ๋กœ๊ทธ์ธ์„ ์•ˆํ–ˆ์„ ๋•Œ๋Š” ๋ฉ”์ธ ๋ฐ–์— ๋ชป ๋“ค์–ด๊ฐ€๋Š”๋ฐ๋‹ค๊ฐ€ ์‚ฌ์™ธ๋ง์—์„œ๋Š” ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž„)

๊ณ ๋กœ Pre-rendering ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•ด๋ณด๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค.
๋Œ€๋ถ€๋ถ„ react๋กœ ๊ฐœ๋ฐœํ•œ ๊ฒฝ์šฐ์—๋Š” 1.Pre-Rendering ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋”๋ผ ์ฐธ๊ณ 


1. Pre-Rendering

๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ ๋ฏธ๋ฆฌ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง ํ•ด์„œ html ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋‘๋Š” ๋ฐฉ๋ฒ•
๊ฒ€์ƒ‰ ์—”์ง„์ด ํฌ๋กค๋งํ•˜๋Ÿฌ ์‚ฌ์ดํŠธ์— ๋“ค์–ด์™”์„ ๋•Œ, ๋นˆ html ๋Œ€์‹  ๋‚ด์šฉ์„ ๊ฐ€์ ธ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ..!

react-snap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ๋ผ์šฐํŒ… ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๋™์  ํŽ˜์ด์ง€์—๋Š” ์ ์šฉํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์–ด๋ณด์ธ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์Œ...

๊ธฐ๋ณธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Meta Data) ๋Š” ์œ„์™€ ๋™์ผ

<head>
......
<meta property="og:title" content="์ œ๋ชฉ"/>
<meta property="og:type" content="๋ฐ์ดํ„ฐ์˜ ํƒ€์ž… (article, website, image...)"/>
<meta property="og:url" content="์‚ฌ์ดํŠธ ์ฃผ์†Œ"/>
<meta property="og:description" content="๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…"/>
<meta property="og:image" content="๋ฐ์ดํ„ฐ์˜ ์ธ๋„ค์ผ/์ด๋ฏธ์ง€ ์ฃผ์†Œ"/>
......
</head>

1. react-snap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

react-snap์€ puppeteer ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์  HTML ํŒŒ์ผ๋“ค์„ pre-rendering ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
๋น„์Šทํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” react-snapshot ๋“ฑ์ด ์žˆ๋‹จ๋‹ค. ํ•˜์ง€๋งŒ snap์ด ๋” ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋‹ˆ๊นŒ ์ ˆ๋Œ€ ๋‹ค์ˆ˜๋ฅผ ๋”ฐ๋ผ๋ณด๋„๋ก ํ•œ๋‹ค.

npm i react-snap -D

์„ค์น˜๋ฅผ ์šฐ์„  ํ•ด์ฃผ๋„๋ก ํ•˜์ž. ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— devDependency๋กœ ์„ค์น˜๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹จ๋‹ค.

app.js ์—์„œ ๋ผ์šฐํ„ฐ ์„ค์ •์„ ํ•ด์ฃผ๊ณ 

npm run build

๋ฅผ ํ•˜๋ฉด ์•Œ์•„์„œ build ์ชฝ์—


์ด๋ ‡๊ฒŒ ํด๋”๊ฐ€ ์ƒ๊น€...

ps. ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด build ๋•Œ๋ฆฌ๊ธฐ ์ „์— include๋‚˜ exclude ์˜ต์…˜์„ ์ค˜๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค...

// package.json

...
"reactSnap":{
	"include":[
    	"/"]
 }

2. hydrate ์„ค์ •

// src/index.js

import React from 'react';
import { hydrate, render } from 'react-dom';
import App from './App';

const $root = document.getElementById('root');
const renderOrHydrate = $root.hasChildNodes() ? hydrate : render;

renderOrHydrate(<App />, $root);

์„ค์ •์€ ์—ฌ๊ธฐ๊นŒ์ง€

3. TEST ํ…Œ์ŠคํŠธ

3.1 Build ๋นŒ๋“œ

npm run build

ํ„ฐ๋ฏธ๋„์—์„œ ๋นŒ๋“œ๋ฅผ ํ•ด์ฃผ๋ฉด


๋ฌด์Šจ ํŽ˜์ด์ง€๋“ค์„ ํฌ๋กค๋งํ•ด์˜ค๋Š”์ง€๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

4. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธ

npx serve build

๋ฅผ ํ•ด์ฃผ๊ณ ,

๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— Networkํƒญ-Doc ์—
pre-rendering ํ•œ ํŽ˜์ด์ง€๋“ค์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ๋ณด์ด๋ฉด ์ •์ƒ ์ž‘๋™์ด ๋œ๊ฑฐ๋ผ๊ณ  ํ•œ๋‹ค.


2. Server Side Rendering

๋™์  ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ server side rendering์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ...
server side rendering์˜ ๊ฒฝ์šฐ์—๋Š” next.js์˜ ํฐ ์žฅ์  ์ค‘์— ํ•˜๋‚˜๊ธฐ ๋•Œ๋ฌธ์—
next.js ๋กœ ๊ฐœ๋ฐœ์„ ํ–ˆ์œผ๋ฉด ์ƒ๊ด€์ด ์—†๋Š”๋ฐ... ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” next.js๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ•ด์ค˜์•ผํ•œ๋‹จ๋‹ค.

์ž์„ธํ•œ ๋ฐฉ๋ฒ•

React๋กœ Next.js ์ฒ˜๋Ÿผ Server-side-rendering ๊ตฌํ˜„ํ•˜๊ธฐ

React์—์„œ SNS ๊ณต์œ  ๋ฏธ๋ฆฌ๋ณด๊ธฐ, SEO ์ ์šฉ ๋ฐฉ๋ฒ•

์ด ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ–ˆ๋‹ค๋ฉด ์œ„ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ๋”ฐ๋ผํ•ด๋ณด๋„๋ก ํ•˜์ž.


์ด๊ฑฐ ํ•˜๋ฉด์„œ ๋Š๋‚€ ๊ฑฐ์ง€๋งŒ ์„ธ์ƒ์—๋Š” ๋Šฅ๋ ฅ์ž๋“ค์ด ๋งŽ๋‹ค...
๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ์ง€์›์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜, ํ˜น์€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๋‹ค๊ณ 
์›ํ•˜๋Š” ํ™•์žฅ ํˆด์„ ๊ทธ๋ƒฅ ๋š๋”ฑ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ฝค ์žˆ๋”๋ผ
์‹ ๊ธฐํ•˜๋‹ค ์‹ ๊ธฐํ•ด ๋‚˜๋Š”... ๋ฐ˜์ชฝ์งœ๋ฆฌ ๊ฐœ๋ฐœ์ž ~

728x90
๋”๋ณด๊ธฐ
FRONTEND/React