블로그 시스템 소개
이 블로그는 Next.js 15와 MDX를 사용하여 구축되었습니다. 가독성과 개발자 경험을 최우선으로 설계되었으며, 다양한 기능을 제공합니다.
주요 기능
1. 코드 하이라이팅
다양한 프로그래밍 언어에 대한 문법 강조 기능을 지원합니다.
interface Post {
slug: string;
title: string;
description?: string;
date: string;
tags?: string[];
content: string;
}
async function getPostBySlug(slug: string): Promise<Post | null> {
try {
const fullPath = path.join(postsDirectory, `${slug}.mdx`);
const fileContents = fs.readFileSync(fullPath, 'utf8');
const { data, content } = matter(fileContents);
return {
slug,
content,
...(data as PostMetadata),
} as Post;
} catch (error) {
return null;
}
}
Python 예제도 확인해보세요:
def fibonacci(n):
"""피보나치 수열을 계산하는 함수"""
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
# 재귀 함수 사용
for i in range(10):
print(f"fibonacci({i}) = {fibonacci(i)}")
2. 마크다운 기본 요소
텍스트 스타일링
일반 텍스트, 굵은 글씨, 기울임, 취소선, 인라인 코드 등을 사용할 수 있습니다.
리스트
순서 없는 리스트:
- Next.js 15로 구축
- TypeScript 완전 지원
- 다크 모드 기본 제공
- 반응형 디자인
순서 있는 리스트:
- MDX 파일 작성
- Frontmatter 추가
- 빌드 및 배포
- 완료!
3. 링크와 인용
유용한 링크: Next.js 공식 문서
"좋은 디자인은 가능한 한 적은 디자인이다."
— Dieter Rams
4. 테이블
| 기능 | 상태 | 설명 |
|---|---|---|
| MDX 지원 | ✅ | 완전 지원 |
| 코드 하이라이팅 | ✅ | rehype-highlight 사용 |
| 목차 (TOC) | ✅ | 자동 생성 |
| 다크 모드 | ✅ | 시스템 테마 연동 |
| 반응형 | ✅ | 모바일 최적화 |
고급 기능
자동 목차 생성
이 페이지 오른쪽에 표시되는 목차는 마크다운의 헤딩을 자동으로 분석하여 생성됩니다. 현재 보고 있는 섹션이 하이라이트되며, 클릭하면 해당 섹션으로 부드럽게 스크롤됩니다.
반응형 레이아웃
다양한 화면 크기에서 최적의 가독성을 제공합니다:
- 모바일: 단일 컬럼 레이아웃
- 태블릿: 적절한 여백과 타이포그래피
- 데스크탑: 본문과 목차를 나란히 표시
코드 블록 고급 기능
JavaScript/JSX도 물론 지원합니다:
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div className='flex flex-col items-center gap-4'>
<p className='text-2xl font-bold'>{count}</p>
<button
onClick={() => setCount(count + 1)}
className='px-4 py-2 bg-blue-500 text-white rounded'
>
증가
</button>
</div>
);
}
성능 최적화
정적 생성
모든 블로그 포스트는 빌드 타임에 정적으로 생성되어 최고의 성능을 제공합니다.
# 프로덕션 빌드
pnpm build
# 빌드 결과 확인
pnpm start
SEO 최적화
각 포스트는 자동으로 메타데이터를 생성하여 검색 엔진 최적화를 제공합니다:
- Open Graph 태그
- Twitter Card
- 구조화된 데이터
마무리
이 블로그 시스템은 개발자에게 최고의 작성 경험을 제공하면서도, 독자에게는 뛰어난 가독성을 제공합니다. MDX를 사용하여 필요한 경우 React 컴포넌트를 직접 삽입할 수도 있습니다.
궁금한 점이 있으시면 이슈를 남겨주세요! 🚀