피드로 돌아가기
Dev.toBackend
원문 읽기
commonmark-java 기반 CSS 클래스 자동 주입을 통한 Markdown 렌더링 최적화
Stop Fighting Your CSS Framework: Markdown to Styled HTML in Java
AI 요약
Context
Utility-first CSS 프레임워크 사용 시 시맨틱 HTML 태그에 클래스를 직접 지정해야 하는 제약 발생. 기존 Java 라이브러리는 순수 HTML만 생성하여 커스텀 Tag Renderer나 복잡한 String Replacement를 통한 수동 스타일링 작업의 병목 지점 형성.
Technical Solution
- commonmark-java 기반의 Fluent API를 설계하여 파싱 단계에서 CSS 클래스를 자동 주입하는 구조 구현
- Tailwind, Bootstrap, Bulma 등 주요 프레임워크의 스타일 맵을 Preset 형태로 제공하여 설정 비용 최소화
- StyleConfig 빌더 패턴을 통한 Immutable한 사용자 정의 스타일 맵핑 시스템 구축
- .safe() 모디파이어를 통한 Inline Script 및 원시 HTML 블록 제거로 XSS 공격 벡터 차단
- 기존 Preset을 상속하고 특정 태그만 덮어쓰는 Merge 메커니즘을 통한 유연한 스타일 확장성 확보
실천 포인트
- Java 17 이상 환경에서 Markdown 렌더링 시 Utility CSS 적용 필요성 검토 - 사용자 입력 기반 HTML 생성 시 .safe()와 같은 Sanitization 레이어 필수 적용 - 하드코딩된 스타일 대신 StyleConfig와 같은 설정 객체를 통한 스타일 관리 분리