- Регистрация
- 9 Май 2015
- Сообщения
- 1,562
- Баллы
- 155
Angular 16+ এ এসেছে Signals — একদম নতুন reactive concept। এই ব্লগে সহজ বাংলায় দেখানো হয়েছে Signals কীভাবে কাজ করে, কেন দরকার, আর কিভাবে তুমি তোমার কোডে reactive behavior আনতে পারো।
Angular Signals vs Normal Variables — পার্থক্যটা আসলে কোথায়?
Angular 16 থেকে শুরু করে একটা নতুন reactive concept এসেছে — Signal।
অনেকে ভাবে, “আরে ভাই, এটা তো আরেকটা state variable, নতুন কিছুর দরকার কী?”
কিন্তু একবার কোডে ঢুকলেই বোঝা যায় — Signal আসলে একেবারে অন্য লেভেলের জিনিস।
একটা সিম্পল উদাহরণ
constructor() {
this.withOutSignal();
this.withSignal();
}
withOutSignal() {
let x = 10;
let y = 20;
let z = x + y;
console.log('[Normal] Initial Sum:', z);
x = 15;
console.log('[Normal] After Change:', z);
}
withSignal() {
const x = signal(10);
const y = signal(20);
const z = computed(() => x() + y());
console.log('
x.set(150);
console.log('
}
Output:
[Normal] Initial Sum: 30
[Normal] After Change: 30
[Signal] Initial Sum: 30
[Signal] After Change: 170
এখানে প্রথমটা (withOutSignal) তে x এর মান পাল্টালেও z আপডেট হচ্ছে না।
কিন্তু দ্বিতীয়টা (withSignal) তে Signal ব্যবহার করায় x এর মান বদলাতেই z রিয়েল টাইমে 170 হয়ে গেছে।
পার্থক্যটা কোথায়?
| ধরন | Reactive? | আপডেট হয়? | আউটপুট |
|---|---|---|---|
| সাধারণ ভ্যারিয়েবল | না | না | 30 |
| Signal + Computed | হ্যাঁ | হয় | 30 → 170 |
Signal হলো “reactive variable” — মানে, একে Angular ট্র্যাক করে রাখে।
যখনই signal-এর মান বদলাবে, সেটার ওপর নির্ভর করা সব জায়গায় মান আপডেট হবে।
আর computed() মানে হচ্ছে “যে ভ্যারিয়েবলটা অন্য signal গুলোর উপর নির্ভর করে”।
? Real-Life Example: Add to Cart
ধরো তুমি একটা eCommerce অ্যাপ বানাচ্ছো।
Signal ছাড়া আমরা সাধারণত এমন করি
let cartItems = 0;
function addToCart() {
cartItems++;
console.log('Items in cart:', cartItems);
}
addToCart(); // 1
addToCart(); // 2
এখানে cartItems সাধারণ ভ্যারিয়েবল — ঠিকই কাজ করছে,
কিন্তু Angular এটাকে reactive ভাবে ট্র্যাক করছে না।
এখন যদি Signal ব্যবহার করি
import { signal, computed, effect } from '@angular/core';
const cart = signal(0);
const pricePerItem = 500;
const totalPrice = computed(() => cart() * pricePerItem);
// Automatically log when cart updates
effect(() => {
console.log(`Items: ${cart()}, Total: ${totalPrice()}৳`);
});
function addToCart() {
cart.update(c => c + 1);
}
addToCart(); // Items: 1, Total: 500৳
addToCart(); // Items: 2, Total: 1000৳
addToCart(); // Items: 3, Total: 1500৳
এখানে effect() ব্যবহার করার ফলে কনসোলে নিজে থেকেই cart count আর total price আপডেট হয়ে প্রিন্ট হচ্ছে — কোনো manual console.log() লাগছে না!
Signal মানে হলো জীবন্ত ভ্যারিয়েবল — মান বদলালে, তার ওপর নির্ভর করা সব জায়গা নিজে থেকেই বদলে যায়।
Written by:
Web Developer
Источник: