Vue Router

From binaryoption
Jump to navigation Jump to search
Баннер1
    1. Vue Router: دليل شامل للمبتدئين

المقدمة

Vue Router هي مكتبة رسمية لإدارة التنقل في تطبيقات Vue.js. تسمح لك بإنشاء تطبيقات ذات صفحة واحدة (Single Page Applications - SPAs) مع تجربة مستخدم سلسة، حيث يتم تحديث المحتوى ديناميكيًا دون الحاجة إلى إعادة تحميل الصفحة بالكامل. هذا المقال موجه للمبتدئين في Vue.js و Vue Router، ويهدف إلى تزويدهم بفهم شامل لكيفية استخدام هذه المكتبة القوية. سنغطي المفاهيم الأساسية، وكيفية الإعداد، وكيفية تعريف المسارات، وكيفية التنقل بينها، بالإضافة إلى بعض الميزات المتقدمة.

المفاهيم الأساسية

  • **التطبيقات ذات الصفحة الواحدة (SPAs):** SPAs هي تطبيقات ويب تقوم بتحميل صفحة HTML واحدة فقط، ثم تقوم بتحديث المحتوى ديناميكيًا باستخدام JavaScript. هذا يوفر تجربة مستخدم أسرع وأكثر سلاسة مقارنة بالتطبيقات التقليدية متعددة الصفحات.
  • **المسارات (Routes):** المسارات تحدد العلاقة بين عنوان URL معين ومكون Vue.js الذي يجب عرضه. على سبيل المثال، يمكن أن يكون لديك مسار `/about` يعرض مكون "About".
  • **الموجّه (Router):** الموجّه هو الكائن الذي يدير المسارات ويسمح لك بالتنقل بينها. يقوم بتتبع عنوان URL الحالي وعرض المكون المناسب بناءً على المسار المحدد.
  • **<router-link>:** هذا المكون هو بديل لعلامة `<a>` التقليدية، ويستخدم للتنقل بين المسارات في تطبيقك. يقوم تلقائيًا بإنشاء عنوان URL الصحيح ويمنع إعادة تحميل الصفحة.
  • **<router-view>:** هذا المكون هو المكان الذي يتم فيه عرض المكون المرتبط بالمسار الحالي. يعمل كمكان نائب (placeholder) يتم استبداله بالمكون المناسب.

الإعداد

قبل أن تتمكن من استخدام Vue Router، يجب عليك تثبيته في مشروعك. يمكنك القيام بذلك باستخدام npm أو yarn:

```bash npm install vue-router ```

أو

```bash yarn add vue-router ```

بعد التثبيت، تحتاج إلى استيراد Vue Router في ملف `main.js` الخاص بك وتهيئته:

```javascript import { createApp } from 'vue' import App from './App.vue' import { createRouter, createWebHistory } from 'vue-router' import Home from './components/Home.vue' import About from './components/About.vue'

const routes = [

 { path: '/', component: Home },
 { path: '/about', component: About }

]

const router = createRouter({

 history: createWebHistory(),
 routes

})

const app = createApp(App) app.use(router) app.mount('#app') ```

في هذا المثال:

  • نقوم باستيراد `createRouter` و `createWebHistory` من `vue-router`.
  • نقوم بتعريف مصفوفة `routes` تحتوي على تعريفات المسارات.
  • نقوم بإنشاء كائن `router` باستخدام `createRouter`، ونمرر `createWebHistory` لتحديد وضع التاريخ (history mode). الوضع `createWebHistory` هو الأبسط والأكثر شيوعًا.
  • نقوم بتركيب `router` على تطبيق Vue باستخدام `app.use(router)`.

تعريف المسارات

تعريف المسارات هو الخطوة الأساسية في إعداد Vue Router. يتم تعريف المسارات في مصفوفة `routes` التي يتم تمريرها إلى `createRouter`. كل مسار هو كائن يحتوي على الخصائص التالية:

  • **path:** عنوان URL الذي يمثل هذا المسار. يمكن أن يكون مسارًا ثابتًا (مثل `/about`) أو مسارًا ديناميكيًا (مثل `/users/:id`).
  • **component:** مكون Vue.js الذي يجب عرضه عند زيارة هذا المسار.
  • **name:** (اختياري) اسم للمسار. يمكن استخدامه لإنشاء روابط ديناميكية.
  • **meta:** (اختياري) كائن يحتوي على بيانات إضافية حول المسار.

مثال:

```javascript const routes = [

 { path: '/', component: Home, name: 'home' },
 { path: '/about', component: About, name: 'about' },
 { path: '/users/:id', component: User, name: 'user' }

] ```

في هذا المثال:

  • `/` يعرض المكون `Home` ويسمى "home".
  • `/about` يعرض المكون `About` ويسمى "about".
  • `/users/:id` يعرض المكون `User` ويسمى "user". `:id` هو معلمة ديناميكية يمكن الوصول إليها داخل المكون `User`.

