جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
logo-frontendi-150
0
  • خانه
  • دوره ها
  • وبلاگ فِرانت اِندی
  • تماس با ما
ورود / عضویت
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
ورود / عضویت

وبلاگ

فرانت اندی > وبلاگ فِرانت اِندی > ویو جی اس > 200 سوال مصاحبه ویو جی اس ! بزرگترین لیست سوالات مصاحبه Vue.js !

200 سوال مصاحبه ویو جی اس ! بزرگترین لیست سوالات مصاحبه Vue.js !

12 آبان 1403
ارسال شده توسط احمد احمدنژاد
ویو جی اس
سوالات مصاحبه ویو جی اس - سوالات مصاحبه Vue.js - سوال مصاحبه vue - سوال مصاحبه ویو

می‌خوایم درباره سوالات مصاحبه یکی ازمحبوب ترین فریمورک‌های جاوااسکریپت یعنی Vue.js صحبت کنیم. اگه تو دنیای توسعه وب فعالیت داشته باشی، حتماً اسم Vue.js به گوشت خورده. این فریمورک به خاطر راحتی در یادگیری، کارایی بالا و انعطاف بینظیرش خیلی زود تونسته دل توسعه دهنده ها رو به دست بیاره.

حالا فرض کن می‌خوای تو یه مصاحبه Vue.js شرکت کنی و ازت کلی سوال درباره Vue.js بپرسن. چی می‌شه؟
یه جورایی استرس داره، نه؟ هدف این مقاله اینه که اون استرس رو ازت بگیره و با آمادگی کامل تو رو وارد مصاحبه کنه! 

تو این سوالات مصاحبه Vue.js از مفاهیم ساده مثل “کامپوننت‌ها چطور کار می‌کنن؟” گرفته تا مباحث پیشرفته مثل “چجوری می‌شه Vuex رو برای مدیریت حالت بهینه کرد” رو پوشش می‌ده.

این سوال و جواب‌ها خیلی بهت کمک می‌کنن، چون هم مروریه روی دانسته های خودت و هم بهت دید عمیق‌تری میده که بتونی Vue.js رو توی پروژه‌های واقعی بهتر به کار ببری. با این آمادگی، می‌تونی با اعتماد به نفس بری توی مصاحبه و وقتی سوال‌های پیچیده می‌پرسن، مثل یه حرفه‌ای جواب بدی.

اگه می‌خوای یه قدم جلوتر از بقیه باشی و شانس موفقیتت رو توی مصاحبه ویو جی اس بالا ببری، این راهنما دقیقاً همون چیزیه که بهش نیاز داری. پس بریم ببینیم چیا می‌تونیم یاد بگیریم و چجوری می‌تونیم Vue.js رو بهتر از همیشه درک کنیم!

بخش اول سوالات مصاحبه ویو جی اس

Vue.js چیه و چرا باید ازش استفاده کنیم؟

Vue.js یک فریمورک جاوااسکریپتی برای ساخت رابط‌های کاربری (UI) و اپلیکیشن‌های تک صفحه‌ای (SPA) هست. مزیت اصلی Vue.js اینه که خیلی ساده، منعطف و قابل یادگیریه، و در عین حال قدرت کافی برای ساخت پروژه‌های بزرگ رو هم داره.

تفاوت Vue.js با React و Angular چیست ؟

Vue.js در مقایسه با React و Angular، خیلی سبک تره! ساده‌تر از Angular و کامل‌تر از React هست. Vue.js از معماری MVVM استفاده می‌کنه، در حالی که React به صورت UI-driven و Angular یک فریمورک کامل با ابزارهای خودش هست.

کامپوننت در Vue.js چیست ؟

کامپوننت‌ها تکه‌های کوچیک و قابل استفاده مجدد از رابط کاربری هستند که می‌تونیم توی برنامه‌هامون استفاده کنیم. هر کامپوننت شامل قالب (template)، داده‌ها (data) و رفتار (methods) خاص خودشه.

دیتابایندینگ (Data Binding) در Vue.js چطور کار می‌کنه؟

 Vue.js از Data Binding برای ارتباط دادن داده‌ها با DOM استفاده می‌کنه. ما می‌تونیم به کمک قالب‌نویسی (template syntax) و دستورات مثل v-bind، اطلاعات رو به صورت پویا به عناصر HTML وصل کنیم.

واکنش‌پذیری (Reactivity) در Vue.js چیه؟

Vue.js واکنش‌پذیری رو به این شکل پیاده‌سازی می‌کنه که هر موقع داده‌های ما تغییر کنن، Vue به‌طور خودکار DOM رو به‌روزرسانی می‌کنه. این کار از طریق ردیابی وابستگی‌ها و به‌روزرسانی مؤلفه‌ها انجام می‌شه.

دستور v-if چیه و چه زمانی استفاده می‌شه؟

 v-if یک دستور شرطیه که برای نشون دادن یا پنهان کردن عناصر در DOM استفاده می‌شه. وقتی شرطی که به v-if می‌دیم true باشه، عنصر نمایش داده می‌شه.

دستور v-for چطور کار می‌کنه؟

 v-for برای تکرار کردن روی یک آرایه یا یک آبجکت و نمایش چندین عنصر استفاده می‌شه. به عنوان مثال، می‌تونیم یه لیست از آیتم‌ها رو با کمک v-for به راحتی رندر کنیم.

تفاوت بین v-show و v-if چیه؟

 v-if عنصر رو از DOM حذف می‌کنه و در صورت لزوم دوباره اضافه می‌کنه، اما v-show فقط با تنظیم استایل display عنصر رو نشون میده یا پنهان می‌کنه. بنابراین v-if برای شرط‌های سنگین‌تر بهتره و v-show برای تغییرات سریع.

چطور می‌تونیم یک property به یک کامپوننت پاس بدیم؟

برای پاس دادن داده‌ها به کامپوننت، از props استفاده می‌کنیم. می‌تونیم توی کد، props رو تعریف کنیم و مقادیری رو از والد به فرزند ارسال کنیم.

دستور v-model چه کار می‌کنه؟

v-model برای دیتابایندینگ دوطرفه استفاده می‌شه. به طور خاص، برای گرفتن ورودی‌های کاربر و به‌روزرسانی داده‌ها در Vue.

چطور می‌تونیم یک event رو در Vue.js هندل کنیم؟

