فصل جدید، آشنایی با Routing

Introduction to Routing

0
46
Vue.JS 2: فصل جدید، آشنایی با Routing - قسمت 76

به فصل جدید Routing خوش آمدید. تا اینجای کار همیشه با برنامه های عادی سر و کار داشته ایم و سراغ SPA (مخفف single page application) ها رفته ایم. دلیل آن عدم آشنایی با router بود اما در این فصل پس از آنکه با router آشنا شدیم می توانیم برنامه های SPA نیز بنویسیم. در ابتدا از پروژه خالی همیشگی خود شروع می کنم که در ابتدای هر فصل برای دانلود قرار می دهم. فایل App.vue مثل همیشه خالی است:

همچنین مفهوم اصلی routing تغییر کامپوننت ها به صورت پویا است بنابراین باید چندین کامپوننت داشته باشیم تا کاربر را بین آن ها جا به جا کنیم. برای شروع در پوشه src یک پوشه جدید به نام components بسازید. این پوشه باید شامل دو عنصر باشد:

  • فایلی به نام vue
  • پوشه دیگری به نام user

فایل Home یک کامپوننت ساده و خالی است:

سپس در پوشه user چهار فایل دیگر به نام های User.vue و UserDetail.vue و UserEdit.vue و UserStart.vue بسازید. من محتوای این فایل ها را برایتان قرار می دهم.

محتوای user.vue:

محتوای UserDetail.vue:

محتوای UserEdit.vue:

محتوای UserStart.vue:

همچنین یادتان نرود که لینک بوت استرپ را در index.html وارد کنید.

حالا که ساختار پروژه را ایجاد کرده ایم باید پکیج vue-router را نصب کنیم. همانطور که گفتم Vue.js یک فریم ورک progressive است که یعنی همه چیز را در هسته اش ندارد تا حجم اولیه سبک باشد. مثلا شاید کسی نخواهد SPA بسازد و به router احتیاج نداشته باشد. در چنین حالتی چرا باید حجم سنگین تری را به خاطر کدهای router دانلود کند در صورتی که اصلا از آن ها استفاده نمی کند؟ بنابراین خودمان باید router را جداگانه و به شکل زیر نصب کنیم:

سپس باید router را وارد پروژه کنیم. برای این کار وارد main.js شده و می گوییم:

البته شما می توانید به جای VueRouter از هر نام دیگری استفاده کنید. حالا برای تعریف route ها (به معنی «مسیر») می توانیم آن ها را در یک فایل جداگانه نوشته و درون main.js وارد کنیم یا اینکه مستقیما درون main.js بنویسیم. از آنجایی که نمی خواهم main.js را شلوغ کنم، یک فایل دیگر به نام routes.js را درون پوشه src ایجاد می کنم. برای تعریف route ها باید یک آرایه را export کنیم که اعضای آن اشیاء مختلفی هستند. هر کدام از این اشیاء یک route محسوب می شود. همچنین هر route (هر شیء درون آرایه ما) یک خصوصیت به نام path دارد که مقدار آن همان مقداری است که به URL اصلی شما پیوست می شود (در ادامه متوجه می شوید). سپس خصوصیت بعدی به نام component را داریم که می گوید کدام کامپوننت در path مشخص شده، بارگذاری شود. به مثال زیر توجه کنید:

ما آرایه خود را export کرده ایم و نامش را routes گذاشته ایم. این آرایه یک شیء دارد که path آن برابر user/ بوده و کامپوننتی که باید در این path بارگذاری شود User است که همان فایل User.vue می باشد و بالاتر import شده است. یعنی اگر آدرس وب سایت شما www.example.com باشد، زمانی که کاربر به آدرس www.example.com/user برود، کامپوننتی به نام User.vue برایش نمایش داده می شود. این مسئله مهم است که path شما به آدرس اصلی وب سایت پیوست می شود.

حالا من یک route دیگر را نیز تعریف می کنم:

خالی گذاشتن path یعنی صفحه اصلی سایت (همان www.example.com). به عبارتی اگر کاربر به صفحه اصلی سایت ما مراجعه کرد کامپوننت Home برایش باز شود. حالا می توانیم به main.js برویم و این route ها را ثبت کنیم:

من ابتدا routes را از فایل خودمان import کرده ام. سپس (بعد از Vue.use) یک ثابت به نام router را تعریف کرده ام که یک نمونه، از کلاس درون پکیج VueRouter، می سازد. ما باید route های تعریف شده خود را به شکل بالا به آن پاس بدهیم که این کار را انجام داده ایم (نام خصوصیت یا key، حتما باید routes باشد اما مقدار آن همان نامی است که خودتان برای آرایه انتخاب کرده بودید). در نهایت خصوصیت router را به شیء اصلی Vue داده ام و آن را برابر ثابت خود گذاشته ام. در اینجا هم نام خصوصیت باید router باشد اما مقدار آن به سلیقه خودتان بستگی دارد.

من برای خلاصه شدن کدهای بالا از روش ES6 استفاده کرده و می گویم:

همانطور که می دانید در ES6 اگر نام خصوصیت با مقدار آن یکی باشد (key و value یکسان باشند) می توانیم فقط نام key را بیاوریم. حالا به App.vue می رویم تا به آن بگوییم این route ها در کجا بارگذاری شوند:

کامپوننت route-view یک کامپوننت خاص از پکیج router-view است که به Vue می گوید کامپوننت ها را در این قسمت بارگذاری کن. حالا اگر به مرورگر برویم آدرس زیر را در آن می بینیم:

http://localhost:8080/#/

در مورد هشتگی که در انتهای URL ما اضافه شده است بعدا صحبت خواهیم کرد. فعلا آن را نادیده بگیرید. حالا اگر به آدرس زیر برویم، کامپوننت User برایمان بارگذاری می شود:

http://localhost:8080/#/user

router ما به همین سادگی آماده استفاده است!

ترتیبی که روکسو برای یادگیری مطالب سری آموزش رایگان Vue js از صفر تا صد به شما توصیه می‌کند:

ارسال دیدگاه

لطفا دیدگاه خود را وارد کنید!
نام خود را وارد کنید