Skip to content

플랫폼 지원 ​

초판 플랫폼 범위 ​

플랫폼상태설명
H5✅ 완전모든 컴포넌트가 완전한 기능
WeChat 미니프로그램✅ 완전(일부 폴백)레이어 계열 컴포넌트의 데스크톱급 기능이 폴백됩니다. 아래 표를 참조
Alipay / Douyin 미니프로그램🚫 초판 미지원추후 조건부 컴파일로 단말별 검증 후 열 추가
App(nvue)🚫 안 함nvue 렌더링 체계가 webview와 달라 로드맵에 없음

컴포넌트별 기능 매트릭스 ​

"폴백"이란 플랫폼이 지원하지 않는 기능이 컴파일 시 게이트에 의해 직접 제거되는 것(미니프로그램 패키지에 죽은 코드가 없음)을 의미하며, 런타임 실패가 아닙니다.

컴포넌트H5WeChat 미니프로그램폴백 전략 / 설명
config-provider완전완전provide/inject + 인라인 CSS 변수는 모든 플랫폼에서 사용 가능; 다크는 page.dark 클래스 전환(document 없음)
button / tag완전완전—
icon완전완전iconfont 폰트 방식(web 버전은 인라인 SVG, 아래 "icon 렌더링 차이" 참조)
input완전완전플레이스홀더 스타일은 placeholder-style prop 사용(MP는 ::placeholder 미지원)
checkbox / radio / switch완전완전view 자체 그리기(네이티브 컴포넌트를 사용하지 않고 lh 시각 언어 통일)
form / form-item완전완전검증 로직은 core 순수 함수, 플랫폼 의존성 없음
select완전폴백root-portal + 2프레임 측정 배치; 키보드 탐색은 H5 전용, MP는 클릭 + scroll-view
dialog완전폴백root-portal; focus-trap / lockScroll은 H5 전용, MP는 오버레이 가로채기로 폴백
tooltip완전폴백2프레임 측정 배치; hover 없음, MP 단말에서는 클릭 / 터치로 트리거
message / loading완전완전마운트 지점 패턴(미니프로그램에는 document가 없어 JS로 DOM을 생성할 수 없음)

WeChat 미니프로그램의 구체적인 제한과 대안 ​

제한대안
<svg> 태그 미지원아이콘을 컴파일 시 iconfont 폰트로 변환(base64 인라인), <text class="lh-iconfont">로 렌더링
::placeholder 미지원input의 placeholder-style / placeholder-class prop
* 와일드카드 / 속성 선택자 / :not() / :nth-* 미지원빌드 시 정제: * 와일드카드는 flex + gap으로 매핑, 나머지는 동등한 클래스명으로 교체
document / document.body 없음레이어는 root-portal 사용; 명령형 서비스는 마운트 지점 패턴 사용
키보드 포커스 시맨틱 없음focus-trap / 키보드 탐색은 LH_IS_H5 게이트가 호출하지 않음; aria 속성은 화면 판독기를 위해 계속 출력
transitionend 신뢰 불가등장 / 퇴장 애니메이션은 CSS transition + setTimeout으로 시간 정렬
onLoad 단계에서 컴포넌트 생성 미완료모든 ref / 측정 호출은 onReady 이후에 해야 함

WeChat 기본 라이브러리 버전 ​

  • root-portal은 기본 라이브러리 ≥ 2.25.2가 필요(select / dialog / tooltip의 레이어 마운트가 의존).
  • 낮은 버전에서는 자동으로 페이지 내 fixed 위치로 폴백(getLhLibVersion() 판정), 레이어는 계속 존재하지만 층위가 페이지 흐름의 제약을 받게 됩니다.

root-portal과 DingTalk 등 단말 ​

lh-root-portal 내부는 조건부 컴파일로 세 갈래로 나뉩니다: H5는 <teleport to="body">, WeChat는 <root-portal>, DingTalk 등 root-portal을 지원하지 않는 단말은 페이지 내 fixed로 갑니다. 내부 컴포넌트이므로 사용자가 신경 쓸 필요가 없습니다. 여기에 나열한 것은 레이어 동작의 플랫폼 차이 출처를 설명하기 위함입니다.