می‌تونیم از دستور v-on یا از شورتکات @ برای هندل کردن رویدادها استفاده کنیم. به عنوان مثال، برای گوش دادن به رویداد کلیک: <button @click="methodName">.

چی باعث می‌شه Vue.js واکنش‌پذیر باشه؟

Vue.js از یه سیستم ردیابی استفاده می‌کنه که از متدهای JavaScript مثل Object.defineProperty() استفاده می‌کنه تا تغییرات رو تشخیص بده و رابط کاربری رو به‌روزرسانی کنه.

کامپوننت‌های تک فایل (Single File Components) چی هستن؟

کامپوننت‌های تک فایل در Vue.js فایل‌هایی با پسوند .vue هستن که شامل قالب، اسکریپت و استایل به صورت جداگانه توی یک فایل هستن. این کار سازماندهی کد رو آسون‌تر می‌کنه.

روش‌های انتقال داده بین کامپوننت‌ها چیه؟

می‌تونیم از props برای انتقال داده از والد به فرزند و از event ها برای انتقال داده از فرزند به والد استفاده کنیم. همچنین Vuex برای مدیریت حالت در اپ‌های پیچیده استفاده می‌شه.

دستور v-bind برای چیه؟

v-bind برای بایند کردن مقادیر دینامیک به ویژگی‌های HTML استفاده می‌شه. مثلا بایند کردن src به یک تصویر.

computed properties در Vue.js چیه و چه کاربردی داره؟

computed properties محاسباتی هستن که بر اساس داده‌های ما اجرا می‌شن و نتایج رو کش می‌کنن. این ویژگی برای محاسبات سنگین و بهینه‌سازی عالیه.

 

فرق computed properties با methods چیه؟

computed properties کش می‌شن، یعنی اگه داده‌های استفاده شده در computed property تغییر نکنه، Vue از نتیجه کش شده استفاده می‌کنه. اما methods همیشه محاسبه می‌شه.

watch در Vue.js چیه و چه زمانی استفاده می‌شه؟

watch به ما اجازه میده تغییرات در داده‌های خاصی رو نظارت کنیم و کدی رو اجرا کنیم. این ابزار برای واکنش به تغییرات پیچیده تر مناسبه.

lifecycle hooks در Vue.js چیه؟

lifecycle hooks متدهایی هستن که در مراحل مختلف زندگی یک کامپوننت اجرا می‌شن، مثل mount شدن، آپدیت شدن و نابود شدن. به کمک این متدها می‌تونیم رفتارهای خاصی رو کنترل کنیم.

 

چطور می‌تونیم داده‌ها رو به صورت پویا در Vue.js آپدیت کنیم؟

با تغییر مقادیر در data، Vue به‌طور خودکار DOM رو به‌روزرسانی می‌کنه چون سیستم واکنش‌پذیری Vue این تغییرات رو تشخیص میده.

بخش دوم سوالات مصاحبه ویو جی اس

مفهوم $emit در Vue.js چیه؟

 this.$emit برای ارسال یک event از یک کامپوننت فرزند به والد استفاده می‌شه. به والد اطلاع میده که یه اتفاق افتاده، مثلاً کاربر روی یه دکمه کلیک کرده.

$refs در Vue.js چیه و چه استفاده ای داره؟

this.$refs به ما اجازه میده به عناصر DOM یا کامپوننت های فرزند دسترسی مستقیم داشته باشیم. به عنوان مثال، می‌تونیم به یه اینپوت خاص برای گرفتن مقدارش دسترسی پیدا کنیم.

چطور می‌تونیم از v-model برای کامپوننت های سفارشی استفاده کنیم؟

برای کامپوننت های سفارشی، باید یک prop به نام value تعریف کنیم و با استفاده از this.$emit('input', value)، مقدار جدید رو به والد برگردونیم.

فیلترها (Filters) در Vue.js چی هستن و چطور استفاده میشن؟

فیلترها برای قالب‌بندی داده ها در template‌ ها استفاده میشن. مثلاً می‌تونیم یه عدد رو با یه فیلتر خاص فرمت کنیم. با این حال، توی Vue 3 فیلترها رسماً حذف شدن.

Vuex چیه و چه زمانی باید ازش استفاده کنیم؟

Vuex یک کتابخونه برای مدیریت حالت در Vue.js هست که مخصوص اپیکیشن های پیچیده ای که نیاز به هماهنگی بین چندین کامپوننت دارن، طراحی شده. Vuex به ما کمک میکنه تا حالت (state) رو به صورت متمرکز مدیریت کنیم.

State در Vuex چیه؟

State توی Vuex همون داده های اصلی هستن که به صورت متمرکز ذخیره می‌شن و می‌تونیم ازشون در همه کامپوننت‌ها استفاده کنیم.

Getter در Vuex چیه؟

Getter در Vuex مثل computed properties عمل میکنه و به ما کمک میکنه داده های state رو به شکل دلخواه برگردونیم، مثلاً می‌تونیم حالت فیلتر شده ای از داده ها داشته باشیم.

Mutation در Vuex چیه؟

Mutations در Vuex برای تغییر state به صورت Sync استفاده می‌شه. فقط Mutations اجازه تغییر مستقیم state رو دارن، و برای این کار باید از متدی به نام commit استفاده کنیم.

Action در Vuex چیه؟

Actions مثل Mutations هستن، ولی برای عملیات‌های غیرهمزمان (async) استفاده میشن، مثل درخواست به API. ما از dispatch برای فراخوانی Actions استفاده می‌کنیم.

چطور می‌تونیم از Vue Router برای مسیریابی استفاده کنیم؟

Vue Router کتابخونه ای هست که به ما اجازه میده مسیریابی (navigation) رو توی برنامه های تک صفحه ای انجام بدیم. با تعریف کردن مسیرها و کامپوننت ها می‌تونیم به راحتی بین صفحات جابجا بشیم.

متدهای navigation در Vue Router چیه؟

میتونیم از متدهایی مثل this.$router.push() برای رفتن به یک مسیر جدید و از this.$router.replace() برای جایگزین کردن مسیر فعلی استفاده کنیم.

مفهوم Nested Routes در Vue Router چیه؟

Nested Routes یا مسیرهای تو در تو به ما اجازه میده که چندین سطح از مسیریابی رو داشته باشیم، مثلاً یک صفحه اصلی با زیرصفحه‌ هایی که هر کدوم کامپوننت خاص خودشون رو دارن.

