프로젝트 소개
QimenJS는 모듈형 TypeScript 인프라 라이브러리로, 이름은 고대 병법의 술수 체계인 '기문둔갑(奇門遁甲)'에서 따왔습니다. 능력 조합(Ability)과 데이터 파이프라인(Pipeline)을 통해 유연한 프론트엔드 아키텍처를 구축하며, 이벤트 시스템, 데이터 파이프라인, 엔티티 관리, 국제화, HTTP 클라이언트 등 38개의 독립 서브패키지를 제공하여 프론트엔드 애플리케이션의 기반 계층부터 UI 계층까지 아우릅니다.
현재 버전은 0.2.0으로 초기 개발 단계에 있으며, 핵심 API와 UI 컴포넌트 계층은 사용 가능하고 프레임워크 흐름은 검증되었으나 API는 이후 버전에서 변경될 수 있습니다.
패키지 목록은 계층별로 구성됩니다:
- **기반 계층 (Layer 0)**: 통합 오류 체계, 로깅 시스템, 범용 유틸리티 함수, 비동기 유틸리티, 런타임 환경 감지, 해시 및 인코딩/디코딩, 국제화, 요청/이벤트 컨텍스트, 패키지 간 공유 기반 타입을 포함합니다.
- **핵심 계층 (Layer 1)**: 레지스트리, 이벤트 버스, 캐시 관리, 데이터 파이프라인, 능력 조합, 작업 스케줄링을 포함합니다.
- **데이터 계층 (Layer 2)**: 데이터 프로세서 프레임워크, 검증 엔진, DOM 이벤트 어댑터(8가지 제스처 인식), MIME 타입 파싱, 명명 정규식 패턴 등록기, Schema 정의, 권한 시스템을 포함합니다.
- **서비스 계층 (Layer 3)**: HTTP 클라이언트(4단계 파이프라인 + 인터셉터 + SSE 스트리밍), OAuth2 인증(비밀번호/인증 코드/클라이언트 자격 증명 모드 + 401 자동 갱신), ABP 프레임워크 데이터 프로세서, Spring Data 데이터 프로세서, 시스템 능력 집합을 포함합니다.
- **애플리케이션 계층 (Layer 4)**: 엔티티 관리 프레임워크(5가지 Manager + Ability 조합 아키텍처), 라우팅 시스템(순수 이벤트 모드 + RouteAbility 컴포넌트 능력)을 포함합니다.
- **UI 계층**: 컴포넌트 핵심 인프라, UI 컴포넌트 능력 정의, UI 컴포넌트 구현(Icon/Button/Toggle/Tabs/Card/Menu/Nav/Panel 등), 고급 UI 컴포넌트(Step/Timeline/Rating/PropertyGrid/OneTimePassword 등), JSON 기반 레이아웃 정의 시스템, 테마 리소스(라이트/다크 + 10가지 중국풍 프리셋 + 사용자 정의), 중국풍 아이콘 라이브러리(102개 SVG + 폰트 아이콘), 명령형 API(toast/msgbox)를 포함합니다.
아키텍처 특징으로는 계층형 설계(의존 방향 단일, 계층 간 참조 없음), 능력 조합(엔티티 관리자가 AbilityDefinition을 통해 능력을 동적으로 조합), 파이프라인 처리(데이터 요청/응답이 플러그 가능한 프로세서 파이프라인을 통과하며 ABP/Spring 즉시 사용 가능), 환경 적응(핵심 패키지는 환경 독립적, 브라우저/Node.js 범용), 타입 안전성(완전한 TypeScript 타입 정의)이 있습니다.
예제 디렉토리 `examples/full-stack/`에는 OAuth2 인증, ABP API 사용자 관리, Spring Data 주문 관리, 36개 QimenJS 서브패키지의 기능 데모 페이지, 국제화(i18n 사전 컴파일 + 동적 언어 전환)를 포함한 완전한 풀스택 데모가 있습니다.
문서에는 아키텍처 설명, 패키지 설명, 모범 사례, API 참조가 포함됩니다. 개발 명령에는 의존성 설치, 빌드, 테스트 실행, 코드 검사, API 문서 생성이 포함됩니다. 버전 번호는 SemVer 규격을 따르며, 0.x.x는 초기 개발 단계를 나타냅니다.
이 프로젝트는 AI 보조 개발 프로젝트로, 대부분의 코드가 AI에 의해 생성되었으며, Huawei CodeArts, Trae CN, ChatGPT, DeepSeek, Gemini, 통이치엔원(通義千問), FitEncode 등의 도구 기여에 감사드립니다. 라이선스는 MIT입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.