Vue.js چیست؟ آموزش کامل و جامع Vue.js

Vue.js چیست؟

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

Vue.js با معماری تدریجی خود، امکان استفاده در پروژه‌های کوچک تا برنامه‌های بزرگ سازمانی را فراهم می‌کند.
مثال ساده Vue.js
<template>
  <div id="app">
    <h1>{{ message }}</h1>
    <button @click="reverseMessage">معکوس کردن پیام</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'سلام دنیا!'
    }
  },
  methods: {
    reverseMessage() {
      this.message = this.message.split('').reverse().join('')
    }
  }
}
</script>

تاریخچه Vue.js

Vue.js در سال 2014 توسط Evan You، زمانی که در گوگل روی AngularJS کار می‌کرد، ایجاد شد. هدف اصلی، برداشتن بهترین ویژگی‌های Angular و ساخت چیزی سبک‌تر بود.

Vue.js از نسخه 1.0 تا نسخه فعلی 3.x تکامل یافته و با معرفی Composition API در نسخه 3، انقلابی در نحوه نوشتن کامپوننت‌ها ایجاد کرد.

ساختار پایه Vue.js

یک پروژه Vue.js معمولاً از کامپوننت‌های تک فایلی (SFC) تشکیل شده که شامل سه بخش template، script و style است.

ساختار یک کامپوننت Vue.js
<template>
  <div class="component">
    <h1>{{ title }}</h1>
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: 'MyComponent',
  props: {
    title: String
  }
}
</script>

<style scoped>
.component {
  margin: 20px;
  padding: 20px;
}
</style>
استفاده از کامپوننت‌های تک فایلی (SFC) باعث بهبود سازماندهی کد و افزایش قابلیت نگهداری می‌شود.

کامپوننت‌ها در Vue.js

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

انواع کامپوننت‌ها

کامپوننت‌های پایه و پویا
// کامپوننت پایه
app.component('base-button', {
  props: ['label'],
  template: `
    <button class="base-button">
      {{ label }}
    </button>
  `
})

// کامپوننت پویا
const AsyncComponent = defineAsyncComponent(() =>
  import('./components/AsyncComponent.vue')
)
استفاده از defineAsyncComponent برای بارگذاری تنبل (lazy loading) کامپوننت‌ها مفید است و می‌تواند عملکرد برنامه را بهبود بخشد.

ارتباط بین کامپوننت‌ها

ارتباط والد-فرزند
<template>
  <div>
    <child-component
      :data="parentData"
      @update="handleUpdate"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      parentData: []
    }
  },
  methods: {
    handleUpdate(newValue) {
      this.parentData = newValue
    }
  }
}
</script>

سیستم واکنش‌گرا در Vue.js

سیستم واکنش‌گرای Vue.js به طور خودکار تغییرات داده‌ها را ردیابی کرده و UI را به‌روزرسانی می‌کند.

مثال سیستم واکنش‌گرا
import { ref, reactive, computed } from 'vue'

// استفاده از ref برای مقادیر ساده
const count = ref(0)

// استفاده از reactive برای آبجکت‌ها
const state = reactive({
  users: [],
  loading: false
})

// محاسبات واکنش‌گرا
const doubleCount = computed(() => count.value * 2)

// تغییر مقادیر
function increment() {
  count.value++
  state.loading = true
}
در Vue 3، برای دسترسی به مقدار ref باید از خاصیت value استفاده کنید، اما در template این کار به طور خودکار انجام می‌شود.

دستورات Vue.js

دستورات (Directives) در Vue.js دستورالعمل‌های ویژه‌ای هستند که با پیشوند v- مشخص می‌شوند و رفتارهای خاصی به المان‌های DOM اضافه می‌کنند.

دستورات پرکاربرد Vue.js
<template>
  <div>
    <!-- نمایش شرطی -->
    <p v-if="show">این متن نمایش داده می‌شود</p>
    
    <!-- حلقه -->
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
    
    <!-- اتصال دوطرفه -->
    <input v-model="message">
    
    <!-- رویدادها -->
    <button v-on:click="handleClick">کلیک کنید</button>
    
    <!-- اتصال ویژگی‌ها -->
    <img v-bind:src="imageUrl" alt="تصویر">
  </div>