چطور می‌تونیم از Route Guards استفاده کنیم؟

Route Guards به ما کمک می‌کنن که دسترسی به مسیرهای خاص رو کنترل کنیم، مثلاً اگه کاربر لاگین نکرده باشه، به صفحه ورود هدایت بشه.

چطور میتونیم از انتقال (Transitions) در Vue.js استفاده کنیم؟

Vue.js از کامپوننت <transition> برای اعمال الفکت های انیمیشنی به عناصر استفاده می‌کنه. میتونیم کلاس‌های CSS یا JavaScript hooks رو برای مدیریت انیمیشن ها استفاده کنیم.

ویژگی keep-alive چیه؟

keep-alive یک کامپوننت wrapper هست که وقتی به کار گرفته بشه، کامپوننت فرزندش رو در حالت حافظه نگه میداره و باعث می‌شه که دوباره mount نشن.

چی باعث می‌شه که Vue.js برای SEO مناسب باشه یا نباشه؟

Vue.js می‌تونه برای SEO یه چالش باشه چون به طور پیشفرض یه فریمورک سمت کلاینت هست. برای بهبود SEO، می‌تونیم از SSR (رندر سمت سرور) یا ابزارهایی مثل Nuxt.js استفاده کنیم.

Nuxt.js چیه و چه کمکی به ما میکنه؟

Nuxt.js یه فریمورک بر پایه Vue.js هست که برای ساخت اپیکیشن های رندر شده سمت سرور (SSR) و اپلیکیشن‌های SPA استفاده می‌شه. Nuxt به بهینه‌سازی SEO و افزایش کارایی کمک می‌کنه.

چطور می‌تونیم یک فرم رو در Vue.js اعتبارسنجی کنیم؟

 می‌تونیم از کتابخونه هایی مثل VeeValidate استفاده کنیم، یا به صورت دستی با تعریف متدهایی برای بررسی مقادیر ورودی این کار رو انجام بدیم.

async/await چطور توی Vue.js استفاده میشه؟

میتونیم توی متدها یا actions های Vue از async/await برای ساده کردن کار با عملیات های غیر همزمان استفاده کنیم. اینطوری کد خواناتر میشه.

چطور می‌تونیم داده‌ها رو به یک API ارسال کنیم؟

می‌تونیم از axios یا fetch برای ارسال درخواست های HTTP استفاده کنیم. به عنوان مثال، با axios.post() می‌شه داده ها رو به سرور ارسال کرد.

بخش سوم سوالات مصاحبه ویو جی اس

چطور می‌تونیم از کتابخانه axios در Vue.js استفاده کنیم؟

برای استفاده از axios، ابتدا باید اون رو نصب کنیم، معمولاً با دستور npm install axios. بعد می‌تونیم اون رو در هر کامپوننتی وارد کنیم و درخواست‌های HTTP (مثل GET, POST, PUT, DELETE) رو انجام بدیم. مثال:

import axios from ‘axios’;

