Vue.js এর মূল শক্তি তার কম্পোনেন্ট ভিত্তিক আর্কিটেকচার। এই আর্কিটেকচারে, অ্যাপ্লিকেশনটি ছোট ছোট অংশে (কম্পোনেন্ট) ভাগ করা হয়, যা রিইউজেবল এবং মেইনটেইনযোগ্য কোড লিখতে সহায়তা করে। রিইউজেবল কম্পোনেন্ট তৈরি করা আপনার অ্যাপ্লিকেশনকে স্কেলেবল, কার্যকরী এবং লজিক্যালভাবে সংগঠিত রাখতে সাহায্য করে। এখানে আমরা দেখব কিভাবে Vue.js এ রিইউজেবল কোড এবং কম্পোনেন্ট তৈরি করা যায়।
১. কম্পোনেন্ট কি?
কম্পোনেন্ট হল Vue.js এর একটি মৌলিক ধারণা, যা HTML, CSS এবং JavaScript এর সংমিশ্রণ হিসেবে কাজ করে। প্রতিটি কম্পোনেন্ট একটি নির্দিষ্ট কাজ বা ফিচার সম্পাদন করে এবং অ্যাপ্লিকেশনের অন্যান্য অংশ থেকে আলাদা থাকে।
Vue.js কম্পোনেন্টগুলি পুনঃব্যবহারযোগ্য, স্কেলেবল এবং মডুলার হতে পারে, যার ফলে কোড পুনঃব্যবহার এবং অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও কার্যকরী হয়ে ওঠে।
কম্পোনেন্টের উদাহরণ:
<!-- HelloWorld.vue -->
<template>
<div>
<h1>{{ greeting }}</h1>
</div>
</template>
<script>
export default {
data() {
return {
greeting: 'Hello, Vue.js!'
};
}
}
</script>
<style scoped>
h1 {
color: blue;
}
</style>
এখানে, HelloWorld.vue একটি Vue কম্পোনেন্ট, যেখানে data ফাংশনে একটি প্রপার্টি (greeting) ডিফাইন করা হয়েছে এবং এটি template ট্যাগে রেন্ডার হচ্ছে। scoped স্টাইলিং ব্যবহার করা হয়েছে যাতে এই কম্পোনেন্টের স্টাইল শুধুমাত্র এই কম্পোনেন্টে প্রভাবিত হয়।
২. রিইউজেবল কম্পোনেন্ট তৈরি করা
Vue.js এ রিইউজেবল কম্পোনেন্ট তৈরি করার জন্য, আপনাকে এমন কম্পোনেন্ট তৈরি করতে হবে যা বিভিন্ন জায়গায় ব্যবহার করা যায় এবং যেগুলোর উপাদান (props) পরিবর্তনযোগ্য হতে পারে।
কম্পোনেন্ট প্রপস (Props):
Props হল এমন একটি উপায় যার মাধ্যমে আপনি কম্পোনেন্টে বাহ্যিক ডেটা পাঠাতে পারেন। প্রপস ব্যবহার করে একটি কম্পোনেন্টে ডেটা পাঠানো এবং সেটির মান পরিবর্তন করা যায়।
<!-- Greeting.vue -->
<template>
<div>
<h2>{{ message }}</h2>
</div>
</template>
<script>
export default {
props: ['message']
}
</script>
<style scoped>
h2 {
color: green;
}
</style>
এখানে, Greeting.vue কম্পোনেন্টটি একটি প্রপস message গ্রহণ করছে এবং এটি h2 ট্যাগে রেন্ডার হচ্ছে।
কম্পোনেন্ট ব্যবহার:
<!-- App.vue -->
<template>
<div>
<Greeting :message="'Hello from parent component!'"/>
</div>
</template>
<script>
import Greeting from './components/Greeting.vue';
export default {
components: {
Greeting
}
}
</script>
এখানে, App.vue কম্পোনেন্টে আমরা Greeting.vue কম্পোনেন্টটি ব্যবহার করেছি এবং প্রপস হিসেবে message পাস করেছি। এর ফলে, Greeting কম্পোনেন্টটি তার প্রপসের মান প্রদর্শন করবে।
৩. কম্পোনেন্টে ইভেন্টস এবং মেথড
Vue কম্পোনেন্টে আপনি ইভেন্টস এবং মেথড ব্যবহার করতে পারেন যাতে কম্পোনেন্টের আচরণ কাস্টমাইজ করা যায়।
মেথড:
কম্পোনেন্টের মেথডগুলি ব্যবহার করে ইন্টারঅ্যাক্টিভিটি যোগ করা যায়। নিচে একটি কম্পোনেন্টের উদাহরণ দেখানো হলো যেখানে একটি বাটনের ক্লিক করার মাধ্যমে একটি পরিবর্তন ঘটানো হয়।
<!-- Counter.vue -->
<template>
<div>
<p>Current Count: {{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
}
</script>
এখানে, increment মেথডটি বাটনে ক্লিক করার মাধ্যমে count ভ্যালুকে ইনক্রিমেন্ট করছে।
ইভেন্টস (Events):
আপনি একটি কম্পোনেন্টে ইভেন্ট তৈরি করতে পারেন এবং ওই ইভেন্টটিকে প্যারেন্ট কম্পোনেন্টে পাঠাতে পারেন।
<!-- ChildComponent.vue -->
<template>
<div>
<button @click="sendEvent">Send Event to Parent</button>
</div>
</template>
<script>
export default {
methods: {
sendEvent() {
this.$emit('event-from-child', 'Hello Parent!');
}
}
}
</script>
এখানে, ChildComponent একটি ইভেন্ট event-from-child পাঠাচ্ছে যা প্যারেন্ট কম্পোনেন্টে শোনা হবে।
প্যারেন্ট কম্পোনেন্টে ইভেন্ট শুনা:
<!-- ParentComponent.vue -->
<template>
<div>
<ChildComponent @event-from-child="handleEvent"/>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
handleEvent(message) {
console.log(message); // "Hello Parent!" প্রদর্শিত হবে
}
}
}
</script>
এখানে, ParentComponent কম্পোনেন্টে ChildComponent থেকে পাঠানো ইভেন্টটি শোনা হচ্ছে এবং handleEvent মেথডের মাধ্যমে ইভেন্টের ডেটা প্রক্রিয়া করা হচ্ছে।
৪. মিক্সিনস এবং কম্পোনেন্ট রিইউজ
Vue.js এ মিক্সিনস ব্যবহার করে সাধারণ ফাংশনালিটি একাধিক কম্পোনেন্টে রিইউজ করা যায়। মিক্সিনস হল একটি জাভাস্ক্রিপ্ট অবজেক্ট যা কম্পোনেন্টে পুনঃব্যবহারযোগ্য ফাংশনালিটি সরবরাহ করে।
মিক্সিনের উদাহরণ:
// mixins/counterMixin.js
export const counterMixin = {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
}
এখন, এই মিক্সিনটি আপনার কম্পোনেন্টে রিইউজ করা যাবে:
<!-- CounterComponent.vue -->
<template>
<div>
<p>Current Count: {{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { counterMixin } from '../mixins/counterMixin';
export default {
mixins: [counterMixin]
}
</script>
এখানে, CounterComponent মিক্সিনের মাধ্যমে count এবং increment মেথড রিইউজ করছে।
৫. রিইউজেবল কম্পোনেন্ট ডিজাইন
- ডাইনামিক প্রপস: প্রপসের মাধ্যমে কম্পোনেন্টের ভ্যালু পরিবর্তনযোগ্য রাখা যায়, যেমন বোতামের টেক্সট, স্টাইল বা ক্লাস।
- কম্পোনেন্ট স্টাইলিং: আপনি
scopedস্টাইল ব্যবহার করে প্রতিটি কম্পোনেন্টের স্টাইল আলাদা রাখতে পারেন, যাতে অন্য কম্পোনেন্টে প্রভাব না পড়ে। - রিক্যাপচার: বারবার ব্যবহৃত কোড ব্লকগুলিকে কম্পোনেন্টে ভেঙে রাখুন যাতে পুনঃব্যবহারযোগ্য এবং পরিষ্কার থাকে।
- কম্পোনেন্ট বাণিজ্যিকীকরণ: সাধারণভাবে ব্যবহৃত UI উপাদানগুলিকে (যেমন কার্ড, বাটন, মডাল) রিইউজযোগ্য কম্পোনেন্ট হিসেবে তৈরি করুন।
সারাংশ
- Vue.js কম্পোনেন্ট ব্যবহার করে আপনি সহজেই রিইউজেবল কোড তৈরি করতে পারেন।
- Props এবং events ব্যবহার করে কম্পোনেন্টগুলির মধ্যে ডেটা ও ইন্টারঅ্যাকশন সহজে পরিচালনা করা যায়।
- Methods এবং Mixins ব্যবহার করে কম্পোনেন্টে সাধারণ কার্যকারিতা পুনঃব্যবহার করা যায়।
- Scoped styles ব্যবহার করে কম্পোনেন্টে আলাদা স্টাইলস রাখা যায়, যাতে এক কম্পোনেন্টের স্টাইল অন্য কম্পোনেন্টকে প্রভাবিত না করে।
এভাবে আপনি Vue.js এ রিইউজেবল কম্পোনেন্ট তৈরি করতে পারেন এবং অ্যাপ্লিকেশনটি আরো স্কেলেবল এবং মেইনটেইনযোগ্য রাখতে পারেন।
Read more