Riot.js তে কম্পোনেন্ট হল মূল ইউনিট যা একটি UI তৈরি করতে ব্যবহৃত হয়। প্রতিটি কম্পোনেন্টে HTML, CSS, এবং JavaScript থাকে, যা UI-এর অংশ এবং তার আচরণকে encapsulate (এনক্যাপসুলেট) করে। Riot.js কম্পোনেন্টগুলির সাহায্যে আপনি একটি অ্যাপ্লিকেশনকে ছোট ছোট, পুনঃব্যবহারযোগ্য ইউনিটে ভাগ করতে পারেন, যার ফলে কোড আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
Riot.js কম্পোনেন্ট: বেসিক ধারণা
একটি Riot.js কম্পোনেন্ট সাধারণত তিনটি মূল অংশের মধ্যে বিভক্ত হয়:
- HTML - UI এর কাঠামো
- CSS - কম্পোনেন্টের স্টাইল
- JavaScript - কম্পোনেন্টের কার্যকলাপ (লজিক)
কম্পোনেন্ট তৈরি করা
Riot.js তে কম্পোনেন্টগুলি .riot ফাইলের মধ্যে তৈরি করা হয়। নিচে একটি উদাহরণ দেওয়া হল:
<!-- MyComponent.riot -->
<my-component>
<h1>{opts.title}</h1>
<p>{message}</p>
<button onclick={changeMessage}>Message পরিবর্তন করুন</button>
<script>
export default {
onMounted() {
this.message = 'হ্যালো, বিশ্ব!';
},
changeMessage() {
this.message = 'বার্তা পরিবর্তিত হয়েছে!';
}
}
</script>
</my-component>
এখানে:
- HTML অংশে
{opts.title}এবং{message}ডাটা বাইন্ডিং দেখাচ্ছে। - JavaScript অংশে
onMountedহুক এবংchangeMessageফাংশন রয়েছে, যা কম্পোনেন্ট লজিক পরিচালনা করে।
কম্পোনেন্ট ব্যবস্থাপনা
Riot.js তে কম্পোনেন্ট ব্যবস্থাপনা কিছু সহজ ধাপ অনুসরণ করে করা হয়। নিচে কিছু গুরুত্বপূর্ণ বিষয় তুলে ধরা হলো:
১. কম্পোনেন্ট রেজিস্ট্রেশন
একটি কম্পোনেন্ট ব্যবহার করার জন্য, আপনাকে সেটি রেজিস্টার করতে হবে। এটি করতে Riot.component ফাংশন ব্যবহার করা হয়। উদাহরণ:
import Riot from 'riot';
import MyComponent from './components/MyComponent.riot';
// কম্পোনেন্ট রেজিস্টার করুন
Riot.component(MyComponent);
২. কম্পোনেন্ট মাউন্টিং
একবার কম্পোনেন্ট রেজিস্টার হলে, আপনি Riot.mount ফাংশন ব্যবহার করে কম্পোনেন্ট মাউন্ট (ইনস্ট্যানশিয়েট) করতে পারেন। এটি HTML এ <my-component></my-component> ট্যাগে কম্পোনেন্ট রেন্ডার করে। উদাহরণ:
// কম্পোনেন্ট মাউন্ট করুন এবং ডাটা পাস করুন
Riot.mount('my-component', { title: 'My First Riot Component' });
এখানে, { title: 'My First Riot Component' } ডাটা opts প্রপার্টি হিসেবে কম্পোনেন্টে পাঠানো হচ্ছে, যা {opts.title} দ্বারা কম্পোনেন্টের মধ্যে অ্যাক্সেস করা যাবে।
৩. কম্পোনেন্টের মধ্যে ডাটা বাইন্ডিং
Riot.js ডাটা বাইন্ডিং ব্যবস্থার মাধ্যমে আপনি কম্পোনেন্টের মধ্যে ডাটা সরাসরি রেন্ডার করতে পারেন। উপরের উদাহরণে {opts.title} এবং {message} দিয়ে আমরা ডাটা বাইন্ডিং করেছি। যখন ডেটা পরিবর্তিত হয়, UI স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।
৪. কম্পোনেন্ট হুক
Riot.js-এ কিছু life cycle hooks আছে যা কম্পোনেন্টের নির্দিষ্ট অবস্থায় কার্যকরী হয়:
- onMounted: কম্পোনেন্টটি DOM-এ মাউন্ট হলে এটি কল হয়।
- onBeforeUpdate: ডাটা পরিবর্তিত হওয়ার আগেই কল হয়।
- onUpdated: ডাটা পরিবর্তন হওয়ার পরে কল হয়।
- onUnmounted: কম্পোনেন্টটি DOM থেকে মুছে গেলে কল হয়।
উদাহরণ:
export default {
onMounted() {
console.log('কম্পোনেন্ট মাউন্ট হয়েছে');
},
onBeforeUpdate() {
console.log('ডাটা পরিবর্তনের আগে');
},
onUpdated() {
console.log('ডাটা পরিবর্তনের পরে');
},
onUnmounted() {
console.log('কম্পোনেন্ট মুছে গেছে');
}
};
৫. কম্পোনেন্টের মধ্যে ইভেন্ট হ্যান্ডলিং
Riot.js তে আপনি ইভেন্ট হ্যান্ডলিং খুব সহজভাবে করতে পারেন। একটি ইভেন্ট হ্যান্ডলার ফাংশন onclick বা অন্য ইভেন্টে বাইন্ড করা যেতে পারে। উদাহরণ:
<button onclick={changeMessage}>Message পরিবর্তন করুন</button>
এখানে changeMessage ফাংশনটি onclick ইভেন্টের সাথে যুক্ত করা হয়েছে। যখন বাটনটি ক্লিক করা হবে, তখন changeMessage ফাংশন কল হবে এবং message ভ্যালু পরিবর্তিত হবে।
৬. স্টেট ম্যানেজমেন্ট
Riot.js তে কম্পোনেন্টের মধ্যে একটি স্থানীয় স্টেট থাকে, যেটি আপনি this দিয়ে অ্যাক্সেস করতে পারেন। উদাহরণ:
export default {
onMounted() {
this.message = 'হ্যালো, বিশ্ব!';
},
changeMessage() {
this.message = 'বার্তা পরিবর্তিত হয়েছে!';
}
};
এখানে this.message হচ্ছে কম্পোনেন্টের স্থানীয় স্টেট, যা পরিবর্তন হলে UI তে পরিবর্তন প্রতিফলিত হয়।
৭. কম্পোনেন্টের মধ্যে স্টাইল
Riot.js-এ আপনি কম্পোনেন্টের মধ্যে CSS কোডও অন্তর্ভুক্ত করতে পারেন, যা ওই কম্পোনেন্টের জন্য স্কোপড (scoped) থাকবে। এটি অন্যান্য কম্পোনেন্ট বা DOM-এর সাথে কনফ্লিক্ট করবে না। উদাহরণ:
<style>
h1 {
color: blue;
}
</style>
এখানে, <h1> ট্যাগটির জন্য নির্দিষ্ট স্টাইল দেওয়া হয়েছে যা শুধু এই কম্পোনেন্টের মধ্যে প্রযোজ্য।
কম্পোনেন্ট ব্যবস্থাপনার ভালো অভ্যাস
- কম্পোনেন্টে শুধুমাত্র একাধিক দায়িত্ব নেবেন না: একটি কম্পোনেন্ট একটি নির্দিষ্ট কাজের জন্য তৈরি করুন, যেমন একটি বাটন, একটি টেবিল, বা একটি ফর্ম। এটি কোড পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য রাখে।
- স্টেট এবং প্রপস ব্যবস্থাপনা: কম্পোনেন্টে স্টেট (অথবা লজিক) এবং প্রপস (অথবা আউটপুট) সঠিকভাবে পৃথক করুন। স্টেট পরিবর্তন করলে কম্পোনেন্টের UI আপডেট হবে, এবং প্রপস কম্পোনেন্টের বাইরের তথ্যকে প্রেরণ করে।
- লাইফ সাইকেল হুক ব্যবহার করুন: কম্পোনেন্টের জীবনচক্রের নির্দিষ্ট মুহূর্তে কার্যকলাপ চালানোর জন্য লাইফ সাইকেল হুকগুলি ব্যবহার করুন।
- ইভেন্ট হ্যান্ডলিং সাবলীল রাখুন: ইভেন্টগুলিকে সঠিকভাবে ম্যানেজ করুন, যেন কম্পোনেন্টে অবাঞ্ছিত রেন্ডারিং বা লজিক সমস্যা না হয়।
সারসংক্ষেপ
Riot.js কম্পোনেন্ট ব্যবস্থাপনা সহজ এবং কার্যকর। আপনি আপনার অ্যাপ্লিকেশনকে ছোট ছোট কম্পোনেন্টে ভাগ করে, ডাটা বাইন্ডিং এবং লাইফ সাইকেল হুক ব্যবহার করে অ্যাপ্লিকেশনের স্টেট এবং লজিক পরিচালনা করতে পারেন। এর ফলে কোডিং সহজ হয়, এবং বড় প্রকল্পগুলিতে কাজ করা আরও সুবিধাজনক হয়।
আপনি যদি আরও কিছু জানতে চান বা একটি নির্দিষ্ট দিক নিয়ে সাহায্য চান, তাহলে আমাকে জানাতে পারেন!
Read more