axios.get(‘https://api.example.com/data’)
.then(response => {
this.data = response.data;
})
.catch(error => {
console.error(error);
});

اینطوری میتونیم داده ها رو از سرور دریافت یا ارسال کنیم.

مفهوم "Slot" در Vue.js چیه؟

Slot ها به ما اجازه میدن محتوای سفارشی رو به کامپوننت های فرزند منتقل کنیم. این ویژگی باعث می‌شه کامپوننت‌ ها منعطف‌ تر باشن. مثلاً اگه یه کامپوننت کارت داریم، می‌تونیم محتواش رو با استفاده از Slot ها سفارشی کنیم:

<template>
<div class=”card”>
<slot></slot>
</div>
</template>

اینجا میتونیم هر محتوایی که می‌خوایم بین تگ‌ های کامپوننت کارت قرار بدیم.

Named Slots چیست و چه کاربردی داره؟

 Named Slots به ما امکان میده چند Slot مختلف در یک کامپوننت داشته باشیم و برای هر Slot یک نام خاص تعریف کنیم. مثلاً:

<template>
<div class=”layout”>
<header><slot name=”header”></slot></header>
<main><slot></slot></main>
<footer><slot name=”footer”></slot></footer>
</div>
</template>

اینجوری می‌تونیم بخش‌ های مختلف صفحه رو با محتوای متفاوت پر کنیم.

Scoped Slots چیست ؟

 Scoped Slots به ما اجازه می‌ده که داده هایی رو از کامپوننت فرزند به والد انتقال بدیم. این قابلیت وقتی مفیده که بخوایم داده‌ های محلی کامپوننت فرزند رو توی محتوای والد استفاده کنیم. مثال:

<template>
<child :items=”items”>
<template v-slot:default=”slotProps”>
<div v-for=”item in slotProps.items” :key=”item.id”>{{ item.name }}</div>
</template>
</child>
</template>

اینجا slotProps.items به داده‌ های کامپوننت فرزند دسترسی داره.

چرا استفاده از mixins در Vue.js مفیده؟

Mixins به ما اجازه میدن که کدهای مشترک رو بین چندین کامپوننت به اشتراک بذاریم. می‌تونیم متدها، data، و lifecycle hooks رو در یک mixin تعریف کنیم و اون‌ها رو در کامپوننت‌ های دیگه به راحتی استفاده کنیم. این کار باعث میشه کد تمیزتر و سازماندهی‌ شده تر بشه.

چطور می‌تونیم از Vue CLI برای ساخت پروژه استفاده کنیم؟

 Vue CLI ابزاریه که به ما کمک می‌کنه پروژه‌های Vue.js رو سریع و بهینه بسازیم. با دستور npm install -g @vue/cli نصب می‌شه و با vue create project-name میتونیم یه پروژه جدید بسازیم. این ابزار تنظیمات مختلفی مثل Babel، Linter و Vue Router رو برامون مدیریت می‌کنه.

چطور می‌تونیم پلاگین‌ های شخصی‌ سازی‌ شده رو در Vue.js بسازیم؟

برای ساخت یه پلاگین سفارشی در Vue.js، میتونیم یک فایل جدید ایجاد کنیم و داخلش یک آبجکت رو تعریف کنیم که متدی به نام install داره. این متد موقع نصب پلاگین اجرا میشه:

export default {
install(Vue) {
Vue.prototype.$myMethod = function () {
console.log(‘این متد شخصی منه!’);
};
}
};

بعد میتونیم این پلاگین رو با Vue.use() در پروژمون نصب کنیم.

چطور میتونیم متد های lifecycle رو در Vue.js بهینه کنیم؟

برای بهینه کردن متدهای lifecycle، باید از هر متد در جای مناسبش استفاده کنیم. به عنوان مثال:

  • created: برای دریافت داده‌ ها از API به محض ساخته شدن کامپوننت.
  • mounted: برای انجام عملیات‌ هایی که به دسترسی به DOM نیاز دارن.
  • beforeDestroy: برای پاک کردن تایمرها یا لغو اشتراک‌ها.
چطور می‌تونیم از asyncData در Nuxt.js استفاده کنیم؟

asyncData یک متد ویژه در Nuxt.js هست که به ما اجازه میده قبل از رندر شدن کامپوننت، داده های مورد نیاز رو بگیریم. این متد بصورت async عمل میکنه و داده هارو مستقیم به data برمیگردونه. مثال:

export default {
async asyncData({ params }) {
const data = await fetch(`https://api.example.com/item/${params.id}`);
return { item: await data.json() };
}
};

اینجوری داده ها قبل از نمایش به کاربر گرفته میشن و صفحه سریعتر لود میشه.

چطور میتونیم از Vue.observable استفاده کنیم؟

Vue.observable در Vue 2 برای ساختن یک آبجکت واکنش پذیر استفاده میشه. این ابزار وقتی مفیده که می‌خوایم یک state ساده و مشترک بین چند کامپوننت داشته باشیم، بدون استفاده از Vuex:

const state = Vue.observable({ count: 0 });

export default {
methods: {
increment() {
state.count++;
}
}
};

این آبجکت توی همه کامپوننت‌ ها به‌روزرسانی میشه.

چرا به رندر سمت سرور (SSR) نیاز داریم؟

رندر سمت سرور (SSR) باعث میشه محتوای صفحه قبل از ارسال به مرورگر رندر بشه. این کار برای بهبود SEO و سرعت بارگذاری صفحات خیلی مفیده، چون موتورهای جستجو و کاربران زودتر به محتوای کامل دسترسی پیدا میکنن.

کامپوننت Async چیه و چه کاربردی داره؟

کامپوننت‌های Async برای لود کردن داینامیک کامپوننت‌ها به کار میرن. اینطوری فقط وقتی که لازم باشن، دانلود میشن و سرعت بارگذاری صفحه بالا میره:

const AsyncComponent = () => import(‘./MyComponent.vue’);

این روش بهینه سازی خوبی برای پروژه‌های بزرگه.

چطور می‌تونیم از رندر کردن شرطی در Vue.js استفاده کنیم؟

می‌تونیم از v-if, v-else, و v-else-if برای رندر کردن شرطی استفاده کنیم. این دستورات باعث میشن که عنصر فقط وقتی شرایط خاصی برقرار باشه، نمایش داده بشه. مثال:

<p v-if=”isLoggedIn”>خوش اومدی!</p>
<p v-else>لطفاً وارد حساب کاربری شو.</p>

از v-pre در Vue.js برای چی استفاده می‌شه؟

v-pre یک دستور خاصه که از رندر کردن یا بایند کردن داده‌ها جلوگیری میکنه. وقتی این دستور رو روی یک بخش از قالب استفاده کنیم، Vue اون قسمت رو نادیده می‌گیره. این کار برای بهبود عملکرد یا نمایش خام داده ها مفیده.

تفاوت بین v-once و v-pre چیه؟

v-once باعث میشه که عنصر فقط یک بار رندر بشه و دیگه بروزرسانی نشه، حتی اگه داده‌ها تغییر کنن. اما v-pre فقط از رندر شدن و پردازش Vue جلوگیری میکنه. v-once برای بهینه سازی محتوای ثابت خیلی مفیده.

چطور می‌تونیم در Vue.js خطاهای کامپوننت‌ها رو مدیریت کنیم؟

می‌تونیم از یک هوک به نام errorCaptured استفاده کنیم. این hook وقتی یک خطا در طول رندرینگ یا lifecycle hooks رخ می‌ده، فراخوانی میشه:

errorCaptured(err, vm, info) {
console.error(err);
return false; // برای جلوگیری از انتشار خطا
}

این متد کمک میکنه خطاها رو لاگ و مدیریت کنیم.

چطور میتونیم در Vue.js از دستور v-cloak استفاده کنیم؟

v-cloak یک ویژگی ویژه در Vue.js هست که برای مخفی کردن محتوای HTML تا وقتی که Vue آماده بشه، استفاده میشه. معمولاً با یه استایل ساده استفاده میکنیم:

[v-cloak] {
display: none;
}

این کار باعث میشه محتوای پیش از لود شدن Vue نمایش داده نشه.

چطور می‌تونیم از vue-devtools استفاده کنیم؟

vue-devtools یک افزونه مرورگره که برای دیباگ کردن برنامه‌های Vue.js خیلی مفیده. این ابزار به ما امکان می‌ده state، رویدادها و ساختار کامپوننت ها رو بررسی کنیم. می‌تونیم اون رو برای مرورگرهای Chrome یا Firefox نصب کنیم.

چطور می‌تونیم از transition ها روی کامپوننت ها استفاده کنیم؟

برای اعمال transition به کامپوننت‌ ها می‌تونیم از کامپوننت <transition> استفاده کنیم. می‌تونیم کلاس‌های CSS برای انیمیشن‌ های ورود و خروج تعریف کنیم:

<transition name=”fade”>
<div v-if=”show”>سلام دنیا!</div>
</transition>

و استایل:

.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}

اینطوری انیمیشن‌ ها به راحتی اعمال میشن.

چه چیزهایی باعث می‌شه Vue.js سریع و بهینه باشه؟

Vue.js از یه سیستم مجازی DOM (Virtual DOM) برای بهینه کردن تغییرات استفاده میکنه. این کار باعث میشه فقط قسمت‌ های ضروری دوباره رندر بشن. همچنین میتونیم از تکنیک‌ های دیگه مثل lazy loading، کامپوننت‌ های Async، و استفاده بهینه از computed properties و watch برای بهبود عملکرد استفاده کنیم.

بخش چهارم سوالات مصاحبه ویو جی اس

مفهوم Render Function در Vue.js چیه؟

Render Function به ما اجازه میده که به جای استفاده از قالب‌ های HTML معمولی (template)، خودمون بصورت  برنامه‌ نویسی عناصر رو تعریف کنیم. با استفاده از render می‌تونیم بهینه‌ تر و منعطف‌ تر عمل کنیم، به خصوص وقتی که نیاز به دستکاری‌ های پیچیده روی DOM داریم. مثال:

export default {
render(h) {
return h(‘div’, { class: ‘my-class’ }, ‘سلام Vue!’);
}
};

این روش وقتی به درد می‌خوره که قالب‌های داینامیک‌ تر و پیچیده‌ تری داشته باشیم.

Functional Components چیست؟

Functional Components کامپوننت‌ های سبکی هستن که حالت (state) و lifecycle hooks ندارن. این کامپوننت‌ ها فقط یک تابع ساده هستن که props میگیرن و یه خروجی رندر می‌کنن. این نوع کامپوننت‌ ها وقتی مفیدن که نیاز به کدی سریع‌ تر و بهینه‌ تر داشته باشیم.

چطور می‌تونیم یه پروژه Vue.js رو بهینه کنیم؟

برای بهینه کردن یه پروژه Vue.js میتونیم:

  • استفاده از lazy loading برای کاهش حجم اولیه.
  • Minify کردن فایل‌های JavaScript و CSS.
  • استفاده از کامپوننت‌ های Async.
  • کش کردن داده‌ های واکشی شده.
  • استفاده از v-once برای جلوگیری از رندر مجدد عناصر ثابت. این تکنیک‌ ها سرعت بارگذاری و عملکرد برنامه رو بهبود میبخشن.
Code Splitting چیست و چطور توی Vue.js ازش استفاده میکنیم؟

Code Splitting باعث میشه کدها به بخش های کوچک تر تقسیم بشن و فقط وقتی که نیاز داریم، لود بشن. این کار به کمک ویژگی‌ های Webpack و Vue انجام میشه. مثال:

const MyComponent = () => import(‘./MyComponent.vue’);

اینطوری فقط وقتی به این کامپوننت نیاز داریم، لود میشه و حجم اولیه برنامه کاهش پیدا میکنه.

رندر سمت سرور (SSR) در Vue.js چطور پیاده سازی میشه؟

برای پیاده‌ سازی SSR در Vue.js، میتونیم از ابزارهایی مثل Nuxt.js استفاده کنیم. SSR باعث میشه محتوا روی سرور رندر بشه و به صورت HTML خام به مرورگر ارسال بشه. این کار باعث بهبود SEO و سریعتر لود شدن صفحه میشه، چون مرورگر لازم نیست همه JavaScript رو برای رندر کردن اجرا کنه.

چطور می‌تونیم یه Directive سفارشی در Vue.js بسازیم؟

برای ساختن یه Directive سفارشی، از Vue.directive استفاده میکنیم. به عنوان مثال، یه Directive برای تغییر رنگ متن میسازیم:

Vue.directive(‘color’, {
bind(el, binding) {
el.style.color = binding.value;
}
});

اینطوری می‌تونیم از v-color="'red'" توی قالب ها استفاده کنیم تا رنگ متن تغییر کنه.

Vue.js Plugins چیست و چطور می‌تونیم ازشون استفاده کنیم؟

پلاگین‌ ها در Vue.js به ما اجازه میدن که قابلیت‌ های اضافی به پروژه‌ خودمون اضافه کنیم. برای استفاده از یک پلاگین، اول باید اون رو نصب کنیم و بعد از Vue.use() برای وارد کردنش استفاده کنیم. مثلاً برای استفاده از vue-router:

import Vue from ‘vue’;
import VueRouter from ‘vue-router’;

Vue.use(VueRouter);

این کار به ما امکان میده قابلیت مسیریابی رو به برنامه‌ خودمون اضافه کنیم.

Vue.extend چیست و چه کاربردی داره؟

Vue.extend یه متد هست که برای ساختن یه زیرکلاس از Vue استفاده میشه. این کار به ما اجازه میده کامپوننت‌ های سفارشی بسازیم و بعد از اون‌ها توی پروژمون استفاده کنیم. مثال:

const MyComponent = Vue.extend({
template: ‘<p>سلام، این یه کامپوننت سفارشی هست!</p>’
});

این روش وقتی مفیده که بخوایم کلاس‌ های مختلف از Vue رو ایجاد کنیم.

فرق Vue.js با jQuery چیه؟

Vue.js یک فریمورک مدرن جاوااسکریپت با ویژگی‌هایی مثل کامپوننت‌ ها، رندر واکنش‌ پذیر و سیستم دیتابایندینگ است، در حالی که jQuery یک کتابخونه سبک برای دستکاری DOM و ایجاد افکت‌ ها هست. Vue.js ساختارمندتر و برای اپلیکیشن‌ های پیچیده مناسب‌تره، در حالی که jQuery بیشتر برای کارهای ساده و تعاملات سریع استفاده میشه.

چطور می‌تونیم از Vue.js برای ساخت یه اپلیکیشن چند زبانه استفاده کنیم؟

برای ساخت یه اپلیکیشن چند زبانه در Vue.js، معمولاً از کتابخونه‌ هایی مثل vue-i18n استفاده میکنیم. این ابزار به ما امکان می‌ده متون برنامه رو براساس زبان انتخابی کاربر تغییر بدیم:

import Vue from ‘vue’;
import VueI18n from ‘vue-i18n’;

Vue.use(VueI18n);

const messages = {
en: { message: ‘Hello’ },
fa: { message: ‘سلام’ }
};

const i18n = new VueI18n({
locale: ‘fa’,
messages
});

