Table of Contents
Nx의 설계 변형을 만들고 관리하기 위한 기본 기능인 Nx]는 monorepo 내에서 확장 가능한 멀티 경험 응용 프로그램을 구축하는 팀에 대한 기본 기능입니다. A/B 테스트, 기능 플래그, 브랜드 테마, 또는 사용자 중심 인터페이스를 위한 설계 변형은 구성된 접근법을 필요로 하며 일관성을 유지하고, 시간을 단축합니다. Nx는 스마트 모노레포로포를 구축하고, 기존의 방식을 최적화하고, 구현하는 데 필요한 기술을 구축하는 데 필요한 최적의 설계를 제공합니다.
Nx의 디자인 배리어 이해
디자인 변형은 UI 구성 요소, 스타일 세트 또는 레이아웃의 여러 버전을 참조하여 동적 또는 빌드 시간에 전환 할 수 있습니다. 전형적인 Nx 작업 공간에서 여러 응용 프로그램에 의해 사용되는 공유 UI 라이브러리가있을 수 있습니다. 견고한 전략 변형없이 앱 전반에 걸친 코드를 손상하거나 브리틀이되는 복잡한 조건 논리를 소개 할 수 있습니다.
Design 변형은 다음과 같은 사용 사례를 가능하게합니다.
- A/B 테스트 – 사용자 코호트에 다른 버튼 스타일이나 레이아웃을 제공.
- White-labeling – 각 클라이언트는 사용자 정의 색상 계획과 로고를 가져옵니다.
- 특징 미리보기 – 사용자의 비율로 새로운 디자인을 구르세요.
- Platform-specific UIs – 모바일 vs. 데스크탑, 또는 라이트/드크 모드.
Nx의 아키텍처는 프로젝트 경계, 의존성 그래프 및 영향을받은 명령과 함께 빌드 또는 코드를 블레이팅하지 않고 이러한 시나리오를 관리하기 위해 잘 추적됩니다.
디자인 배아 만들기 방법
1. 환경 파일 및 Build-Time 가변 사용
가장 간단하고 신뢰할 수있는 방법 중 하나는 환경 파일로 설계 변형 정보를 주입하는 것입니다. Nx는 ] 파일과 ]를 사용하여 환경 별 구성을 지원합니다. ] 또는 ].
예를 들어, 다음이 있을 수 있습니다:
- - ]를 포함합니다
- - ]를 포함합니다
그런 다음 구성 요소 또는 CSS에서 참조 ] (또는 Nx 호환 접두사). 이 접근법은 깨끗하고 어떤 frontend 프레임 워크와 함께 작동합니다. 스타일 변형의 경우, 당신은 조건으로 테마 스타일 시트를 가져올 수 있습니다 :
if (theme === 'corporate') {
import('./corporate-theme.scss');
} else {
import('./startup-theme.scss');
}
Nx의 빌드 시스템은 트리샤크 사용되지 않은 스타일로 필요한 변형 코드를 번들로 지키게됩니다. 이 방법은 변형이 빌드 시간에 알려지고 실행 시간에 전환 할 필요가 없을 때 이상적입니다.
2. CSS 사용자 정의 속성과 함께하는 스타일 오버라이드
runtime-switchable 변형의 경우, CSS custom properties] (CSS variables)는 강력하고, 낮은 비용의 해결책입니다. 공유된 stylesheet에 있는 기본 변수의 세트를 정의하고, 그 후에 변형 당 그들을 겹쳐 쌓입니다. Nx workspace에서는, 테마 객체를 수출하는 라이브러리를 만들 수 있습니다 (예를들면 , ).
Nx의 빌드 프로세스와 통합하여 애플리케이션의 입력 지점에서 적절한 테마를 가져다줍니다. React 또는 Angular의 경우, 동적으로 테마 클래스를 루트 요소에 적용할 수 있습니다.
.theme-corporate {
--primary-color: #0055a5;
--secondary-color: #ff6600;
}
.theme-startup {
--primary-color: #6c63ff;
--secondary-color: #ff6584;
}
그런 다음 구성 요소, 참조 . 이 접근은 경량이며 Tailwind CSS]를 사용하여 전략을 사용하여 여러 테마를 지원할 수 있습니다.
CSS-in-JS 설정 (예: 스타일링 구성 요소 또는 감정)을 위해 테마 객체를 만들고 React context 또는 Vue 제공 / inject를 통해 전달하십시오. Nx의 라이브러리 경계는 복제없이 앱 전반에 걸쳐이 테마 논리를 공유 할 수 있습니다.
3. 버팀대와 슬롯을 통해 구성 요소 Variants
디자인 차이는 색상과 간격을 넘어 이동할 때 레이아웃 리어 렌치 또는 추가 요소와 같은 구성 요소 변형] props (React) 또는 슬롯 (Vue)을 통해 효과. 예를 들어, 구성 요소는 prop:
function Button({ variant, children }) {
const className = variant === 'primary' ? styles.primary : styles.secondary;
return <button className={className}>{children}</button>;
}
Nx는 공유 UI 라이브러리에서 이러한 구성 요소를 유지하도록 권장합니다. 변형이 수많은 경우, variant registry 패턴을 사용하여 고려하십시오. JSON 객체의 변형 구성을 저장하고 구성 요소 props로 맵합니다. 이 방법은 깨끗하고 테스트 할 수 있습니다.
더 큰 차이를 위해, composition은 조건보다 더 낫습니다. 별도의 하위 구성 요소를 생성 (예: ], ]) 일반적인 기본을 공유합니다. 기본 라이브러리를 보장하기 위해 Nx의 의존성 그래프를 사용하여 필요한 경우 공유 및 변경됩니다.
4. 특징 깃발과 주근투
서버 측을 전환하거나 사용자의 하위 설정에 필요한 설계 변형을 위해, 기능 플래그 서비스를 통합 (]LaunchDarkly 또는 Unleash) Nx와 함께 강력한 솔루션입니다. 전용 라이브러리를 작성하여 플래그 제공 업체를 요약합니다. 각 응용 프로그램은이 가져 오기 및 다른 플래그 디자인에 표시 할 수 있습니다.
간단한 React Hook을 사용하는 예:
import { useFeatureFlag } from '@myorg/feature-flags';
function HomePage() {
const newLayout = useFeatureFlag('new-layout');
return newLayout ? <NewLayout /> : <OldLayout />;
}
Nx의 프로젝트 구성은 개발 및 테스트 중에 플래그를 모을 수 있습니다. 다른 플래그 시나리오에 대한 별도의 Nx 대상을 만들 수 있습니다.
"targets": {
"serve-with-flags": { ... },
"test-flags": { ... }
}
이 변형 논리를 완전히 통합하고 전체 응용 프로그램을 충성하지 않고 toggle로 쉽게 유지.
Design Variants를 효과적으로 관리
일관된 폴더 구조로 Variants를 구성
그룹화 변형 관련 파일로 작업 공간 tidy를 유지하십시오. 예를 들어:
libs/
ui/
button/
src/
lib/
variants/
primary/
secondary/
ghost/
index.ts
각 변형 폴더에는 자체 스타일, 테스트 및 스토리가 포함되어 있습니다. 이 접근 방식은 변경된 변형에만 ]을 쉽게 실행할 수 있습니다. Nx의 tags] (예: ]], ]])는 "primary"를 사용하여 앱이 실수로 "ghost"내부에 의존할 수 있도록 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로 강제로.
Nx의 채식 변화에 대한 정정 명령
하나의 변형을 수정할 때, 모든 앱을 재건축하거나 테스트할 필요가 없습니다. Nx의 , , 자동적으로 프로젝트가 종속 그래프에 기반한 영향을 인지합니다. 이것은 특히 많은 디자인 변형으로 monorepo에서 강력한 반면, 그 파이프라인을 트리거하는 변형만 변경합니다.
예를 들어, "primary"버튼을 변경하면 Nx는 다른 변조를 떠나 다른 변형에 따라 라이브러리 및 응용 프로그램에 대한 빌드를 계획합니다. 이것은 중요한 CI 시간을 절약합니다.
이름 Variants 일관된 및 문서 차이
, ], ], 또는 ], ]는 예측할 수 있는 변형을 만듭니다. ]를 사용하여 각 변형 폴더에 목적, 시각 차이를 설명하고, 각 사용시. 공유 디자인 토큰을 위해, 와 같은 진리의 단일 소스를 유지합니다.
Automate Variant 테스트
Nx의 테스트 발전기를 사용하여 각 변종에 대한 단위 테스트를 생성합니다. Chromatic 또는 Percy와 같은 시각적 회귀 테스트 도구를 통합하십시오. CI 파이프라인에서 변경된 변형에만 시각 테스트를 실행하려면 를 사용하십시오. Lighthouse CI]를 구성하여 변형의 성능 비교를하십시오.
예를 들어, 변형 테스트에 대한 별도의 대상을 추가합니다.
"test:variant": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/ui/button/variants/primary/jest.config.ts"
}
}
그런 다음 쉘 스크립트 나 Nx run-commands와 함께 모든 변형을 테스트합니다.
디자인 Variants의 모범 사례
- 공유된 디자인 토큰 라이브러리] 색상, 간격, 타이그래피를 위한 기본입니다. Variants override 토큰은, 하드코드가 없는 값입니다.
- Nx의 프로젝트 그래프를 사용하여 변형과 앱 간의 의존성을 시각화합니다. 원형 의존성을 피하십시오.
- Version control 당신의 변종 윤곽. Git (e.g., ])에 있는 꼬리표를 사용하여 특정 변종을 롤백하는 필요로 합니다.
- Document 변형 수명주기 – 변종이 감소될 때? 얼마나 활성화됩니까? Nx 발전기로 자동 세척 (예: ]).
- Keep 변형은 핵심 비즈니스 코드에서 논리를 나타낸다. 더 높은 주문 구성품, 혼합, 또는 장식품을 별도의 우려로 사용한다.
- 올바른 과립] - 모든 미성년자 스타일 변경이 변형이 필요하지 않습니다. 의미있는 다이버건스(클라이언트 브랜드, 실험적 기능)에 대한 변형을 예약하십시오.
관련 기사
디자인 변형은 현대 웹 개발의 현실이며, Nx는 빌드 속도 또는 코드 품질을 희생하지 않고도 관리 할 수 있습니다. 빌드 시간 환경 파일, 실행 시간 CSS 사용자 정의 속성, 구성 요소 props, 또는 기능 플래그를 선택하면 키는 일관성과 레버리지 Nx의 모노레포 기능 - 인증 명령, 프로젝트 경계, 그리고 종속 그래프를 유지하고 있습니다. 이러한 방법을 채택하고 모범 사례를 통해 LTS (LTS), [F]F] [F] [F]] [F]]] [F]] [F]] [F]]] [F]] [F]]] [F]]] [F]]]] [F]]]] [F]] [F]] [F]] [F]]]] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F] [F]]]] [F]]]]] [F] [F]]