التنقل بين المسارات

هناك عدة طرق للتنقل بين المسارات في تطبيق Vue Router:

  • **<router-link>:** هذا المكون هو الطريقة الأكثر شيوعًا للتنقل بين المسارات. يقوم بإنشاء رابط تلقائيًا إلى المسار المحدد.

```vue <router-link to="/">الرئيسية</router-link> <router-link to="/about">حول</router-link> <router-link :to="{ name: 'user', params: { id: 123 }}">المستخدم 123</router-link> ```

  • **router.push():** هذه الطريقة تسمح لك بالتنقل إلى مسار جديد برمجيًا.

```javascript import { useRouter } from 'vue-router'

export default {

 setup() {
   const router = useRouter()
   const goToAbout = () => {
     router.push('/about')
   }
   return { goToAbout }
 }

} ```

  • **router.replace():** تشبه `router.push()`، ولكنها تستبدل المسار الحالي في سجل المتصفح بدلاً من إضافته.
  • **router.go():** تسمح لك بالتنقل إلى الأمام أو الخلف في سجل المتصفح.

المسارات الديناميكية والمعلمات

يمكنك تعريف مسارات ديناميكية تحتوي على معلمات. تستخدم المعلمات لتمثيل أجزاء من عنوان URL التي تتغير. على سبيل المثال، يمكن أن يكون لديك مسار `/users/:id` حيث `id` هو معلمة ديناميكية.

للوصول إلى المعلمات داخل المكون، يمكنك استخدام كائن `$route.params`.

```vue <template>

المستخدم: Template:UserId

</template>

<script> export default {

 setup() {
   const userId = this.$route.params.id
   return { userId }
 }

} </script> ```

المسارات ذات الأسماء

يمكنك إعطاء أسماء للمسارات باستخدام الخاصية `name` في تعريف المسار. هذا يسمح لك بإنشاء روابط ديناميكية باستخدام `router.push()` أو `<router-link>` دون الحاجة إلى معرفة عنوان URL الكامل.

```javascript const routes = [

 { path: '/users/:id', component: User, name: 'user' }

]

// التنقل إلى مسار المستخدم باستخدام الاسم router.push({ name: 'user', params: { id: 456 } })

// إنشاء رابط باستخدام الاسم <router-link :to="{ name: 'user', params: { id: 789 }}">المستخدم 789</router-link> ```

الحارس (Guards)

الحراس يسمحون لك بالتحكم في الوصول إلى المسارات. يمكنك استخدام الحراس لمنع المستخدمين من الوصول إلى مسارات معينة إذا لم يكونوا مسجلين الدخول، أو إذا لم يكن لديهم الأذونات اللازمة.

هناك ثلاثة أنواع رئيسية من الحراس:

  • **الحارس العام (Global Guard):** يتم تنفيذه قبل أي عملية تنقل.
  • **الحارس المحلي (Route Guard):** يتم تنفيذه قبل الدخول إلى مسار معين.
  • **الحارس الخاص بالمكون (Component Guard):** يتم تنفيذه قبل عرض مكون معين.

مثال على الحارس المحلي:

```javascript const routes = [

 {
   path: '/admin',
   component: Admin,
   beforeEnter: (to, from, next) => {
     if (isAuthenticated()) {
       next()
     } else {
       next('/login')
     }
   }
 }

] ```

في هذا المثال، يتم تنفيذ الدالة `beforeEnter` قبل الدخول إلى المسار `/admin`. إذا كان المستخدم مصادقًا عليه (`isAuthenticated()` ترجع `true`)، يتم السماح له بالدخول. وإلا، يتم توجيهه إلى مسار `/login`.

الوضع (Modes) التاريخي

يوفر Vue Router عدة أوضاع تاريخية:

  • **hash mode:** يستخدم علامة `#` في عنوان URL. يعمل في جميع المتصفحات، ولكنه قد لا يكون جذابًا بصريًا.
  • **history mode:** يستخدم واجهة History API في المتصفح. يوفر تجربة مستخدم أفضل، ولكنه يتطلب تكوينًا على الخادم لتجنب أخطاء 404.
  • **abstract mode:** يستخدم واجهة `location` API في المتصفح. مناسب للتطبيقات التي تعمل على الخوادم التي لا تدعم إعادة توجيه عنوان URL.

عادةً ما يكون `createWebHistory()` هو الخيار الأفضل لمعظم التطبيقات.

مثال كامل

```vue <template>

   <nav>
     <router-link to="/">الرئيسية</router-link> |
     <router-link to="/about">حول</router-link> |
     <router-link :to="{ name: 'user', params: { id: 1 } }">المستخدم 1</router-link>
   </nav>
   <router-view></router-view>

</template>

<script> export default {

 name: 'App'

} </script>

<template>

الرئيسية

مرحباً بك في الصفحة الرئيسية!

</template>

<template>

حول

هذه صفحة حول.

</template>

<template>

المستخدم: Template:UserId

معلومات المستخدم...

</template>

<script> export default {

 setup() {
   const userId = this.$route.params.id
   return { userId }
 }

} </script> ```

