Docs changelog

Checkout docs changelog and new features.

v0.1.0 - 2025-10-31

New첫 공개: Java HTML DSL 핵심 모듈

업데이트

  • [New] HtmlComponent/render(RenderContext) 기반 핵심 인터페이스 정식 도입

  • [New] AbstractHtmlTag / HtmlTag(자식 있음) / VoidTag(자식 없음) 3단 구조 확정

  • [New] 일관 API 명명: css()/attr()/child()/children()(외부) ↔ addClass()/addAttribute()/addChild()/addChildren()(내부)

  • [New] Atomic Design 패턴(Atom → Molecule → Organism → Template → Page) 표준 컴포넌트 샘플 포함

  • [New] El.* 팩토리(예: El.div(), El.input()) 추가로 선언형 DSL 작성성 개선

  • [New] 성능 최적화 렌더러(내부 StringBuilder 기반) 초판 반영 — 객체형 DSL 문법 유지하면서 렌더 성능 강화

  • [Update] i18n 메시지 접근을 위한 RenderContext#getMessage(key, default) 우선 규약 정리

  • [Update] 공통 유틸(조건부 렌더링 El.ifTrue(...)) 및 빈 태그 El.empty() 제공

  • [Fixed] 중첩 자식 렌더 시 공백/개행 처리 일관성 문제 개선

내용
kosmos-dsl v0.1.0Java만으로 HTML을 선언적으로 구성하기 위한 초판입니다.
핵심은 명확한 태그 계층(자식 보유 여부로 분리), 일관된 메서드 명명, 렌더 성능 최적화입니다. 기존 Thymeleaf 템플릿과 병행 또는 대체가 가능하며, SSR 기반 페이지를 강한 타입 안정성컴포저블 구조로 작성할 수 있습니다.

  • 간단 예시

     
    public class HelloCard implements HtmlComponent {
      @Override
      public String render(RenderContext ctx) {
        return El.div().css("card shadow-sm")
          .child(El.div().css("card-body")
          .children(
            El.h2().css("h5").text("Hello, Kosmos DSL!"),
            El.p().css("text-muted").text(ctx.getMessage("welcome.msg", "환영합니다."))
          )
        ).render(ctx);
      }
    }
  • 업그레이드/도입 가이드

    • Gradle 예시 (실제 그룹/아티팩트는 프로젝트 설정에 맞게 조정)
      implementation("net.uneedsoft:kosmos-dsl:0.1.0")

    • 기존 컴포넌트는 HtmlComponent를 구현하고 render(ctx)에서 El.*로 반환

    • 성능 최적화를 위한 내부 StringBuilder 렌더러는 기본 활성화 (추가 설정 불필요)

Downloads:
  • kosmos-dsl-0.1.0.jar(155,511 bytes)