Project

  • commandplusK
  • /
  • CtrlplusK

๐Ÿ€ 2025๋…„ ์™œ Next.js๋ฅผ ๋„์ž…ํ–ˆ๋Š”๊ฐ€?

์ด์ „๊นŒ์ง€ ์ €๋Š” CSR ๋ฐฉ์‹์œผ๋กœ๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ, ๋ถ€์กฑํ•œ SEO๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์‹œ๋„๋ฅผ ํ•ด์™”์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋”๋ฏธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด ๊ฒ€์ƒ‰์—”์ง„์— ๋…ธ์ถœ๋˜๋„๋ก ์œ ๋„ํ•œ ๋’ค, ์‹ค์ œ ์ฝ˜ํ…์ธ  ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์šฐํšŒ์ ์ธ SEO ์ตœ์ ํ™”๋ฅผ ์‹œ๋„ํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ํ”„๋กœ์ ํŠธ์— ๋‹ด๊ธฐ๋Š” ๊ฒฝํ—˜ ๊ธ€๊ณผ ์ฝ˜ํ…์ธ  ์–‘์ด ๋Š˜์–ด๋‚ฌ๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ๊ธ€์€ Notion์— ์ž‘์„ฑํ•œ ๋’ค ์ด๋ฅผ ๋™์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ตฌ์กฐ๋กœ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ธฐ์กด์˜ CSR ๋ฐฉ์‹๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ๋ช…ํ™•ํ–ˆ๊ณ , ์ œ ๊ธ€์ด ์กฐ๊ธˆ ๋” ๊ฒ€์ƒ‰์—”์ง„์— ๋…ธ์ถœ ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š”๋ฐ์— ์š•๊ตฌ๊ฐ€ ์ปค์ ธ๊ฐ”์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ Next.js์˜€์Šต๋‹ˆ๋‹ค. Next๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ๋ผ์„œ ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ์ •์ ์œผ๋กœ ์‚ฌ์ „ ๋ Œ๋”๋ง(SSG)ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ์ฝ˜ํ…์ธ ๊ฐ€ ๊ฒ€์ƒ‰์—”์ง„์— ์ž˜ ๋…ธ์ถœ๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FE | MR.CHU
Creative Developer specializing in Three.js, WebGL, and AI-driven 3D animation
FE | MR.CHU
https://mr-chu-home-page.vercel.app/
FE | MR.CHU

โœ… Sitemap ์ƒ์„ฑ

์ด์ „์—๋Š” page router ๊ธฐ๋ฐ˜์—์„œ getStaticProps, getStaticPaths๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, app router ๊ตฌ์กฐ์—์„œ๋Š” ์ด๋ฅผ ๋Œ€์‹ ํ•ด generateStaticParams()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ •์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๊ณผ๊ฑฐ์—๋Š” sitemap ์ƒ์„ฑ์„ ์œ„ํ•ด next-sitemap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์ตœ๊ทผ์—๋Š” Next.js ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” generateSitemaps() ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ SEO ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ generateSitemaps()๋Š” Next.js 14๋ถ€ํ„ฐ ์ •์‹ ๋„์ž…๋˜์—ˆ์œผ๋ฉฐ, app ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์—์„œ metadata API์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ด ๋ณ„๋„ ์„ค์ • ์—†์ด ์ž๋™์œผ๋กœ sitemap.xml์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.
notion image
ย 
ย 
ย 

โœ… ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด ๋„์ž…

  • ์ตœ๊ทผ์— ์•Œ๊ฒŒ ๋œ ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ(Compound Components) ํŒจํ„ด์ด ๊ตฌ์กฐ์ ์œผ๋กœ ๊น”๋”ํ•˜๊ณ  ํ™•์žฅ์„ฑ์ด ๋†’์•„ ๋ณด์—ฌ ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‹œ๋„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.
    • ModalStyle.Nav = ModalTopNav;
      ModalStyle.Content = ModalContent;
      
      export default ModalStyle;
      
      <ModalProvider>
         <ModalStyle>
            <ModalStyle.Nav>{text}</ModalStyle.Nav>
            {children}
         </ModalStyle>
      </ModalProvider>
ย 

โœ… ์Šคํƒ€์ผ๋ง & ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋ณ€๊ฒฝ์˜ ์ด์œ 

์ด๋ฒˆ ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹๊ณผ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹๋„ ์ตœ๊ทผ ํŠธ๋ Œ๋“œ์— ๋งž์ถฐ ์ ์ง„์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํƒ€์ผ๋ง: styled-components โ†’ SCSS

