رویکرد shadcn/ui در React Native؛ وقتی کد component داخل پروژه است

چرا مهم است

اگر با تغییر طراحی مدام به Button خودت prop اضافه می‌کنی، مسئله آغاز این راهنما برایت آشناست. متن رویکردی را معرفی می‌کند که در آن کد component داخل پروژه تو قرار می‌گیرد و مستقیماً قابل تغییر است.

قبل از خواندن، این‌ها را بدان۵ مفهوم
CLI

روشی برای کار با ابزار از طریق دستورهای متنی؛ در این راهنما، ابزار با خواندن اطلاعات component،؜ کد آن را به پروژه اضافه می‌کند.

بیشتر درباره این مفهوم

Registry

مجموعه‌ای از اطلاعات برای پیدا کردن و دریافت منابع نرم‌افزاری؛ در این متن، فایل‌های JSON شامل کد و dependency‌های component است.

بیشتر درباره این مفهوم

Primitive

یک component پایه که رفتار مشخصی را مدیریت می‌کند، اما ظاهر و style ندارد؛ component‌های دیگر می‌توانند ظاهر را به آن اضافه کنند.

بیشتر درباره این مفهوم

نمایش همه (۵)
Design Token

نامی برای یک مقدار طراحی، مانند رنگ، که به‌جای تکرار مقدار مستقیم در بخش‌های مختلف رابط استفاده می‌شود.

بیشتر درباره این مفهوم

runtime

زمانی که برنامه در حال اجراست؛ در برابر مرحله‌هایی مانند آماده‌سازی و bundle کردن کد پیش از اجرا.

بیشتر درباره این مفهوم

تغییرهای پیاپی طراحی می‌توانند یک فایل ساده colors.ts و یک Button کوچک را پیچیده کنند: رنگ‌ها بیشتر می‌شوند و برای هر نیاز تازه، یک prop یا override اضافه می‌شود. این راهنما از همین مسئله شروع می‌کند؛ جایی که تغییر یک تصمیم طراحی، بررسی چند فایل مختلف را لازم می‌کند.

در بسیاری از کتابخانه‌های component،؜ کد در node_modules قرار دارد و سفارشی‌سازی معمولاً از طریق prop‌ها و گزینه‌های موجود انجام می‌شود. shadcn/ui رویکرد دیگری دارد: یک CLI کد component را داخل پروژه کپی می‌کند و بعد می‌توان همان کد را تغییر داد. بنابراین قرار نیست shadcn/ui مثل یک dependency معمولی به package.json اضافه شود.

راهنما برای استفاده از این ایده در React Native،؜ پروژه React Native Reusables را معرفی می‌کند. این پروژه component‌هایی مانند Button،؜ Card،؜ Select و Dialog دارد و از همان الگوی کپی‌کردن کد با CLI استفاده می‌کند. RN Primitives رفتار پایه را فراهم می‌کند؛ مثلاً یک Primitive برای Select باز و بسته‌شدن منو و اعلام آن به screen reader را مدیریت می‌کند، اما رنگ و border ندارد. React Native Reusables ظاهر را روی این رفتار اضافه می‌کند.

ابزار دیگر Uniwind است که class name‌های Tailwind CSS را هنگام bundle شدن برنامه به style‌های React Native تبدیل می‌کند؛ طبق متن، این تبدیل کار اضافه‌ای در runtime ایجاد نمی‌کند. Expo و Expo Router نیز راه‌اندازی پروژه، development server و navigation مبتنی بر فایل را بر عهده دارند.

مثال برنامه‌ریزی‌شده، صفحه سبد خرید و پرداخت سفارش بیرون‌بر یک کافه است؛ با کنترل تعداد، انتخاب زمان دریافت، نام مشتری و تأیید سفارش. راهنما همچنین پرداختن به Design Token،؜ حالت روشن و تاریک، صفحه‌کلید و safe area را در برنامه دارد. بخش موجود هنوز اجرای این مراحل را نشان نمی‌دهد.

در پایان بخش موجود، سازوکار Registry توضیح داده می‌شود: مجموعه‌ای از فایل‌های JSON روی server که کد و dependency‌های component را توصیف می‌کنند. CLI این اطلاعات را می‌خواند، package‌های لازم را نصب می‌کند و کد را به پروژه می‌آورد. پیش‌نیازهای آموزش نیز Node.js 20 یا جدیدتر، آشنایی پایه با React و TypeScript و مقداری تجربه React Native است.

نکته کلیدی

بین نصب یک package و کپی‌شدن کد component با CLI تفاوت بگذار. در رویکرد توضیح‌داده‌شده، برای شناخت چیزی که وارد پروژه‌ات می‌شود، کد component و dependency‌های ثبت‌شده در Registry را بررسی کن.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)