Table of Contents
ایجاد و مدیریت انواع طراحی در Nx یک توانایی اساسی برای تیم های ساخت برنامه های مقیاس پذیر، چند تجربه در انواع طراحی یکپارچه است - چه برای تست A / B، ویژگی های کاربردی، نام تجاری، یا رابط های کاربر شخصی سازی - نیاز به یک رویکرد ساختاری برای جلوگیری از کد تکراری، روش های هماهنگ سازی سریع و ساخت یک تکنیک های ساده سازی، به عنوان یک تکنیک های هوشمند، و تجزیه و تحلیل دقیق.
درک تنوع طراحی در Nx
انواع طراحی به نسخه های متعدد از یک جزء UI، تنظیمات سبک یا طرح اشاره می کنند که می تواند به صورت پویا یا در زمان ساخت تغییر کند.در یک فضای کاری معمولی Nx، شما ممکن است یک کتابخانه UI مشترک داشته باشید که توسط چندین برنامه کاربردی استفاده می شود.
انواع طراحی امکان استفاده از موارد مانند:
- تست A / B - ارائه سبک های مختلف دکمه یا طرح به گروه های کاربر.
- برچسب سفید - هر مشتری یک طرح رنگ و آرم سفارشی دریافت می کند.
- پیش نمایش های پیش نمایش [FLT 1] - رولینگ یک طراحی جدید به درصد کاربران.
- (FLT:0) UI های خاص (FLT:1) - Mobile vs. Desktop یا حالت نور / تاریک.
معماری Nx - با مرزهای پروژه، گراف وابستگی و دستورات آسیب دیده - آن را به خوبی برای مدیریت این سناریو بدون شکستن ساخت و یا نفخ کد پایه خود را.
روش های ایجاد تنوع طراحی
استفاده از فایل های محیط زیست و متغیرهای زمان ساخت
یکی از ساده ترین و قابل اعتماد ترین روش ها تزریق اطلاعات مختلف از طریق فایل های محیط است. Nx از پیکربندی های خاص محیط با استفاده از فایل های و شی در (FLT:2) یا پشتیبانی می کند.
برای مثال، ممکن است شما داشته باشید:
- [در این میان] [مشرکان] [و] [به] [مشرکان] [و] [به [و] [و] [به [و]]] [و [به]] [و [به]] [و [به]]] [و [به [و]]] [و [به [و]]] [به [و [و [و [به [و] [و [و [از [و]] [و [و [به [و [و [و [از [به [به [و]] [به [به [و]]]]]] [به [و [و [و [از [و]]]] [به [به [و [و [به [به [و [به [به [از [و [از [از [از [از [و [و]]]]]]]]]]] [از [از [از [از [از [از [از [از [از [از [از [از [از [به [و [از [از [و [و [و]]]]]] [از [از [از [از [از [و [به [از
- [در این میان] [مشرکان] [مشرکان] [مشرکان] [[ویرایش]
سپس در بخش یا CSS خود، مرجع (FLT:8) یا Nx سازگار با NLT:9 پیشوند (نسخه 9) این رویکرد تمیز و با هر چارچوب جلویی برای انواع سبک کار می کند، شما می توانید به طور مشروط یک Stylesheet را وارد کنید:
if (theme === 'corporate') {
import('./corporate-theme.scss');
} else {
import('./startup-theme.scss');
}
سیستم ساخت Nx سبک های استفاده از درخت را تضمین می کند، و تنها کد مورد نیاز بسته بندی شده است.این روش ایده آل است زمانی که انواع در زمان ساخت شناخته شده اند و نیازی به تغییر در زمان اجرا ندارند.
۲٫ پیاده سازی و سبک پراید با خواص سفارشی CSS
برای انواع قابل تغییر، خواص سفارشی (CSS Variables) یک راه حل قدرتمند و ارزان قیمت است که مجموعه ای از متغیرهای پایه را در یک سبک مشترک تعریف می کند، سپس آنها را در هر نوع قرار می دهد.
ادغام با فرآیند ساخت Nx با وارد کردن موضوع مناسب در نقطه ورود برنامه خود را.برای React یا Angular، شما می توانید از یک زمینه / ارائه دهنده برای به طور پویا درخواست یک کلاس موضوع به عنصر ریشه:
.theme-corporate {
--primary-color: #0055a5;
--secondary-color: #ff6600;
}
.theme-startup {
--primary-color: #6c63ff;
--secondary-color: #ff6584;
}
سپس در بخش های مختلف، مرجع این رویکرد سبک است و به زیبایی با CSS کار می کند اگر شما از استراتژی [FLT16] استفاده می کنید، آن را برای پشتیبانی از موضوعات متعدد.
برای تنظیمات پیچیده تر CSS-in-JS (به عنوان مثال، قطعات سبک یا Emotion)، ایجاد یک شی تم و عبور آن از طریق React context یا Vue ارائه / Inject. Nx اجازه می دهد تا شما این منطق را در سراسر برنامه ها بدون تکرار به اشتراک بگذارید.
۳- تنوع از طریق تبلیغات و اسلات ها
هنگامی که اختلاف طراحی فراتر از رنگ ها و فاصله است - مانند تنظیم مجدد طرح یا عناصر اضافی - تقسیم بندی انواع اجزای جزء از طریق آگهی (React) یا اسلات (Vue) موثر است.
function Button({ variant, children }) {
const className = variant === 'primary' ? styles.primary : styles.secondary;
return <button className={className}>{children}</button>;
}
Nx شما را تشویق می کند تا این اجزا را در یک کتابخانه مشترک UI نگه دارید، زمانی که انواع مختلف به تعداد زیادی تبدیل می شوند، با استفاده از یک رجیستری (FLT:1) رجیستریت ( رجیستری الگوی: پیکربندی های مختلف در یک شی JSON را ذخیره کنید و آنها را به قطعات اصلی برنامه ریزی کنید.
برای تفاوت های بزرگ تر، بهتر از شرایط است، ایجاد زیر جزء جداگانه (به عنوان مثال، ، که به اشتراک گذاری یک پایه مشترک است.استفاده از گراف وابستگی Nx برای اطمینان از کتابخانه پایه به اشتراک گذاشته شده و تنها در صورت لزوم تغییر می کند.
۴ پرچم و نشانه های زمان
برای انواع طراحی که باید سرور را به سمت سرور یا زیرمجموعه ای از کاربران تغییر دهند، یکپارچه سازی یک سرویس پرچم (مانند لاnch Darkly یا Unleash با Nx یک راه حل قوی است.
مثالی با استفاده از یک قلاب ساده React:
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": { ... }
}
این باعث می شود که منطق نوع شما جدا شده و بدون استفاده از کل برنامه آسان باشد.
مدیریت تنوع طراحی به طور موثر
سازماندهی تنوع با ساختار پوشه ثابت
فضای کاری خود را با گروه بندی فایل های مرتبط با نوع مرتب نگه دارید:
libs/
ui/
button/
src/
lib/
variants/
primary/
secondary/
ghost/
index.ts
هر کدام از این روش ها شامل سبک ها، تست ها و داستان های خود است.[۱] این روش آسان است که اجرا کنید (FLT-26 26)، و به شما اجازه می دهد مرزهایی را اجرا کنید تا یک برنامه با استفاده از "FLT:1" به طور تصادفی به داخل "FLThost" وابسته نباشد.
استفاده از Nx’s Impacted Commands برای تغییرات متنوع
هنگامی که شما یک نوع را تغییر می دهید، نمی خواهید هر برنامه را بازسازی یا آزمایش کنید.Nx’s [FLT 29]، و [FLT 31] به طور خودکار تشخیص دهید که کدام پروژه ها بر اساس گراف وابستگی تحت تاثیر قرار می گیرند، این به ویژه در یک مونوترپو با بسیاری از انواع طراحی قدرتمند است - تنها نوع است که خط لوله آن را تغییر می دهد.
به عنوان مثال، اگر شما فقط نوع دکمه “اول” را به روز کنید، Nx برای کتابخانه ها و برنامه های کاربردی که به این نوع بستگی دارد، برنامه ریزی می کند و دیگران را دست نخورده نگه می دارد.
نام های متنوع به طور مداوم و تفاوت های سند
در این میان، ، ، ، ، [[FLT36]]، ، ، ، ، ، [[F|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S
تست Variant Testing
از ژنراتورهای تست Nx برای ایجاد تست های واحد برای هر نوع استفاده کنید. [۱] ابزارهای تست برگشت بصری مانند Chromatic یا Percy. در خط لوله CI خود، از [FLT 39] برای اجرای تست های بصری فقط برای انواع تغییر یافته استفاده کنید.
به عنوان مثال، یک هدف جداگانه برای تست های مختلف اضافه کنید:
"test:variant": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/ui/button/variants/primary/jest.config.ts"
}
}
سپس با یک اسکریپت یا Nx اجرا کنید تا همه انواع را آزمایش کنید.
بهترین روش ها برای مدیریت تنوع طراحی
- یک کتابخانه مشترک برای طراحی توکن [FLT 1] برای رنگ ها، فاصله، تایپوگرافی، نشانه ها را نادیده می گیرد، نه مقادیر سخت.
- از نمودار پروژه Nx استفاده کنید [FLT 1] برای تجسم وابستگی بین انواع و برنامه ها.
- (FLT:0) کنترل کننده ( پیکربندی های مختلف خود را در Git (به عنوان مثال، اگر شما نیاز به عقب نشینی یک نوع خاص.
- چرخه عمر نوع - چه زمانی یک نوع از پیش تعیین شده است؟ چه مدت طول می کشد؟ Automate تمیز کردن با ژنراتورهای Nx (به عنوان مثال،
- منطق نوع را از کد اصلی کسب و کار استفاده کنید، از اجزای سفارش بالاتر، مخلوطین یا ⁇ ها برای جدا کردن نگرانی ها استفاده کنید.
- دانه های مناسب را [FLT 1] - نه هر تغییر سبک کوچک نیاز به یک نوع ذخیره برای تفاوت های معنی دار (نام تجاری، ویژگی های تجربی).
نتیجه گیری
انواع طراحی یک واقعیت در توسعه وب مدرن است و Nx ابزار را برای مدیریت آنها بدون قربانی کردن سرعت یا کیفیت کد فراهم می کند، چه شما برای ساخت فایل های محیط زیست، خواص سفارشی CSS زمان اجرا، قطعات و یا پرچم های ویژگی، کلید این است که انعطاف پذیر و استفاده از قابلیت های مونوrepo Nx - دستورات آسیب دیده، مرزهای پروژه، و گرافت (F) بهترین روش های خواندن، و استفاده از آن را می کند.