์ƒํƒœ ๊ด€๋ฆฌ: atom ๊ธฐ๋ฐ˜ โ†’ Redux Toolkit

  • ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ํ˜„์žฌ๋Š” ์—…๊ณ„์—์„œ ์ ์  ๋œ ์‚ฌ์šฉ๋˜๋Š” ์ถ”์„ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์„ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ’… styled-components โ†’ SCSS styled-components๋Š” ํ•œ๋•Œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ์—ˆ์ง€๋งŒ, ์ตœ๊ทผ์—๋Š” CSS Modules, SCSS, Tailwind CSS ๋“ฑ ๋” ๊ฐ€๋ณ๊ณ  ๋‹จ์ˆœํ•œ ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹๋“ค์ด ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Next.js์—์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ์„ค์ • ์—†์ด SCSS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๊ฐ„ํŽธํ–ˆ๊ณ , ๊ฐœ์ธ์ ์œผ๋กœ๋„ SCSS๊ฐ€ ๋” ์ต์ˆ™ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด ์ „ํ™˜์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
ย 
๐Ÿ”„ atom โ†’ Redux Toolkit atom์„ ์ดˆ๊ธฐ์—๋Š” ์‚ฌ์šฉ ํ–ˆ์ง€๋งŒ, ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋ฐœํŒ€์ด ํ•ด์ฒด๋˜์—ˆ๊ณ  ์ด๋ฒˆ ๋ฆฌํŒฉํ† ๋ง์—์„œ๋Š” Redux Toolkit์„ ํ•œ ๋ฒˆ ์ •์‹์œผ๋กœ ๋‹ค์‹œ ์จ๋ณด๋ฉฐ ๊ตฌ์กฐ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
ย 

โœ… vite ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ณ€๊ฒฝ

(2024/01/18) Vite ์ถ”๊ฐ€

export default defineConfig({
	plugins: [react(), tsconfigPaths()],
	build: {
	rollupOptions: {
	output: {
			manualChunks(id) {
				if (id.includes('node_modules/@react-spring')) {
					return 'react-spring';
				}
				if(id.includes('node_modules/date-fns')){
					return 'date-fns'
				}
				if(id.includes('node_modules/react-notion')){
					return 'react-notion'
				}
			}
		},
	},
}

โœ… Notion API๋กœ ๋ณ€๊ฒฝ, ๋ฐฑ์—”๋“œ ๊ตฌ์ถ•

(2023/11/16) ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ์ถ”๊ฐ€

๋งค๋ฒˆ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ๋ถ€๋‹ด์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ๋…ธ์…˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค api ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. Node.js + koyeb๋กœ ๋ฐฐํฌ
Swagger UI ((https://developed-heath-mr-chu.koyeb.app/api-docs/)
ย 

โœ… ๋„ทํ‹€๋ฆฌํŒŒ์ด ๋ฐฐํฌ๋กœ ๋ณ€๊ฒฝ

(2023/06/03) ๋„ทํ‹€๋ฆฌํŒŒ์ด ๋ฐฐํฌ๋กœ ๋ณ€๊ฒฝ, ๋„ค์ด๋ฒ„ ์‚ฌ์ดํŠธ๋งต ์ถ”๊ฐ€

FE MR.CHU
์ถ”ํ™๊ทœ | ํ”„๋ก ํŠธ ์—”๋“œ์˜ ํ™ˆํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
FE MR.CHU
https://mrchu.netlify.app/home
FE MR.CHU
ย 

โœ… ํฌํŠธํด๋ฆฌ์˜ค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€๊ฒฝ

(2022/10/20)

1. ์ทจ์งํ›„ SEO๊ฐ€ ๋„ˆ๋ฌด ์ค‘์š”ํ•˜๋‹ค ์ƒ๊ฐํ•˜์—ฌ ๋ฆฌ์•กํŠธ์— ๋ฌด์—‡์„ ๋” ํ• ์ง€ ๊ณ ๋ฏผ์ค‘
2. react-snap ์ถ”๊ฐ€
3. ๊ตฌ๊ธ€ ์‚ฌ์ดํŠธ๋งต ์ถ”๊ฐ€
4. robots.txt ์ถ”๊ฐ€
ย 

โœ… ํฌํŠธํด๋ฆฌ์˜ค ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋ฆฌ์•กํŠธ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด๊ธฐ

(2022/05/28) react ํ™œ์šฉ

  • http://chuhongkyu.github.io/Mr_chu_HomePage
ย 

โœ… ํฌํŠธํด๋ฆฌ์˜ค ํ™ˆํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

(2021/09/25)

  • html/css/js๋กœ๋งŒ ๋งŒ๋“  ํฌํŠธํด๋ฆฌ์˜ค ํ™ˆํŽ˜์ด์ง€
ย