new Vue({ i18n }).$mount(‘#app’);

این کار باعث میشه که اپلیکیشن به راحتی قابل ترجمه باشه.

چطور می‌تونیم از Vue.js برای ساخت Progressive Web App (PWA) استفاده کنیم؟

Vue.js ابزارهایی مثل Vue CLI رو برای ساخت PWA ارائه میده. وقتی پروژه رو ایجاد میکنیم، می‌تونیم PWA رو به عنوان یک افزونه انتخاب کنیم. این کار باعث میشه که اپلیکیشن به قابلیت هایی مثل ذخیره در حالت آفلاین و نصب شدن روی دستگاه‌ های مختلف مجهز بشه.

چطور میتونیم Vue.js رو با TypeScript ترکیب کنیم؟

برای استفاده از TypeScript با Vue.js، می‌تونیم پروژه‌مون رو با vue create ایجاد کنیم و TypeScript رو به عنوان گزینه انتخاب کنیم. اینطوری می‌تونیم از تایپ‌های استاتیک و مزایای TypeScript در Vue.js بهره‌مند بشیم. فایل‌های کامپوننت‌هامون با پسوند .vue می‌مونن، اما اسکریپت‌ها به جای script از script lang="ts" استفاده می‌کنن.

Renderless Components چیست ؟

 Renderless Components کامپوننت‌ هایی هستن که به جای تولید قالب HTML، فقط منطق یا داده‌ ها رو مدیریت میکنن. این کامپوننت‌ ها معمولاً برای جدا کردن منطق از رندرینگ و بهبود قابلیت استفاده مجدد به کار می‌رن.

چطور می‌تونیم محتوای HTML خام رو در Vue.js بایند کنیم؟

می‌تونیم از دستور v-html برای بایند کردن محتوای HTML خام استفاده کنیم. با این حال، باید خیلی احتیاط کنیم چون این کار می‌تونه باعث خطرات امنیتی مثل XSS بشه:

<p v-html=”rawHtml”></p>

اینجا rawHtml می‌تونه یک رشته حاوی HTML باشه که مستقیماً رندر می‌شه.

چطور می‌تونیم عملکرد یک کامپوننت رو پروفایل کنیم؟

برای پروفایل کردن عملکرد یه کامپوننت، می‌تونیم از ابزار vue-devtools استفاده کنیم. این ابزار به ما اجازه میده عملکرد و مصرف منابع هر کامپوننت رو بررسی کنیم و ببینیم که کدوم بخش‌ ها نیاز به بهینه‌ سازی دارن.

چطور میتونیم یک فرم بزرگ و پیچیده رو توی Vue.js مدیریت کنیم؟

برای مدیریت فرم‌های پیچیده در Vue.js، میتونیم از استراتژی‌ هایی مثل:

  • استفاده از VeeValidate یا دیگر کتابخونه‌ های اعتبارسنجی.
  • ذخیره کردن وضعیت فرم در Vuex برای مدیریت بهتر.
  • تقسیم کردن فرم به چندین کامپوننت کوچیک‌تر برای مدیریت آسان‌ تر.
چطور میتونیم داده‌ ها رو قبل از نمایش در Vue.js فیلتر کنیم؟

میتونیم از computed properties برای فیلتر کردن داده‌ ها قبل از نمایش استفاده کنیم. این روش عملکرد بهتری نسبت به استفاده از روش‌های template-based داره و باعث میشه کد ما تمیزتر بشه.

Reactive References در Vue 3 چیست ؟

ref تو vue 3 به ما اجازه می‌ده که متغیرهای واکنش‌ پذیر بسازیم. این متغیرها بطور خودکار با تغییر داده‌ ها، کامپوننت رو به‌روزرسانی میکنن. مثال:

import { ref } from ‘vue’;

const count = ref(0);
count.value++;

این ویژگی باعث میشه که با TypeScript و Composition API بهتر کار کنیم.

چطور میتونیم از Composition API در Vue 3 استفاده کنیم؟

Composition API یک روش جدید برای ساخت کامپوننت‌ ها در Vue 3 هست که به جای استفاده از data, methods و دیگر متدهای معمولی، از توابعی مثل ref, computed, و watch استفاده میکنه. این روش کد رو ساختارمندتر و قابل تست‌ تر می‌کنه:

import { ref } from ‘vue’;

export default {
setup() {
const count = ref(0);

function increment() {
count.value++;
}

return { count, increment };
}
};

فرق بین Vue 2 و Vue 3 چیه؟

Vue 3 تغییرات زیادی داشته، از جمله:

  • استفاده از Composition API برای ساختار بهتر کد.
  • بهبود عملکرد و کاهش حجم فریمورک.
  • پشتیبانی بهتر از TypeScript.
  • ویژگی‌هایی مثل Teleport و Fragments. این تغییرات باعث می‌شه Vue 3 قدرتمندتر و انعطاف‌ پذیرتر باشه.

بخش پنجم سوالات مصاحبه ویو جی اس

Teleport در Vue 3 چیست و چه کاربردی داره؟

Teleport یک ویژگی جدید در Vue 3 هست که به ما اجازه می‌ده عناصر DOM رو به جایی خارج از والد اصلی‌ شون منتقل کنیم. این ویژگی برای رندر کردن اجزایی مثل دیالوگ‌ ها یا مدال‌ ها که باید مستقیماً در بالای صفحه ظاهر بشن، خیلی مفیده:

<teleport to=”body”>
<div class=”modal”>این یه مدال هست!</div>
</teleport>

با to="body" مشخص میکنیم که این عنصر به بدنه‌ ی صفحه منتقل بشه.

Fragments در Vue 3 چیست و چرا مهمه؟

در Vue 2، هر کامپوننت باید دقیقاً یک عنصر والد داشته باشه، ولی در Vue 3، با استفاده از Fragments می‌تونیم چندین عنصر ریشه‌ ای داشته باشیم، بدون نیاز به یک والد اضافی. این ویژگی باعث می‌شه کد HTML ما تمیزتر و بهینه‌ تر بشه.

Suspense در Vue 3 چیست ؟

Suspense یک کامپوننت جدید در Vue 3 هست که به ما اجازه میده بارگذاری محتوای غیر همزمان رو مدیریت کنیم. این ویژگی برای نمایش یک حالت loading تا وقتی که داده‌ ها به طور کامل بارگیری بشن، خیلی مفیده:

<Suspense>
<template #default>
<MyComponent />
</template>
<template #fallback>
<p>در حال بارگذاری…</p>
</template>
</Suspense>

اینطوری میتونیم تجربه کاربری بهتری برای کاربران فراهم کنیم.

چطور میتونیم از API Composition و Options در Vue 3 با هم استفاده کنیم؟

در Vue 3 میتونیم از هر دو  API بصورت ترکیبی استفاده کنیم. یعنی هم میتونیم از روش‌های قدیمی مثل data, methods, و computed استفاده کنیم و هم از setup برای مدیریت منطق واکنش‌ پذیر بهره ببریم. این انعطاف‌ پذیری به ما اجازه میده به تدریج پروژه‌هامون رو به Vue 3 منتقل کنیم.

Reactive vs. Ref در Vue 3 چیه؟

reactive یک آبجکت واکنش‌ پذیر کامل ایجاد میکنه، در حالی که ref برای متغیرهای ساده به کار میره. مثلاً:

import { reactive, ref } from ‘vue’;

const state = reactive({ count: 0 });
const count = ref(0);

از ref برای مقادیر منفرد و از reactive برای آبجکت‌ های پیچیده استفاده می‌کنیم. ref نیاز به دسترسی به مقدار با .value داره، اما reactive به طور مستقیم کار می‌ کنه.

Provide و Inject در Vue.js چیست ؟

 Provide و Inject به ما اجازه میدن داده‌ ها رو بین کامپوننت‌ ها بدون استفاده از props یا Vuex به اشتراک بذاریم. provide داده‌ ها رو در یک کامپوننت والد فراهم می‌کنه و inject اون داده‌ ها رو در کامپوننت‌ های فرزند دریافت میکنه. این روش برای مدیریت وابستگی‌ های عمیق و پیچیده مفیده:

// والد
provide() {
return { message: ‘سلام از والد!’ };
}

// فرزند
inject: [‘message’]

Shallow Ref و Shallow Reactive در Vue 3 چیست ؟

shallowRef و shallowReactive برای ایجاد آبجکت‌ های واکنش‌ پذیر به کار میرن که فقط سطح بالای داده‌ ها رو ردیابی می‌کنن. این یعنی تغییرات در مقادیر داخلی، واکنش‌ پذیری رو فعال نمی‌کنه. این ویژگی‌ ها برای بهینه کردن عملکرد پروژه مفیده.

Vue Router Guards چیست و چطور ازشون استفاده میکنیم؟

 Vue Router Guards برای کنترل دسترسی به مسیرها استفاده میشه. به عنوان مثال، می‌تونیم بررسی کنیم که آیا کاربر لاگین کرده یا نه، و در صورت عدم دسترسی، به مسیر دیگه‌ ای هدایتش کنیم:

router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isAuthenticated) {
next(‘/login’);
} else {
next();
}
});

