فلسفهی پروژه Vite
هستهی کمحجم و قابل توسعه
Vite قصد ندارد تمام سناریوهای ممکن را برای همهی کاربران پوشش دهد. هدف Vite این است که الگوهای رایج برای ساخت اپلیکیشنهای وب را بهصورت پیشفرض ارائه کند، اما هستهی Vite باید کمحجم باقی بماند و API کوچکی داشته باشد تا نگهداری آن در طولانیمدت ساده باشد. این هدف به لطف سیستم پلاگین مبتنی بر Rollup در Vite محقق میشود. قابلیتهایی که میتوانند بهعنوان پلاگینهای خارجی پیادهسازی شوند، معمولاً به هستهی Vite اضافه نخواهند شد. برای مثال، vite-plugin-pwa نمونهای عالی از قابلیتهایی است که خارج از هستهی Vite توسعه یافتهاند. همچنین، مجموعهای از پلاگینهای خوب و پشتیبانیشده برای پوشش نیازهای کاربران وجود دارد. Vite همکاری نزدیکی با پروژه Rollup دارد تا اطمینان حاصل شود که پلاگینها تا حد ممکن هم در پروژههای Rollup و هم در Vite قابل استفاده باشند و در صورت نیاز، تغییرات موردنیاز به API پلاگینهای Rollup اضافه شوند.
پیشبرد توسعهی وب مدرن
Vite ویژگیهایی را ارائه میکند که توسعهی کد مدرن را تشویق میکند. برای مثال:
- کد منبع باید فقط در قالب ESM نوشته شود، و وابستگیهای غیر-ESM باید ابتدا بهصورت ESM پیشباندل شوند تا کار کنند.
- پیشنهاد میشود که Web Workers با استفاده از سینتکس
new Worker
نوشته شوند تا از استانداردهای مدرن پیروی کنند. - ماژولهای Node.js را نمیتوان در مرورگر استفاده کرد.
در هنگام افزودن قابلیتهای جدید، این الگوها رعایت میشوند تا APIای ساخته شود که در آینده نیز پایدار و قابل استفاده باشد، حتی اگر با سایر ابزارهای ساخت سازگار نباشد.
رویکرد عملگرایانه نسبت به عملکرد
Vite از ابتدای توسعهی خود بر عملکرد متمرکز بوده است. معماری سرور توسعهی آن به HMR اجازه میدهد که حتی با بزرگتر شدن پروژهها، سریع بماند. Vite از ابزارهای بومی مانند esbuild و SWC برای انجام وظایف سنگین استفاده میکند، اما بقیهی کد را در JS نگه میدارد تا تعادل بین سرعت و انعطافپذیری حفظ شود. در صورت نیاز، پلاگینهای فریمورک میتوانند از Babel برای کامپایل کد کاربر استفاده کنند. همچنین، در زمان ساخت، Vite از Rollup بهره میبرد، جایی که اندازهی باندل و دسترسی به اکوسیستم گستردهی پلاگینها اهمیت بیشتری نسبت به سرعت خام دارد. Vite بهصورت مداوم تکامل مییابد و در صورت ظهور کتابخانههای جدید برای بهبود تجربهی توسعهدهنده (DX)، آنها را در معماری داخلی خود ادغام خواهد کرد، در حالی که API آن پایدار باقی میماند.
ایجاد فریمورکها بر پایهی Vite
هرچند Vite بهصورت مستقیم توسط کاربران قابل استفاده است، اما قدرت اصلی آن در ایجاد فریمورکها نمایان میشود. هستهی Vite وابسته به فریمورک خاصی نیست، اما پلاگینهای بهینهشدهای برای هر فریمورک UI وجود دارد. API جاوااسکریپت Vite به توسعهدهندگان فریمورکها این امکان را میدهد که قابلیتهای Vite را برای ایجاد تجربههای اختصاصی برای کاربران خود به کار ببرند. Vite همچنین از SSRs پشتیبانی میکند که معمولاً در ابزارهای سطح بالاتر وجود دارند، اما برای ساخت فریمورکهای وب مدرن ضروری هستند. پلاگینهای Vite نیز امکان اشتراکگذاری بین فریمورکهای مختلف را فراهم میکنند. علاوه بر این، Vite گزینهی مناسبی برای ادغام با فریمورکهای بکاند مانند Ruby و Laravel است.
یک اکوسیستم فعال
توسعهی Vite نتیجهی همکاری بین توسعهدهندگان فریمورکها، نگهداران پلاگینها، کاربران و تیم اصلی Vite است. ما مشارکت فعال در توسعهی هستهی Vite را تشویق میکنیم، بهویژه زمانی که پروژهای از آن استفاده میکند. تیم Vite با پروژههای اصلی در اکوسیستم همکاری میکند تا از بروز مشکلات در هر نسخهی جدید جلوگیری کند. ابزارهایی مانند vite-ecosystem-ci به ما کمک میکنند تا تستهای CI را برای پروژههای مهم که از Vite استفاده میکنند روی PRهای منتخب اجرا کنیم و بررسی کنیم که اکوسیستم چگونه به نسخههای جدید واکنش نشان خواهد داد. هدف ما این است که مشکلات قبل از رسیدن به کاربران حل شوند و پروژهها بتوانند بلافاصله پس از انتشار نسخههای جدید، بهروز شوند. اگر شما هم با Vite کار میکنید، از شما دعوت میکنیم که به Discord رسمی Vite بپیوندید و در توسعهی این پروژه مشارکت داشته باشید.