diff --git a/.vscode/settings.json b/.vscode/settings.json index d46ef8d4..54853bef 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,7 @@ "استایل", "استایلی", "استرینگ", + "استک", "اِستیت", "اسکرول", "اسکوپ", diff --git a/src/guide/extras/composition-api-faq.md b/src/guide/extras/composition-api-faq.md index 6984e2fb..0af5c607 100644 --- a/src/guide/extras/composition-api-faq.md +++ b/src/guide/extras/composition-api-faq.md @@ -4,7 +4,7 @@ outline: deep # سوالات متداول در مورد Composition API {#composition-api-faq} -:::tip +:::tip نکته این سوالات متداول فرض بر آشنایی قبلی با Vue - به خصوص تجربه کار با Vue 2 با استفاده از Options API - را دارد. ::: @@ -12,7 +12,7 @@ outline: deep -Composition API مجموعه‌ای از APIها است که به ما اجازه می‌دهد کامپوننت‌های Vue را با استفاده از توابع import شده به جای تعریف آپشن‌ها (option) بنویسیم. در واقع یک اصطلاح کلی برای پوشش APIهای زیر است: +Composition API مجموعه‌ای از APIها است که به ما اجازه می‌دهد کامپوننت‌های Vue را با استفاده از import کردن توابع به جای تعریف آپشن‌ها بنویسیم. در واقع یک اصطلاح کلی برای پوشش APIهای زیر است: - [Reactivity API](/api/reactivity-core) مانند `ref()‎` و `reactive()‎` که به ما اجازه می‌دهد stateهای reactive، computed و watchers را به صورت مستقیم ایجاد کنیم. @@ -55,13 +55,13 @@ onMounted(() => { مزیت اصلی Composition API این است که امکان استفاده مجدد clean (تمیز) و بهینه از logic (منطق) را به صورت [Composable functions](/guide/reusability/composables) فراهم می‌کند. این تمامی [محدودیت‌های mixin‌ها](/guide/reusability/composables#vs-mixins) را حل می‌کند که مکانیزم اصلی استفاده مجدد از logic در Options API است. -قابلیت استفاده مجدد از logic در Composition API منجر به پروژه‌های community تحسین‌برانگیزی مانند [VueUse](https://vueuse.org/) شده است، که مجموعه‌ای رو به رشد از ابزارهای composable است. همچنین به عنوان مکانیزمی clean برای ادغام آسان سرویس‌ها یا کتابخانه‌های شخص ثالث دارای state در سیستم reactivity فریمورک Vue عمل می‌کند، برای مثال [immutable data](/guide/extras/reactivity-in-depth#immutable-data)، [state machines](/guide/extras/reactivity-in-depth#state-machines) و [RxJS](/guide/extras/reactivity-in-depth#rxjs). +قابلیت استفاده مجدد از logic در Composition API منجر به پروژه‌های community تحسین‌برانگیزی مانند [VueUse](https://vueuse.org/) شده است، که مجموعه‌ای رو به رشد از ابزارهای composable است. همچنین به عنوان مکانیزمی تمیز برای ادغام آسان سرویس‌ها یا کتابخانه‌های شخص ثالث دارای state در سیستم reactivity فریمورک Vue عمل می‌کند، برای مثال [immutable data](/guide/extras/reactivity-in-depth#immutable-data) ، [state machines](/guide/extras/reactivity-in-depth#state-machines) و [RxJS](/guide/extras/reactivity-in-depth#rxjs). ### سازماندهی انعطاف‌پذیرتر کد {#more-flexible-code-organization} -بسیاری از کاربران دوست دارند که به طور پیش‌فرض با Options API کد منسجمی بنویسیم: هر چیزی جای خود را بر اساس آپشن مخصوصی که زیر آن قرار دارد، پیدا می‌کند. با این حال، Options API محدودیت‌های جدی هنگامی که logic یک کامپوننت خاص از حد آستانه پیچیدگی مشخصی فراتر می‌رود، ایجاد می‌کند. این محدودیت به ویژه در کامپوننت‌هایی که نیاز به مدیریت **logical concerns (چندین موضوع منطقی)** دارند، برجسته است که ما شاهد آن در بسیاری از برنامه‌های تولید شده با Vue 2 بوده‌ایم. +بسیاری از کاربران دوست دارند که به طور پیش‌فرض با Options API کد منسجمی بنویسیم: هر چیزی جای خود را بر اساس آپشن مخصوصی که زیر آن قرار دارد، پیدا می‌کند. با این حال، Options API محدودیت‌های جدی هنگامی که کد یک کامپوننت خاص از حد آستانه پیچیدگی مشخصی فراتر می‌رود، ایجاد می‌کند. این محدودیت به ویژه در کامپوننت‌هایی که نیاز به مدیریت **چندین موضوع منطقی (logical concerns)** دارند، برجسته است که ما شاهد آن در بسیاری از برنامه‌های تولید شده با Vue 2 بوده‌ایم. -به عنوان مثال کامپوننت اکسپلورر پوشه‌ها از GUI Vue CLI را در نظر بگیرید: این کامپوننت مسئول موارد منطقی زیر است: +به عنوان مثال کامپوننت اکسپلورر پوشه‌ها از GUI Vue CLI را در نظر بگیرید. این کامپوننت مسئول موارد منطقی زیر است: - پیگیری state پوشه جاری و نمایش محتوای آن - مدیریت ناوبری (navigation) پوشه (باز کردن، بستن، بازخوانی...) @@ -70,17 +70,17 @@ onMounted(() => { - تاگل کردن روی نمایش پوشه‌های پنهان - مدیریت تغییرات دایرکتوری کاری جاری -[نسخه اصلی](https://github.com/vuejs/vue-cli/blob/a09407dd5b9f18ace7501ddb603b95e31d6d93c0/packages/@vue/cli-ui/src/components/folder/FolderExplorer.vue#L198-L404) این کامپوننت با Options API نوشته شده بود. اگر به هر خط کد یک رنگ بر اساس موضوع منطقی که در حال مدیریت آن است، اختصاص دهیم، به این صورت به نظر می‌رسد: +[نسخه اصلی](https://github.com/vuejs/vue-cli/blob/a09407dd5b9f18ace7501ddb603b95e31d6d93c0/packages/@vue/cli-ui/src/components/folder/FolderExplorer.vue#L198-L404) این کامپوننت با Options API نوشته شده بود. اگر به هر خط کد یک رنگ بر اساس موضوع منطقی که در حال مدیریت آن است، اختصاص دهیم، به این صورت به نظر می‌رسد: folder component before -توجه کنید که کد مربوط به یک موضوع منطقی یکسان مجبور به تقسیم شدن تحت آپشن‌های مختلف در قسمت‌های مختلف فایل است. در یک کامپوننت چند صد خطی، درک و ناوبری یک موضوع منطقی تکی نیازمند اسکرول مداوم بالا و پایین فایل است که آن را دشوارتر از آنچه باید باشد، می‌کند. علاوه بر این، اگر قصد استخراج یک موضوع منطقی به یک ابزار قابل استفاده مجدد داشته باشیم، پیدا کردن و استخراج قطعات مناسب کد از قسمت‌های مختلف فایل کار زیادی می‌طلبد. +توجه کنید که کد مربوط به یک موضوع یکسان مجبور به تقسیم شدن تحت آپشن‌های مختلف در قسمت‌های مختلف فایل است. در یک کامپوننت چند صد خطی، درک و ناوبری یک موضوع منطقی تکی نیازمند اسکرول مداوم بالا و پایین فایل است که آن را دشوارتر از آنچه باید باشد، می‌کند. علاوه بر این، اگر قصد استخراج یک موضوع به یک ابزار قابل استفاده مجدد داشته باشیم، پیدا کردن و استخراج قطعات مناسب کد از قسمت‌های مختلف فایل کار زیادی می‌طلبد. اینجا همان کامپوننت، قبل و بعد از [بازنویسی به Composition API](https://gist.github.com/yyx990803/8854f8f6a97631576c14b63c8acd8f2e) است: ![folder component after](./images/composition-api-after.png) -توجه کنید که اکنون کد مربوط به یک موضوع منطقی می‌تواند در کنار هم گروه‌بندی شود: دیگر نیازی نیست هنگام کار روی یک موضوع منطقی خاص، بین بلوک‌های آپشن‌های مختلف جابجا شویم. علاوه بر این، اکنون می‌توانیم گروهی از کد را با تلاش کمینه به یک فایل خارجی منتقل کنیم، چرا که دیگر نیازی به جابجایی کد برای استخراج آن‌ها نیست. این کاهش اصطکاک برای بازنویسی برای نگهداری طولانی مدت در کدبیس‌های بزرگ حیاتی است. +توجه کنید که اکنون کد مربوط به یک موضوع می‌تواند در کنار هم گروه‌بندی شود: دیگر نیازی نیست هنگام کار روی یک موضوع خاص، بین بلوک‌های آپشن‌های مختلف جابجا شویم. علاوه بر این، اکنون می‌توانیم گروهی از کد را با تلاش کمتری به یک فایل خارجی منتقل کنیم، چرا که دیگر نیازی به جابجایی کد برای استخراج آن‌ها نیست. این کاهش اصطکاک بازنویسی، برای نگهداری طولانی مدت در کدبیس‌های بزرگ حیاتی است. ### Better Type Inference {#better-type-inference} @@ -106,7 +106,7 @@ Options API اجازه می‌دهد بدون فکر کردن زیاد کد کا ### آیا Composition API همه موارد استفاده را پوشش می‌دهد؟ {#does-composition-api-cover-all-use-cases} -بله، از نظر منطق دارای state. هنگام استفاده از Composition API، تنها چند گزینه ممکن است همچنان نیاز باشد: `props`، `emits`، `name`، و `inheritAttrs`. +بله، از نظر stateful logic. هنگام استفاده از Composition API، تنها چند گزینه ممکن است همچنان نیاز باشد: `props`، `emits`، `name`، و `inheritAttrs`. :::tip نکته diff --git a/src/guide/extras/ways-of-using-vue.md b/src/guide/extras/ways-of-using-vue.md index a39ac9dd..f3e5d410 100644 --- a/src/guide/extras/ways-of-using-vue.md +++ b/src/guide/extras/ways-of-using-vue.md @@ -1,57 +1,57 @@ -# روش های استفاده از Vue {#ways-of-using-vue} +# روش‌های استفاده از Vue {#ways-of-using-vue} -ما معتقدیم نمی شود در دنیای وب برای همه یک نسخه تجویز کرد. به همین دلیل است که Vue به گونه‌ای طراحی شده است که انعطاف‌پذیر و سازگار باشد. بسته به مورد استفاده شما، Vue می تواند به روش های مختلفی برای ایجاد تعادل بهینه بین پیچیدگی های اپلیکیشن ، تجربه توسعه دهنده و اجرای نهایی استفاده شود. +ما معتقدیم نمی‌شود در دنیای وب برای همه یک نسخه تجویز کرد. به همین Vue به گونه‌ای طراحی شده است که انعطاف‌پذیر و سازگار باشد. بسته به مورد استفاده شما Vue می‌تواند به روش‌های مختلفی برای ایجاد تعادل بهینه بین پیچیدگی های اپلیکیشن، تجربه توسعه دهنده و اجرای نهایی استفاده شود. ## اسکریپت مستقل {#standalone-script} -Vue را می توان به عنوان یک فایل اسکریپت مستقل استفاده کرد! اگر یک چارچوب پشتیبان دارید که بیشتر HTML را رندر می کند، یا منطق اپلیکیشن شما به اندازه کافی پیچیده نیست که به کامپایل یا پیش پردازش احتیاج داشته باشد، این ساده ترین راه برای ادغام Vue در اپلیکیشن شما است. در چنین مواردی می‌توانید Vue را به عنوان جایگزینی بهتر برای jQuery در نظر بگیرید. +Vue را می‌توان به عنوان یک فایل اسکریپت مستقل استفاده کرد! اگر یک فریمورک بکند دارید که بیشتر HTML را رندر می‌کند، یا منطق اپلیکیشن شما به اندازه کافی پیچیده نیست که به کامپایل یا پیش پردازش احتیاج داشته باشد، این ساده ترین راه برای ادغام Vue در اپلیکیشن شما است. در چنین مواردی می‌توانید Vue را به عنوان جایگزینی بهتر برای jQuery در نظر بگیرید. -Vue همچنین یک جایگزین به نام [petite-vue](https://github.com/vuejs/petite-vue) را ارائه می‌دهد که به طور خاص برای بهبود تدریجی HTML بهینه‌سازی شده است. این جایگزین ویژگی‌های کمتری دارد، اما بسیار سبک و شامل پیاده‌سازی کارآمد‌تری در سناریوهای استفاده مستقیم است (no-build-step) است. +Vue همچنین یک جایگزین به نام [petite-vue](https://github.com/vuejs/petite-vue) را ارائه می‌دهد که به طور خاص برای بهبود تدریجی HTML بهینه‌سازی شده است. این جایگزین ویژگی‌های کمتری دارد، اما بسیار سبک و شامل پیاده‌سازی کارآمد‌تری در سناریوهای استفاده مستقیم است (no-build-step) است. -## عناصر وب یکپارچه {#embedded-web-components} +## کامپوننت‌های وب {#embedded-web-components} -می‌توانید از Vue برای [ساخت کامپوننت های استاندارد وب ](/guide/extras/web-components) استفاده کنید که می‌توانند در هر صفحه HTML استفاده شوند، صرف نظر از اینکه چگونه اجرا می‌شوند. این گزینه به شما این امکان را می‌دهد که از Vue به شیوه‌ای کاملاً بهینه استفاده کنید: کامپوننت های وب تولید شده می‌توانند در برنامه‌های قدیمی، صفحات HTML ثابت یا حتی در برنامه‌هایی که با چارچوب‌های دیگر ایجاد شده‌اند، استفاده شوند. +می‌توانید از Vue برای [ساخت کامپوننت‌های استاندارد وب](/guide/extras/web-components) استفاده کنید که می‌توانند در هر صفحه HTML استفاده شوند، صرف نظر از اینکه چگونه اجرا می‌شوند. این گزینه به شما این امکان را می‌دهد که از Vue به شیوه‌ای کاملاً بهینه استفاده کنید: کامپوننت های وب تولید شده می‌توانند در برنامه‌های قدیمی، صفحات HTML ثابت یا حتی در برنامه‌هایی که با فریمورک‌های دیگر ایجاد شده‌اند، استفاده شوند. -## برنامه تک صفحه ای (SPA) {#single-page-application-spa} +## برنامه تک صفحه‌ای (SPA) {#single-page-application-spa} -برخی از برنامه ها شامل سطح بالایی از تعاملات کاربری و منطق پیچیده در فرانت اند هستند. بهترین راه برای ساخت چنین برنامه هایی استفاده از معماری است که در آن Vue نه تنها کل صفحه را کنترل می کند، بلکه به روز رسانی داده ها و مسیریابی را بدون نیاز به لود مجدد صفحه انجام می دهد. این نوع برنامه معمولاً به عنوان یک برنامه تک صفحه ای (SPA) شناخته می شود. +برخی از برنامه ها شامل سطح بالایی از تعاملات کاربری و منطق پیچیده در فرانت‌اند هستند. بهترین راه برای ساخت چنین برنامه هایی استفاده از معماری است که در آن Vue نه تنها کل صفحه را کنترل می‌کند، بلکه به‌روزرسانی داده ها و مسیریابی را بدون نیاز به لود مجدد صفحه انجام می‌دهد. این نوع برنامه معمولاً به عنوان یک برنامه تک صفحه ای (SPA) شناخته می‌شود. -Vue ابزارهای اصلی و [پشتیبانی جامع ](/guide/scaling-up/tooling) را با تجربه فوق‌العاده‌ای برای توسعه‌دهندگان ارائه می‌دهد تا SPA‌های مدرن را بسازند، شامل: +Vue کتابخانه های اصلی و [پشتیبانی جامع از ابزارهای مورد نیاز](/guide/scaling-up/tooling) را با تجربه فوق‌العاده‌ای برای توسعه‌دهندگان ارائه می‌دهد تا SPA‌های مدرن را بسازند، شامل: - مسیریابی سمت کلاینت -- مجموعه ای فوق العاده سریع از ابزارهای مورد نیاز برای کد نویسی +- مجموعه‌ای فوق العاده سریع از ابزارهای مورد نیاز برای کد نویسی - پشتیبانی IDE -- ابزارهای توسعه مرورگر -- ادغام TypeScript +- ابزارهای توسعه در مرورگر +- پشتیبانی از TypeScript - ابزارهای تست -برنامه های تک صفحه ای (SPAs) به طور معمول نیاز به API بک اند دارند، اما شما همچنین می توانید Vue را با ابزار هایی مانند Inertia.js ترکیب کنید تا مزایای SPA را در یک مدل توسعه سرور محور ، داشته باشید. +برنامه های تک صفحه‌ای (SPA) به طور معمول نیاز به API بک اند دارند، اما شما همچنین می‌توانید Vue را با ابزار هایی مانند [Inertia.js](https://inertiajs.com) ترکیب کنید تا مزایای SPA را در یک مدل توسعه سرور محور، داشته باشید. ## فول استک / SSR {#fullstack-ssr} -هنگامی که برنامه به SEO و زمان لود محتوا (TTC) حساس است، SPAها مشکل ساز هستند. این به این دلیل است که مرورگر یک صفحه HTML تا حد زیادی خالی دریافت می کند و باید منتظر بماند تا جاوا اسکریپت قبل از رندر کردن هر چیزی، بارگیری شود. +هنگامی که برنامه به SEO و زمان لود محتوا (TTC) حساس است، SPAها مشکل ساز هستند. این به این دلیل است که مرورگر یک صفحه HTML تا حد زیادی خالی دریافت می‌کند و باید منتظر بماند تا جاوا اسکریپت قبل از رندر کردن هر چیزی، بارگیری شود. -Vue برای حل این مشکل API هایی برای "رندر" کردن برنامه از سمت سرور ارائه می دهد .این به سرور اجازه می‌دهد تا HTML از قبل رندر شده را ارسال کند و کاربران می توانند هنگام لود جاوا اسکریپت، محتوا را ببینند.سپس Vue برنامه را در سمت کاربر "تعاملی" می کند. این فرآیند به نام [رندرینگ از سمت سرور (SSR)](/guide/scaling-up/ssr) شناخته می شود و به طور چشمگیری باعث بهبود معیارهای اصلی کارایی وب مانند [Largest Contentful Paint (LCP)](https://web.dev/lcp/) می شود. +Vue برای حل این مشکل API هایی برای "رندر" کردن برنامه از سمت سرور ارائه می‌دهد. این به سرور اجازه می‌دهد تا HTML از قبل رندر شده را ارسال کند و کاربران می‌توانند در هنگام لود جاوا اسکریپت، محتوا را ببینند. سپس Vue برنامه را در سمت کاربر "تعاملی" می‌کند. این فرآیند به نام [رندرینگ سمت سرور (SSR)](/guide/scaling-up/ssr) شناخته می‌شود و به طور چشمگیری باعث بهبود معیارهای اصلی کارایی وب مانند [Largest Contentful Paint (LCP)](https://web.dev/lcp/) می‌شود. - فریم ورک هایی مبتنی بر Vue ایجاد شده‌اند، به عنوان مثال [Nuxt](https://nuxt.com/)، که به شما این امکان را می‌دهند تا از Vue و JavaScript استفاده کرده و یک برنامه Fullstack را توسعه دهید. + فریم ورک هایی مبتنی بر Vue ایجاد شده‌اند، به عنوان مثال [Nuxt](https://nuxt.com/)، که به شما این امکان را می‌دهند تا از Vue و JavaScript استفاده کرده و یک برنامه Fullstack را توسعه دهید. ## جم-استک / SSG {#jamstack-ssg} -اگر اطلاعات مورد نیاز ثابت باشند، می‌توان رندر سمت سرور را زودتر انجام داد یعنی صفحات HTML برای یک برنامه را به صورت کامل ایجاد کرد و آنها را به صورت فایل‌های استاتیک ارائه داد. این کار باعث بهبود عملکرد وب‌سایت می‌شود و فرآیند پیاده سازی را ساده‌تر می‌کند. Vue همچنین می‌تواند در این برنامه‌ها تعامل غنی برای کاربر فراهم کند. این تکنیک به عنوان 'تولید سایت استاتیک' یا همان [JAMStack](https://jamstack.org/what-is-jamstack/) شناخته می‌شود. +اگر اطلاعات مورد نیاز ثابت باشند، می‌توان رندر سمت سرور را زودتر انجام داد یعنی صفحات HTML برای یک برنامه را به صورت کامل ایجاد کرد و آنها را به صورت فایل‌های استاتیک ارائه داد. این کار باعث بهبود عملکرد وب‌سایت می‌شود و فرآیند پیاده سازی را ساده‌تر می‌کند. Vue همچنین می‌تواند در این برنامه‌ها تعامل غنی برای کاربر فراهم کند. این تکنیک به عنوان 'تولید سایت استاتیک' یا همان [JAMStack](https://jamstack.org/what-is-jamstack/) شناخته می‌شود. -دو نوع سایت استاتیک وجود دارد: تک‌صفحه‌ای و چند‌صفحه‌ای. هر دو نوع سایت را به صورت HTML استاتیک رندر می کنند. تفاوت آن‌ها این است: +دو نوع سایت استاتیک وجود دارد: تک‌صفحه‌ای و چند‌صفحه‌ای. هر دو نوع سایت را به صورت HTML استاتیک رندر می‌کنند. تفاوت آن‌ها این است: -- سیستم تک‌ صفحه ای پس از لود اولیه،صفحه را به یک برنامه تک صفحه‌ای (SPA) تبدیل می‌کند. که باعث می شود بارگذاری اولیه بیشتر طول بکشد ، اما در لود های بعدی سرعت بالاتری خواهد داشت ، چرا که به جای بارگذاری مجدد کل صفحه تنها نیاز به به‌روزرسانی جزئی محتوای صفحه دارد. +- سیستم تک‌ صفحه ای پس از لود اولیه، صفحه را به یک برنامه تک صفحه‌ای (SPA) تبدیل می‌کند. که باعث می‌شود بارگذاری اولیه بیشتر طول بکشد، اما در لود های بعدی سرعت بالاتری خواهد داشت، چرا که به جای بارگذاری مجدد کل صفحه تنها نیاز به به‌روزرسانی جزئی محتوای صفحه دارد. -- یک سیستم چند صفحه ای هر بار که به بخش دیگری از یک وب سایت می روید، یک صفحه کاملاً جدید لود می کند. نکته خوب این است که اگر صفحه نیاز به تعامل خاصی نداشته باشد، می تواند جاوا اسکریپت بسیار کمی ارسال کند - یا گاهی اوقات اصلا جاوا اسکریپت ارسال نمی کند. برخی از سیستم‌های SSG چند صفحه‌ای، مانند [Astro](https://astro.build/)، حتی به شما امکان می‌دهند که کامپوننت های Vue در HTML استاتیک اضافه کنید. +- یک سیستم چند صفحه ای هر بار که به بخش دیگری از یک وب سایت می‌روید، یک صفحه کاملاً جدید لود می‌کند. نکته خوب این است که اگر صفحه نیاز به تعامل خاصی نداشته باشد، می‌تواند جاوا اسکریپت بسیار کمی ارسال کند - یا گاهی اوقات اصلا جاوا اسکریپت ارسال نمی‌کند. برخی از سیستم‌های SSG چند صفحه‌ای، مانند [Astro](https://astro.build/)، حتی به شما امکان می‌دهند که کامپوننت های Vue در HTML استاتیک اضافه کنید. -اگر انتظار تجربه کاربری بهتر ، تعامل های کاربری پیچیده‌ تر یا کامپوننت های ثابت در صفحه وب داشته باشید،SSG تک‌صفحه‌ای مناسب‌تر خواهد بود در غیر این صورت، استفاده از SSG چند‌صفحه‌ای بهتر است. +اگر انتظار تجربه کاربری بهتر، تعامل‌های کاربری پیچیده‌ تر یا کامپوننت های ثابت در صفحه وب داشته باشید، SSG تک‌صفحه‌ای مناسب‌تر خواهد بود در غیر این صورت استفاده از SSG چند‌صفحه‌ای بهتر است. -تیم Vue همچنین یک ابزار تولید سایت استاتیک به نام [VitePress](https://vitepress.dev/) را نیز توسعه می دهد، که از آن برای این وب‌سایتی که در حال خواندن آن هستید استفاده می‌شود! VitePress از هر دو نوع از SSG پشتیبانی می‌کند. همچنین، [Nuxt](https://nuxt.com/) نیز از SSG پشتیبانی می‌کند. شما حتی می‌توانید SSR و SSG را برای مسیرهای مختلف در یک برنامه Nuxt ترکیب کنید. +تیم Vue همچنین یک ابزار تولید سایت استاتیک به نام [VitePress](https://vitepress.dev/) را نیز توسعه می‌دهد، که از آن برای این وب‌سایتی که در حال خواندن آن هستید استفاده می‌شود! VitePress از هر دو نوع از SSG پشتیبانی می‌کند. همچنین، [Nuxt](https://nuxt.com/) نیز از SSG پشتیبانی می‌کند. شما حتی می‌توانید SSR و SSG را برای مسیرهای مختلف در یک برنامه Nuxt ترکیب کنید. ## فراتر از وب {#beyond-the-web} -اگرچه Vue اساساً برای ساخت برنامه های وب طراحی شده است، اما به هیچ وجه فقط به مرورگر محدود نمی شود. شما می توانید: +اگرچه Vue اساساً برای ساخت برنامه های وب طراحی شده است، اما به هیچ وجه فقط به مرورگر محدود نمی‌شود. شما می‌توانید: - برنامه‌های دسکتاپ را با [Electron](https://www.electronjs.org/) یا [Tauri](https://tauri.app) بسازید - برنامه‌های موبایل را با [Ionic Vue](https://ionicframework.com/docs/vue/overview) بسازید