استراتيجيات وأدوات إضافية

  • **Lazy Loading:** تحميل المكونات عند الحاجة لتحسين الأداء.
  • **Nested Routes:** تعريف مسارات متداخلة لإنشاء هياكل تطبيق معقدة.
  • **Navigation Guards:** للتحكم في الوصول إلى المسارات.
  • **Scroll Behavior:** للتحكم في سلوك التمرير عند التنقل بين المسارات.
  • **Transition Effects:** إضافة تأثيرات انتقالية عند التنقل بين المسارات.

الخيارات الثنائية والتحليل الفني (ربط مفاهيم)

على الرغم من أن Vue Router هي مكتبة لتطوير الويب، يمكننا ربطها بمفاهيم من عالم الخيارات الثنائية والتحليل الفني. فكر في كل مسار كـ "أصل" مالي. التنقل بين المسارات يمكن اعتباره "صفقة" أو "استثمار". يمكنك استخدام الحراس كـ "أوامر وقف الخسارة" (Stop-Loss) لمنع الوصول إلى مسارات غير مرغوب فيها. تحسين الأداء باستخدام Lazy Loading يشبه "تنويع المحفظة" لتقليل المخاطر. فهم سلوك المستخدم عبر المسارات المختلفة (باستخدام أدوات التحليل) يشبه "تحليل الاتجاهات" لتوقع الحركات المستقبلية.

    • استراتيجيات الخيارات الثنائية ذات الصلة:**
  • **استراتيجية مارتينجال:** تعتمد على مضاعفة الرهانات بعد الخسارة، على غرار إعادة تحميل المكونات بشكل متكرر.
  • **استراتيجية المضاعفة:** زيادة حجم التداول بعد الربح، مثل استخدام Lazy Loading لتحميل المزيد من الميزات.
  • **استراتيجية المتوسط المتحرك:** تحديد الاتجاه العام بناءً على البيانات التاريخية، مثل تحليل سلوك المستخدم.
  • **استراتيجية اختراق النطاق:** استغلال فترات التقلبات، مثل استخدام Transition Effects.
  • **استراتيجية البولينجر باند:** تحديد نقاط الدخول والخروج بناءً على الانحراف المعياري، مثل استخدام Navigation Guards.
  • **استراتيجية RSI (مؤشر القوة النسبية):** تحديد حالات ذروة الشراء والبيع، مثل تحليل أداء المكونات.
  • **استراتيجية MACD (مؤشر التقارب والتباعد للمتوسطات المتحركة):** تحديد اتجاهات السوق، مثل تحليل مسارات المستخدم.
  • **استراتيجية فيبوناتشي:** تحديد نقاط الدعم والمقاومة، مثل تصميم واجهة المستخدم.
  • **استراتيجية الاختراق:** استغلال نقاط الاختراق في الأسعار، مثل استخدام Nested Routes.
  • **استراتيجية التداول الخوارزمي:** تنفيذ الصفقات تلقائيًا بناءً على قواعد محددة، مثل استخدام Navigation Guards.
    • المؤشرات الفنية ذات الصلة:**
  • **المتوسط المتحرك:** لتنعيم البيانات وتحديد الاتجاه.
  • **مؤشر القوة النسبية (RSI):** لقياس قوة الاتجاه.
  • **مؤشر MACD:** لتحديد التغيرات في قوة الاتجاه.
  • **بولينجر باند:** لقياس التقلبات.
  • **مؤشر ستوكاستيك:** لقياس زخم السعر.
    • تحليل الحجم:** مراقبة حجم التداول لتأكيد الاتجاهات.
    • تحليل الاتجاهات:** تحديد الاتجاه العام للسوق.

الخلاصة

Vue Router هي مكتبة قوية ومرنة لإدارة التنقل في تطبيقات Vue.js. من خلال فهم المفاهيم الأساسية، وكيفية الإعداد، وكيفية تعريف المسارات، وكيفية التنقل بينها، يمكنك إنشاء تطبيقات ويب ذات صفحة واحدة سلسة وفعالة. لا تتردد في استكشاف الميزات المتقدمة للحصول على أقصى استفادة من هذه المكتبة. تذكر أن Vue Router، مثل أي أداة قوية، تتطلب الممارسة والتجربة لإتقانها.

Vue.js JavaScript Single Page Application DOM (Document Object Model) Component (Vue.js) Vue CLI Webpack npm (Node Package Manager) Yarn History API Lazy Loading

[[Category:**مكتبات_واجهة_المستخدم** (User interface libraries)

ابدأ التداول الآن

سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер