سؤالات متداول
چه کسی از vue نگهداری میکند؟
vue یک پروژهی مستقل و مدیریتشده توسط جامعه است. vue توسط ایوان یو در سال ۲۰۱۴ به عنوان یک پروژهی شخصی آغاز به کار کرد. امروزه vue به صورت فعالانه توسط گروهی از داوطلبان پاره وقت و تمام وقت از سراسر جهان نگهداری میشود که راهبر این پروژه ایوان یو است. برای اطلاعات بیشتر راجع به داستان vue به این مستند مراجعه کنید.
توسعهی vue به وسیلهی حمایتهای اسپانسری ادامه مییابد و ما از سال ۲۰۱۶ در وضعیت مالی خوبی قرار داریم. اگر شما و یا شرکت شما از vue سود میبرد، میتوانید اسپانسر شوید تا از توسعهی vue حمایت کنید!
تفاوت بین vue ۲ و vue ۳ چیست؟
vue ۳ آخرین نسخهی major vue است که حاوی ویژگیهاییست که در vue ۲ وجود ندارند. مثل Teleport، Suspense، و چندین المان root به ازای هر template. vue ۳ همچنین دارای breaking changeهایی است که باعث میشود با vue ۲ سازگار نباشد. جزئیات کاملتر در راهنمای migration به vue ۳ موجود است.
علیرغم تفاوتها، بخش بزرگی از APIهای vue بین این دو نسخه یکسان هستند. پس، بخشهای زیادی از دانشی که راجع به vue ۲ دارید در رابطه با vue ۳ به کارتان خواهد آمد. Composition API در اصل یک ویژگی فقط برای vue ۳ بود، ولی حالا به vue ۲ نیز پورت شده و در vue ۲.۷ نیز در دسترس است.
به طور کلی، vue ۳ اندازههای bundle کمحجمتر، performance بهتر، مقیاسپذیری بهتر و پشتیبانی بهتری از تایپاسکریپت و IDE دارد. اگر در حال ایجاد پروژهای جدید هستید، انتخاب vue ۳ پیشنهاد میشود. فقط چند دلیل برای استفاده از vue ۲ میتواند وجود داشته باشد:
- هنوز به پشتیبانی از Internet Explorer 11 نیاز دارید. vue ۳ از ویژگیهای مدرن جاوا اسکریپت استفاده میکند و از Internet Explorer 11 پشتیبانی نمیکند.
اگر قصد دارید که پروژهای را از vue ۲ به vue ۳ منتقل کنید، به راهنمای migration مراجعه کنید.
آیا vue ۲ همچنان پشتیبانی میشود؟
vue۲.۷، که در جولای ۲۰۲۲ عرضه شد، آخرین نسخهی minor vue ۲ است. vue ۲ حالا وارد حالت نگهداری شده است: vue ۲ دیگر ویژگیهای جدیدی را ارائه نمیدهد ولی رفع باگهای ضروری را دریافت میکند و بهروز رسانیهای امنیتی را تا ۱۸ ماه بعد از انتشار vue ۲.۷ ارائه میدهد. این به این معناست که vue ۲ در تاریخ ۱۰ دی ۱۴۰۲ به پایان عمر خود میرسد.
ما بر این باور هستیم که این زمان زیاد برای مهاجرت بیشتر اکوسیستم به vue ۳ کافیست. به هر حال، ما متوجه هستیم که شاید گروهها و یا پروژههایی باشند که نتوانند در این مدت زمانی به vue ۳ ارتقا یابند در حالی که همچنان نیازمند امنیت و رضایتمندی هستند. ما در حال همکاری با حرفههای صنعت هستیم تا بتوانیم پشتیبانی بیشتری برای vue ۲ برای گروههایی با اینچنین نیازمندیهایی برقرار کنیم. اگر گروه شما میخواهد که بعد از ۲۰۲۳ همچنان از vue ۲ استفاده کند، در این رابطه برنامهریزی کنید و راجع به پشتیبانی طولانی مدت اضافی vue ۲ بیشتر بدانید.
vue از چه اجازهنامهای استفاده میکند؟
vue یک پروژهی آزاد و متنباز است که با اجازهنامهی MIT متنشر شده است.
vue از چه مرورگرهایی پشتیبانی میکند؟
آخرین نسخهی vue (۳.x) فقط از مرورگرهای با پشتیبانی درونی ES2016 پشتیبانی میکند. این قضیه شامل Internet Explorer 11 نمیشود. vue ۳.x از ویژگیهایی از ES2015 استفاده میکند که نمیتوانند در مرورگرهای قدیمی polyfill شوند. پس اگر شما به پشتیبانی از مرورگرهای قدیمی نیاز دارید، به جای vue ۳ از vue ۲ استفاده کنید.
آیا vue قابل اعتماد است؟
vue یک framework بالغ و امتحانشده است. vue یکی از پر استفادهترین frameworkهای جاوا اسکریپت در production است که بیشتر از ۱.۵ میلیون کاربر در سرتاسر جهان دارد و نزدیک به ۱۰ میلیون بار در ماه در npm دانلود میشود.
vue در production توسط سازمانهای بهنامی در سراسر جهان استفاده میشود که شامل بنیاد ویکیمدیا، NASA، اپل، گوگل، مایکروسافت، GitLab، زوم، Tencent، Weibo، Bilibili، Kuaishou و خیلی سازمانهای دیگر است.
آیا vue سریع است؟
vue ۳ یکی از قدرتمندترین frameworkهای پراستفاده frontend است که به آسانی بیشتر کاربردهای برنامههای وب را بدون بهینهسازیهای دستی پوشش میدهد.
در سناریوهای stress-test، vue از React و Angular با یک فاصلهی خوب پیشی گرفت که در js-framework-benchmark قابل مشاهده است. vue همچنین شانه به شانهی سریعترین frameworkهای بدون virtual-DOM سطح production در benchmark پیش میرود.
به این نکته توجه کنید که benchmarkهای ساختگی مثل مورد بالا بر روی قدرت raw rendering با بهبودهای اختصاصی متمرکز هستند و شاید نمایانگر نتایج واقعی performance نباشند. اگر شما بیشتر راجع به performance بارگذاری صفحات اهمیت میدهید، میتوانید این صفحه را با استفاده از WebPageTest یا PageSpeed بررسی کنید. این وبگاه از خود vue قدرت میگیرد که از pre-render با SSG، hydration کامل صفحه و جابهجایی سمت کاربر SPA بهره میبرد. این وبگاه امتیاز ۱۰۰ را در performance بر روی یک Moto G4 شبیهسازی شده با 4x CPU throttling بر روی شبکهی کند 4G گرفته است.
شما میتوانید راجع به بهبود خودکار runtime performance به Rendering Mechanism مراجعه کنید و راجع به بهبود یک برنامهی vue در مواردی که به آن نیاز دارید بهPerformance Optimization Guide مراجعه کنید.
آیا vue سبک است؟
هنگامی که شما از یک ابزار build استفاده میکنید، بسیاری از APIهای vue "tree-shakable" هستند. برای مثال، اگر شما از component درونی <Transition>
استفاده نکنید، در bundle نهایی production قرار داده نمیشود.
یک برنامهی سلام دنیا با vue که فقط از APIهای حداقلی ساخته و از فشردهسازی brotli استفاده و minify شده است فقط اندازهای حدود ۱۶ kb دارد. سایز واقعی برنامه به میزان استفاده شما از ویژگیهای framework بستگی دارد. در حالت بعیدی که یک برنامه از تمامی ویژگیهایی که vue ارائه میدهد استفاده کند، اندازهی runtime آن در حدود ۲۷ kb خواهد بود.
وقتی از vue بدون یک ابزار build استفاده میکنیم، نه تنها قابلیت tree-shaking را از دست میدهیم بلکه مجبوریم که template compiler به مرورگر را نیز ارائه دهیم. این قضیه اندازه را تا ۴۱ kb افزایش میدهد. بنابراین، اگر vue را عموماً برای بهبود گسترده بدون یک مرحلهی build استفاده میکنید، بهتر است که از petite-vue (با فقط ۶ kb حجم) استفاده کنید.
بعضی از frameworkها مثل Svelte، از یک استراتژی compile استفاده میکنند که خروجی بسیار کمحجمی در سناریوهای تک-component میدهند. به هر حال، تحقیقات ما نشان میدهد که اندازه بسیار به تعداد componentهای برنامه وابسته است. با این که vue حجم اولیه سنگینتری دارد ولی کد کمتری به ازای هر component تولید میکند. در سناریوهای واقعی، یک برنامهی vue شاید خیلی بهتر و سبکتر باشد.
آیا vue مقیاسپذیر است؟
بله. علیرغم یک تصور غلط که میگوید vue فقط برای استفادههای ساده مناسب است، vue کاملاً قابلیت مدیریت برنامههای با مقیاس بالا را دارد:
componentهای تک فایلی یک مدل توسعهی modular ارائه میدهد که میتوان با آن بخشهای متفاوتی از برنامه را جداگانه توسعه داد.
composition API یکپارچگی درونی تایپاسکریپت و الگوهایی تمیز برای مدیریت، استخراج و استفادهی دوباره از منطقهای پیچیده را ارائه میکند.
پشتیبانی فراگیر از ابزارها به شما این اطمینان خاطر را میدهد که از یک تجربهی توسعهی روان در عین حال که برنامه رشد میکند بهره ببرید.
موانع کمتر برای ورود و مستندات عالی باعث میشود که هزینههای ورود و آموزش توسعهدهندههای جدید کاهش یابد.
چگونه میتوان به vue مشارکت کرد؟
ما از توجه شما خرسندیم! لطفاً به راهنمای جامعهی ما مراجعه کنید.
آیا من باید از Options API یا Composition API استفاده کنم؟
اگر شما به تازگی از vue استفاده میکنید، ما یک مقایسهی سطح بالا میان این دو شیوه در اینجا انجام دادهایم.
اگر شما در گذشته از Options API استفاده کردهاید و در حال حاضر مشغول ارزیابی Composition API هستید، لطفاً به این صفحه مراجعه کنید.
آیا برای vue، من باید از جاوا اسکریپت یا تایپاسکریپت استفاده کنم؟
علیرغم این که vue به خودی خود با استفاده از تایپاسکریپت پیادهسازی شده و پشتیبانی درونی از تایپاسکریپت دارد، vue شما را به عنوان یک کاربر، مجبور به استفاده از تایپاسکریپت نمیکند.
پشتیبانی از تایپاسکریپت در هنگام اضافه شدن قابلیتهای جدید به vue، یک ملاحظهی مهم است. APIهایی که با پشتیبانی از تایپاسکریپت طراحی شدهاند، برای IDEها و linterها آسانتر هستند، حتیٰ زمانی که شما از تایپاسکریپت استفاده نمیکنید. در این شرایط، همه برندهاند. APIهای vue همچنین به گونهای طراحی شدهاند که تا جایی که ممکن است در هنگام استفاده از جاوا اسکریپت یا تایپاسکریپت به روش یکسان کار کنند.
استفاده از تایپاسکریپت انتخاب بین پیچیدگیهای اولیه و مدیریتپذیری طولانیمدتی که ارائه میدهد است که چنین انتخابی میتواند بنا به پیشزمینهی گروه شما و مقیاس پروژه متغیر باشد ولی vue به واقع یک فاکتور اثرگذار در این تصمیمگیری نیست.
vue در قیاس با web component چگونه عمل میکند؟
vue قبل از ساخته شدن web componentها به طور درونی ساخته شد و بعضی از موارد طراحیهای vue (مثل slotها) از web componentها الهام گرفته شده است.
مشخصههای web componentها نسبتاً سطح پایین هستند، چون آنها در حیطهی تعریف المانهای سفارشی متمرکز شدهاند. به عنوان یک framework، vue چیزهای سطح بالاتر اضافی را مثل DOM rendering مؤثر، reactive state managment، استفاده از ابزارها، routing سمت کاربر و rendering سمت سرور در خود دارد.
vue همچنین قابلیت استفاده از و یا خروجی گرفتن به المانهای سفارشی را به طور کامل، پشتیبانی میکند. به راهنمای vue و componentها برای جزئیات بیشتر مراجعه کنید.