این کار امنیت و مدیریت دسترسی رو در اپلیکیشن راحت‌ تر می‌کنه.

چطور میتونیم داده‌ های فرم رو در Vue.js اعتبار سنجی کنیم؟

میتونیم از کتابخونه‌ هایی مثل VeeValidate یا Yup برای اعتبارسنجی فرم‌ها استفاده کنیم. یا می‌تونیم متدهای سفارشی بنویسیم و داده‌ها رو قبل از ارسال بررسی کنیم. مثال:

validateForm() {
if (!this.name) {
this.errors.push(‘اسم لازمه!’);
}
}

اینطوری می‌تونیم خطا های فرم رو مدیریت کنیم.

Scoped CSS در Vue.js چیست ؟

Scoped CSS به ما اجازه میده که استایل‌ های ما فقط روی کامپوننت مربوطه اثر بذارن و به بقیه کامپوننت‌ ها نفوذ نکنن. برای این کار از ویژگی scoped استفاده می‌کنیم:

<style scoped>
.my-class {
color: red;
}
</style>

این کار باعث میشه که تداخل استایل‌ ها بین کامپوننت‌ ها به حداقل برسه.

چطور میتونیم متد های کامپوننت والد رو از فرزند فراخوانی کنیم؟

برای فراخوانی متدهای والد از فرزند، معمولاً از this.$emit برای ارسال یک event به والد استفاده میکنیم. والد این event رو گوش میده و متد مربوطه رو اجرا میکنه:

<!– در والد –>
<MyComponent @customEvent=”myMethod” />

<!– در فرزند –>
this.$emit(‘customEvent’);

Event Bus در Vue.js چیست ؟

 Event Bus یک شی ساده Vue هست که برای انتقال داده‌ها یا event‌ها بین کامپوننت‌ های غیرمرتبط استفاده میشه. برای ساخت Event Bus:

const EventBus = new Vue();

و بعد میتونیم از EventBus.$emit() و EventBus.$on() برای ارسال و گوش دادن به event‌ها استفاده کنیم. با این حال، در پروژه‌ های بزرگ بهتره از Vuex یا Composition API استفاده کنیم.

چطور میتونیم یک Modal سفارشی در Vue.js بسازیم؟

برای ساختن یه Modal سفارشی، می‌تونیم از کامپوننت‌ های قابل استفاده مجدد استفاده کنیم. معمولاً از v-if برای کنترل نمایش و از teleport برای انتقال به body استفاده می‌کنیم:

<teleport to=”body”>
<div v-if=”showModal” class=”modal”>محتوای مدال</div>
</teleport>

اینطوری کنترل بیشتری روی نمایش و انتقال مدال داریم.

چطور میتونیم یک پروژه Vue.js رو تست کنیم؟

برای تست پروژه‌های Vue.js می‌تونیم از ابزارهایی مثل Jest برای تست واحد (unit tests) و Cypress برای تست‌ های end-to-end استفاده کنیم. این ابزارها کمک می‌کنن تا مطمئن بشیم کامپوننت‌ ها درست کار می‌کنن و تعاملات کاربر بدون مشکل هستن.

WatchEffect در Vue 3 چیست ؟

watchEffect یکی از ویژگی‌ های Composition API در Vue 3 هست که به طور خودکار وابستگی‌ ها رو دنبال می‌کنه و وقتی داده‌ها تغییر میکنن، اثر (effect) رو دوباره اجرا می‌کنه. این ابزار برای کار هایی مثل بروزرسانی UI یا اجرای کدهای واکنش‌ پذیر خیلی مفیده:

import { watchEffect } from ‘vue’;

watchEffect(() => {
console.log(state.value);
});

Lifecycle Hooks در Composition API چیست ؟

در Composition API، میتونیم از متدهای onMounted, onUnmounted, onUpdated و دیگر hooks برای مدیریت مراحل مختلف زندگی کامپوننت استفاده کنیم. این متدها به ما اجازه میدن کدی رو در زمان مناسب اجرا کنیم:

import { onMounted } from ‘vue’;

onMounted(() => {
console.log(‘کامپوننت لود شد!’);
});

Vue 3 Migration Build چیست؟

Vue 3 Migration Build یک نسخه خاص از Vue 3 هست که به توسعه‌ دهندگان کمک میکنه پروژه‌های Vue 2 خودشون رو به Vue 3 به تدریج انتقال بدن. این ابزار هشدارهایی رو درباره تغییرات ناسازگار نشون میده و به رفع اون‌ها کمک میکنه.

چطور میتونیم از v-bind بطور کامل استفاده کنیم؟

v-bind برای بایند کردن ویژگی‌ های HTML به داده‌های Vue استفاده میشه. میتونیم ازش برای یک ویژگی خاص یا برای بایند کردن چندین ویژگی به صورت آبجکت استفاده کنیم:

<img v-bind:src=”imageUrl” :alt=”imageAlt” />
<!– یا به این شکل –>
<div v-bind=”objectOfAttributes”></div>

این کار مدیریت ویژگی‌ها رو راحت‌ تر میکنه.

چطور میتونیم از v-on به صورت پیشرفته استفاده کنیم؟

v-on برای گوش دادن به رویدادها استفاده میشه و می‌تونیم از شورتکات @ هم استفاده کنیم. همچنین میتونیم modifiers مثل .prevent یا .stop برای کنترل بهتر رویدادها اضافه کنیم:

<button @click.prevent=”myMethod”>کلیک کن</button>

اینطوری از رفتار پیش‌ فرض جلوگیری میکنیم.

فرق بین Vue.js و دیگر فریمورک‌ های جاوااسکریپتی مثل Svelte چیه؟

 Vue.js یک فریمورک قدرتمند با جامعه کاربری بزرگ و ویژگی‌ هایی مثل Virtual DOM، کامپوننت‌ ها و سیستم واکنش‌پذیریه. Svelte اما به جای استفاده از Virtual DOM، در زمان کامپایل کد بهینه تولید می‌کنه. این باعث می‌شه Svelte سریع‌ تر و سبک‌ تر باشه، ولی Vue.js ابزارها و اکوسیستم گسترده‌ تری داره.

نکات پایانی برای موفقیت در مصاحبه Vue.js !

حالا که با کلی سوال و جواب درباره Vue.js آشنا شدی، وقتشه چند تا نکته عمومی هم در مورد موفقیت توی مصاحبه‌ها مرور کنیم. مهم‌ترین چیزی که باید بدونی اینه که مصاحبه فقط امتحان دانش فنی نیست؛ بلکه توانایی برقراری ارتباط، حل مسئله، و مدیریت استرس هم نقش مهمی تو موفقیتت دارن.

1. به خودت اعتماد کن: خیلی از اوقات، کاندیدا ها دانش کافی دارن، ولی به خاطر استرس یا ترس از قضاوت شدن نمیتونن اون رو درست بیان کنن. مهمه که به خودت و چیزهایی که بلدی ایمان داشته باشی. حتی اگه جواب سوالی رو ندونی، صادق بودن و نشون دادن اینکه داری به یه راه‌ حل فکر میکنی، بهتر از اینه که بی‌ هدف جواب بدی.

2. آماده باش برای سوالات غیرمنتظره: همیشه همه چیز طبق انتظار پیش نمیره. گاهی ممکنه سوالات عجیبی بپرسن که نیاز به فکر کردن داره یا حتی مسائل غیر فنی که بخوان ببینن چطور به چالش‌ ها پاسخ میدی. تو این شرایط، آروم باش و منطقی فکر کن. یادت باشه، همه از قبل همه چیز رو نمیدونن.

3. نمونه‌کارهای خودت رو بشناس: اگه قبلاً پروژه‌ای با Vue.js کار کردی، حتماً آماده باش تا درباره چالش‌ها و تصمیمات فنی‌ ای که توی اون پروژه‌ها داشتی صحبت کنی. مصاحبه‌کننده‌ ها دوست دارن بدونن چطور از دانش فنی‌ت توی پروژه‌ های واقعی استفاده کردی.

4. سوال بپرس: مصاحبه یه خیابون دوطرفه‌ست. یعنی همون‌ قدر که اونا می‌خوان تو رو بشناسن، تو هم باید بفهمی این شرکت و تیم مناسب تو هست یا نه. سوال‌هایی درباره فرهنگ کاری، ابزارهایی که استفاده میکنن یا پروژه‌ هایی که روی اون‌ ها کار میکنن، میتونه نشون بده که تو هم علاقه‌ مندی و تحقیق کردی.

در نهایت، یادت باشه که یادگیری هیچ‌ وقت تموم نمیشه. حتی اگه همه سوالات رو نتونی جواب بدی، تجربه مصاحبه بهت کمک میکنه نقاط ضعف و قوت خودت رو بشناسی و برای آینده بهتر آماده بشی. مصاحبه‌ ها میتونن چالش‌ برانگیز باشن، ولی اگه خوب آماده بشی، می‌تونی ازشون لذت ببری و یه تجربه ارزشمند به دست بیاری.

موفق باشی و امیدوارم خیلی زود خبر موفقیتت رو بشنویم 🙂

درباره احمد احمدنژاد

من یه برنامه نویس و توسعه دهنده وب هستم که عاشق دنیای صفر و یکم❤️

نوشته‌های بیشتر از احمد احمدنژاد
قبلی نسخه جدید Next.js 15 منتشر شد! تغییرات next.js 15 چیست ؟
بعدی 200 سوال مصاحبه انگولار ! بزرگترین لیست سوالات مصاحبه Angular !

4 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • رها گفت:
    7 آذر 1403 در 16:13

    عالی بود سوالات مفید و خوبی رو انتخاب کردید و با توضیح مختصر و مفید
    ممنون
    موفق باشدی

    پاسخ
    • احمد احمدنژاد گفت:
      9 آذر 1403 در 13:29

      سلام رها جان خوشحالم که برات مفید بودن سوالات 🙂
      مرسی از نظر لطفت

      پاسخ
  • K7 گفت:
    8 اردیبهشت 1404 در 21:44

    عالی. مختصر و مفید. تشکر++

    پاسخ
    • احمد احمدنژاد گفت:
      18 اردیبهشت 1404 در 02:34

      قرباانت 🙂 ممنون از نظر لطفت 🙂

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پیاده سازی و مشاوره فِرانت اِند!

پیاده سازی اصولی و بهینه پروژه های فِرانت اِند در کمترین زمان ممکن 🙂

پیاده سازی و مشاوره

صفحات فِرانت اِندی
  • وبلاگ
  • تماس با ما
  • درباره ما
تماس با ما
  • [email protected]
  • 09102944692
شبکه های اجتماعی
Youtube Instagram Telegram
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://frontendi.com/?p=13909
مرورگر شما از HTML5 پشتیبانی نمی کند.