</template>
می‌توانید دستورات سفارشی خود را با استفاده از Vue.directive ایجاد کنید.

مدیریت state در Vue.js

برای مدیریت state در Vue.js، گزینه‌های مختلفی وجود دارد. Pinia (جایگزین Vuex) راه‌حل رسمی برای مدیریت state در مقیاس بزرگ است.

مثال استفاده از Pinia
// تعریف store
import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    name: '',
    isAdmin: false,
    preferences: {}
  }),
  
  getters: {
    fullName: (state) => `${state.name} عزیز`,
  },
  
  actions: {
    async fetchUserData() {
      const data = await api.getUser()
      this.name = data.name
      this.isAdmin = data.isAdmin
    }
  }
})

// استفاده در کامپوننت
import { useUserStore } from '@/stores/user'

export default {
  setup() {
    const userStore = useUserStore()
    
    return {
      user: userStore
    }
  }
}

مسیریابی در Vue.js

Vue Router کتابخانه رسمی مسیریابی برای Vue.js است که امکان ایجاد برنامه‌های تک‌صفحه‌ای (SPA) را فراهم می‌کند.

پیکربندی Vue Router
import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('@/views/Home.vue')
  },
  {
    path: '/profile/:id',
    name: 'Profile',
    component: () => import('@/views/Profile.vue'),
    meta: { requiresAuth: true }
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// محافظ مسیریابی
router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated()) {
    next('/login')
  } else {
    next()
  }
})

Composition API

Composition API روشی جدید برای نوشتن کامپوننت‌ها در Vue 3 است که امکان سازماندهی بهتر کد و استفاده مجدد از منطق را فراهم می‌کند.

مثال Composition API
import { ref, onMounted, watch } from 'vue'

export default {
  setup() {
    const count = ref(0)
    const doubleCount = computed(() => count.value * 2)
    
    function increment() {
      count.value++
    }
    
    watch(count, (newValue, oldValue) => {
      console.log(`مقدار از ${oldValue} به ${newValue} تغییر کرد`)
    })
    
    onMounted(() => {
      console.log('کامپوننت نصب شد')
    })
    
    return {
      count,
      doubleCount,
      increment
    }
  }
}
Composition API به خصوص در پروژه‌های بزرگ و برای اشتراک‌گذاری منطق بین کامپوننت‌ها مفید است.

اکوسیستم Vue.js

اکوسیستم Vue.js شامل مجموعه‌ای از ابزارها و کتابخانه‌های رسمی و غیررسمی است که توسعه را آسان‌تر می‌کنند:

ابزارهای رسمی

  • Vue CLI – ابزار خط فرمان برای ایجاد پروژه
  • Vue Router – کتابخانه مسیریابی
  • Pinia – مدیریت state
  • Vite – ابزار ساخت مدرن

کتابخانه‌های محبوب

  • VueUse – مجموعه‌ای از composable utilities
  • Nuxt.js – فریم‌ورک جامع برای Vue.js
  • Vuetify – کتابخانه UI با طراحی Material

کلمات کلیدی:

Vue.js فریم‌ورک جاوااسکریپت برنامه‌نویسی وب فرانت‌اند Composition API Single File Components Vue Router Vuex

جمع‌بندی:

در این مقاله به طور کامل با Vue.js و مفاهیم اصلی آن آشنا شدیم. از مبانی اولیه گرفته تا ویژگی‌های پیشرفته مانند Composition API را بررسی کردیم. Vue.js با ارائه یک API ساده و انعطاف‌پذیر، امکان توسعه برنامه‌های وب مدرن را فراهم می‌کند. برای تسلط بیشتر، پیشنهاد می‌شود مستندات رسمی را مطالعه کرده و پروژه‌های عملی انجام دهید.

Leave a Reply

Your email address will not be published. Required fields are marked *