سلام دوستان. میخوایم با فریمورک ویو (Vue) یک پلاگین گالری تصاویر ساده درست کنیم. هرچند پلاگینهای حرفهای زیادی رو میتونین توی سطح وب پیدا و استفاده کنیم، هدف این آموزش، بیشتر، آشنایی با فوت و فنهای فریمورک ویو هست. توی این آموزش یاد میگیریم که چطوری:
یک برنامه ویو رو راهاندازی کنیم
یک پلاگین ویو بسازیم و اون رو به فریمورک شناسایی کنیم
برای پلاگینمون کامپوننتهای سراسری درست کنیم
با اجزای مختلف کامپوننتها مثل props و slot ها آشنا میشیم
همه این موارد، به اضافه چند نکته کاربردی بررسی رو توی ادامه میکنیم 😉
۱. ساخت یک برنامه ویو
توی این آموزش از Vue CLI استفاده میکنیم. Vue CLI ابزاری هست که با اون خیلی راحت و سریع میتونیم یک برنامه ویو رو توسعه بدیم. اگه اون رو نصب ندارین، این پست رو ببینین:
برای شروع، توی ترمینال دستور زیر رو وارد میکنیم:
vue create gallery
بعد از لحظاتی، این برنامه ویو برای ما نصب و آماده میشه. دو دستور زیر رو میزنیم تا وارد پوشه برنامه بشیم و اون رو اجرا کنیم:
cd gallery
npm run serve
۲. آمادهسازی پلاگین گالری
توی مسیر src یک پوشه میسازیم به اسم plugins که توی اون قراره پلاگینهای برنامه رو قرار بدیم. یک پوشه دیگه توی مسیر plugins درست میکنیم به اسم gallery که میخوایم محتویات و فایلهای پلاگین گالری رو توی اون قرار بدیم. الان ساختار پوشههای برنامه بصورت زیر هست:
|-- src
|-- plugins
|-- gallery
یک فایل به اسم Gallery.js توی پوشه gallery درست میکنیم. این، فایل اصلی پلاگین ما هست که باید اون رو به فریمورک شناسایی کنیم. به این فایل کدهای زیر رو اضافه میکنیم:
حالا باید پلاگینمون رو به فریمورک شناسایی کنیم. فایل main.js که توی مسیر src هست رو باز میکنیم. محتویات این فایل بصورت زیر هست که ما باید کدهای خط ۳ و ۵ رو به این فایل اضافه کنیم:
import Vue from 'vue'
import App from './App.vue'
import Gallery from './plugins/gallery/Gallery'
Vue.use(Gallery)
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('#app')
خب تا اینجا پلاگین رو ساختیم و اون رو به فریمورک شناسایی کردیم. میریم سراغ مرحله بعد تا پلاگینمون رو توسعه بدیم 😉
اگه میخواین اطلاعات کاملتری درباره ساختن یک پلاگین تو ویو داشته باشین، پست زیر رو ببینید:
۳. ساخت کامپوننتهای پلاگین
همونطور که میدونیم، گالری باید یک کامپوننت اصلی داشته باشه. این کامپوننت، نقش یک Container برای تصاویر رو ایفا میکنه. همچنین، ما برای تصاویر، میخوایم یک کامپوننت جدا بسازیم و اون رو وارد کامپوننت اصلی کنیم. یعنی کد HTML بصورت زیر خواهد شد:
توی این کد، کامپوننت gallery، کامپوننت اصلی هست و کامپوننتهای gallery-item، تصاویر ما هستن که به کامپوننت اصلی پاس داده میشن. اسم کامپوننت gallery-item رو میذاریم کامپوننت فرزند. خیلی زود یاد میگیریم که چطوری این کار رو انجام بدیم.
ابتدا کامپوننت اصلی رو میسازیم. توی پوشه پلاگینمون، یک پوشه درست میکنیم به اسم components تا کامپوننتهای پلاگین رو توی اون قرار بدیم. تا الان ساختار پوشههای برنامه بصورت زیر هست:
به این فایل، کد خط ۴ رو اضافه کردیم. توی این خط، کامپوننت رو با عنوان gallery بصورت سراسری به فریمورک شناسایی کردیم. الان میتونیم هر جایی از برنامه از این کامپوننت استفاده کنیم.
مرحله بعد کامپوننت فرزند رو باید بسازیم. یک فایل دیگه به اسم Item.vue به پوشه components اضافه میکنیم و با محتویات زیر:
خب تا اینجا کامپوننتهای پلاگین رو هم ساختیم. باید بریم تا کامپوننتها رو یکم شخصیسازی و کدهامون رو بهش اضافه کنیم.
برای آشنایی با کامپوننتهای ویو، میتونین پست زیر رو بخونین:
۴. آمادهسازی پلاگین فرزند
همونطور که بررسی کردیم، هر تصویری که گالریمون داره رو میخوایم به عنوان یک کامپوننت در نظر بگیریم. یعنی هر کامپوننت فرزند، نقش یک تصویر رو ایفا میکنه. کامپوننت Item.vue رو باز میکنیم و به اون دو پراپرتی به اسمهای src و caption اضافه میکنیم (خط ۷):
زمانی از پراپرتیها استفاده میکنیم که میخوایم یکسری اطلاعات رو از بیرون به کامپوننت پاس بدیم. ما میخوایم آدرس تصویر و یک متن (caption) دلخواه رو از بیرون به کامپوننت پاس بدیم.
همونطور که گفتیم، پلاگین اصلی، نقش یک Container رو ایفا میکنه. برای اینکه بتونیم کامپوننتهای فرزند رو توی پلاگین اصلی نشون بدیم، از slot ها استفاده میکنیم. فایل Main.vue رو باز میکنیم و محتویات زیر رو جایگزین اون میکنیم:
توی مرحله قبل گفتیم که برای پاس دادن اطلاعات به کامپوننت از props استفاده میکنیم. استفاده از اسلات (slot) یک روش پیشرفتهتر برای پاس دادن اطلاعات از بیرون به کامپوننت هست. با اسلات میتونیم یک کد شامل HTML رو هم پاس بدیم. تگ <slot> که توی خط ۳ میبینین، محلی هست برای اطلاعاتی که از بیرون پاس داده میشن. به صورت، هر چیزی که بین تگ باز و بسته <gallery> قرار بگیره، توی قسمت slot خواهد نشست.
۶. پیادهسازی پلاگین
خب حالا وقتشه خروجی چیزایی که نوشتیم رو ببینیم. فایل App.vue که توی مسیر src هست رو باز و محتویات زیر رو جایگزین میکنیم:
توی این کد، ابتدا از کامپوننت اصلی یعنی gallery استفاده کردیم. و به تعداد تصاویری که داریم، کامپوننت item-gallery اضافه کردیم. همونطور که گفتیم، چیزی که داخل تگ gallery قرار گرفته، جایگزین قسمت slot توی کامپوننت اصلی میشه.
همچنین دقت کنین که تصاویر رو توی مسیر public/images قرار دادم. هرچند، میشه آدرسهای دیگهای رو هم به src ها پاس داد. مرحله آخر، مقداری دستورات CSS به کد اضافه میکنیم. این دستورات رو به آخر فایل Main.vue و بعد از تگ پایانی <script> اضافه میکنیم:
خب دوستان این آموزشی بود که بیشتر سعی داشتم یک سری نکات فنی برای کار با فریمورک Vue رو ارائه بدم. قطعاً میشه به این پلاگین امکانات بیشتری اضافه و اون رو شخصیسازی کرد که اونها رو با آموزشهای متنوع دیگه کار میکنیم. امیدوارم استفاده کرده باشید. روزتون خوش 😉