Micro-frontent Architecture-folder structure.jpeg
1.2 MB
برای ساخت پروژه Micro-Frontend بخوایم یه ساختار خوب و اصولی داشته باشیم این نمونه بسیار خوبی هست که میشه ازش ایده گرفت
#micro_frontend
#angular
@angularcafe
#micro_frontend
#angular
@angularcafe
👍4
تفاوت computed و linkedsignal خیلی ساده است
خیلی خودمونی بخوام بگم مثل این میمونه:
توضیح computed مثل نمایش درصد شارژ باتری موبایل میمونه
توضیح linkedSignal مثل نمایش دمای کولر ماشین که زده ۲۴ بر اساس سنسور های ماشین ولی شما میتونین بذاریدش رو ۲۰
در واقع computed یک محاسبه کننده read-only هست
و linkedSignal یک پیشنهاد کننده ولی قابل دستکاری هست
#angularsignal
#angular
@angularcafe
خیلی خودمونی بخوام بگم مثل این میمونه:
توضیح computed مثل نمایش درصد شارژ باتری موبایل میمونه
توضیح linkedSignal مثل نمایش دمای کولر ماشین که زده ۲۴ بر اساس سنسور های ماشین ولی شما میتونین بذاریدش رو ۲۰
در واقع computed یک محاسبه کننده read-only هست
و linkedSignal یک پیشنهاد کننده ولی قابل دستکاری هست
#angularsignal
#angular
@angularcafe
👍2
Angular-signal-forms.pdf
2.2 MB
کتاب رایگان Angular signal form از مجموعه Angular love رو استفاده کنید برای افزایش دانش تون خیلی بدرد میخوره
#ebook
#angularsignal
#angular
@angularcafe
#ebook
#angularsignal
#angular
@angularcafe
👍2
https://github.com/omidkh68/material-tailwind-range-date-picker
این یه پروژه کوچیک Material range datepicker هست که با signal مزین شده و یه سری offset داره و timepicker
#angularsignal
#angular
@angularcafe
این یه پروژه کوچیک Material range datepicker هست که با signal مزین شده و یه سری offset داره و timepicker
#angularsignal
#angular
@angularcafe
GitHub
GitHub - omidkh68/material-tailwind-range-date-picker: A customizable Date Range Picker built with Angular 20, Angular Material…
A customizable Date Range Picker built with Angular 20, Angular Material, and Tailwind CSS v4, supporting two-way binding, date-time offsets, and a clean Dark/Light modern UI. - omidkh68/material-t...
👍2
یکی از علایق شدیدم تو پنل ها استفاده از Chart های قشنگ و کاربردیه که چشم هر کارفرمایی رو پر میکنه
یه نمونه signal based با plotyjs زدم که نمونه خوبی شده
البته کتابخونه خیلی قوی نیست ولی بازم چارت های به نسبت خوبی داره
https://github.com/omidkh68/angular-21-plotyjs
#angularchart
#angularsignal
#angular
@angularcafe
یه نمونه signal based با plotyjs زدم که نمونه خوبی شده
البته کتابخونه خیلی قوی نیست ولی بازم چارت های به نسبت خوبی داره
https://github.com/omidkh68/angular-21-plotyjs
#angularchart
#angularsignal
#angular
@angularcafe
omidkh68.github.io
Angular 21 - Plotyjs
Angular 21 - PlotyJS example
👍2
https://www.ngdiagram.dev/
یکی از بهترین ابزار های انگولار برای ساخت Diagram همین ngDiagram هست
کاربردی و native و سبک
#angulartools
#angular
@angularcafe
یکی از بهترین ابزار های انگولار برای ساخت Diagram همین ngDiagram هست
کاربردی و native و سبک
#angulartools
#angular
@angularcafe
www.ngdiagram.dev
NgDiagram — Native Diagramming for Angular Apps
NgDiagram lets you build interactive, DOM-based diagrams directly in Angular. Native, flexible, and extensible — with minimal boilerplate.
❤1👍1
https://www.angular.courses/caniuse/features
این سایت کمک میکنه بهمون که هر کدوم از feature هایی که تو نسخه های مختلف Angular میاد چه وضعیتی دارن از لحاظ Stability و مورد استفاده بودنش رو مشخص میکنه
#angularfeatures
#angular
@angularcafe
این سایت کمک میکنه بهمون که هر کدوم از feature هایی که تو نسخه های مختلف Angular میاد چه وضعیتی دارن از لحاظ Stability و مورد استفاده بودنش رو مشخص میکنه
#angularfeatures
#angular
@angularcafe
Angular Courses
Angular Features Compatibility - Can I Use Angular Features
Explore Angular features and their compatibility across versions. Find out which Angular features are available in different versions.
❤1👍1
image_2026-02-15_17-24-58.png
72.6 KB
https://tanstack.com/query/v5
به GPT گفتم در مورد TanStack و کاربرد هاش در Angular و مقایسه feature هاش در برابر feature های native در Angular یه سری جدول بده و امتیاز بندی کنه که نتیجه اش در عکس ها گذاشته شده
چیزی که GPT نتیجه گیری کرد جالب بود که نیازی به استفاده اش نیست بیشتر باید ازش ایده گرفت و براساس سبک و نوع پروژه میشه ازش استفاده کرد یا نکرد
#tanstack
#angulartanstack
#angular
@angularcafe
به GPT گفتم در مورد TanStack و کاربرد هاش در Angular و مقایسه feature هاش در برابر feature های native در Angular یه سری جدول بده و امتیاز بندی کنه که نتیجه اش در عکس ها گذاشته شده
چیزی که GPT نتیجه گیری کرد جالب بود که نیازی به استفاده اش نیست بیشتر باید ازش ایده گرفت و براساس سبک و نوع پروژه میشه ازش استفاده کرد یا نکرد
#tanstack
#angulartanstack
#angular
@angularcafe
❤1👍1
یه بار برای همیشه با کدهای اضافی موقع submit فرم توی Angular Signal Forms خداحافظی کنیم
قابلیت signal form که اضافه شد خیلی خفن و قوی بود مثل مدل قبلی نبود که درگیر ماژول و چیزای دیگه بشیم ولی هنوز خوب پخته نشده بود و یه سری کارا رو باید دستی مدیریت میکردیم مثل novalidate کردن برای غیر فعال کردن validation دستی خود browser ها
یا جلوگیری از reload شدن صفحه با (submit)
حالا تو نسخه بعدی که قراره نسخه 21.2 باشه یه directive اضافه دارن میکنن که به خود form اضافه میشه
این Directive هم خودش از novalidate پشتیبانی میکنه و جلوی اعتبار سنجی پیشفرض مرورگر رو میگیره
هم جلوی reload شدن صفحه رو میگیره
هم submit رو هندل میکنه
البته این قابلیت فعلا بصورت Experimental اضافه میشه تا تثبیت بشه و به برنچ اصلی مرج بشه
لینک commit:
https://github.com/angular/angular/commit/ba009b6031
#signalform
#angularsignal
#angular
@angularcafe
قابلیت signal form که اضافه شد خیلی خفن و قوی بود مثل مدل قبلی نبود که درگیر ماژول و چیزای دیگه بشیم ولی هنوز خوب پخته نشده بود و یه سری کارا رو باید دستی مدیریت میکردیم مثل novalidate کردن برای غیر فعال کردن validation دستی خود browser ها
یا جلوگیری از reload شدن صفحه با (submit)
حالا تو نسخه بعدی که قراره نسخه 21.2 باشه یه directive اضافه دارن میکنن که به خود form اضافه میشه
<form [formRoot]="loginForm">
این Directive هم خودش از novalidate پشتیبانی میکنه و جلوی اعتبار سنجی پیشفرض مرورگر رو میگیره
هم جلوی reload شدن صفحه رو میگیره
هم submit رو هندل میکنه
البته این قابلیت فعلا بصورت Experimental اضافه میشه تا تثبیت بشه و به برنچ اصلی مرج بشه
لینک commit:
https://github.com/angular/angular/commit/ba009b6031
#signalform
#angularsignal
#angular
@angularcafe
GitHub
feat(forms): add form directive · angular/angular@ba009b6
Adds a `formRoot` directive to manage submitting the form in signal
forms.
forms.
❤1
یه اینفوگرافی از Lifecycle های انگولار و ترتیب اجرا شدن هر کدوم شون
hookهای مهمی که هر برنامهنویس Angular باید مسلط باشه
* ngOnChanges() : وقتی مقدارهای @Input عوض میشن، اینجا میتونی واکنش نشون بدی
* ngOnInit() : جای درست برای راهاندازی منطق اولیهی کامپوننت
* ngDoCheck() : برای وقتی که میخوای Change Detection سفارشی/خاص خودت رو پیاده کنی
* ngAfterViewInit() : بهترین و امنترین زمان برای دسترسی به @ViewChild
* ngOnDestroy() : برای جمعکردن همهچی و جلوگیری از memory leak
چرا lifecycle hookها مهمن؟
چون باعث میشن:
* performance بهتر بشه
* معماری تمیزتر و قابلمدیریتتر داشته باشی
* memory leak اتفاق نیفته
#angular
@angularcafe
hookهای مهمی که هر برنامهنویس Angular باید مسلط باشه
* ngOnChanges() : وقتی مقدارهای @Input عوض میشن، اینجا میتونی واکنش نشون بدی
* ngOnInit() : جای درست برای راهاندازی منطق اولیهی کامپوننت
* ngDoCheck() : برای وقتی که میخوای Change Detection سفارشی/خاص خودت رو پیاده کنی
* ngAfterViewInit() : بهترین و امنترین زمان برای دسترسی به @ViewChild
* ngOnDestroy() : برای جمعکردن همهچی و جلوگیری از memory leak
چرا lifecycle hookها مهمن؟
چون باعث میشن:
* performance بهتر بشه
* معماری تمیزتر و قابلمدیریتتر داشته باشی
* memory leak اتفاق نیفته
#angular
@angularcafe
❤1👍1
یه خبر جذاب برای دنیای Angular! از نسخه 21.2 به بعد، وقتی با CLI یه پروژه جدید میسازی، Prettier بهصورت پیشفرض formatter پروژهست.
یعنی چی؟ یعنی ng new از همون اول یه workspace بهت میده که همهچی برای یه فرمتدهی یکدست و استاندارد از قبل تنظیم شده بدون اینکه تو هیچی ستاپ کنی یا دنبال config بگردی.
من تو یه پروژه nx اومدم prettier رو ستاپ کنم خیلی دردسر کشیدم تا با IDE ام یکسان شد
#prettier
#angular
@angularcafe
یعنی چی؟ یعنی ng new از همون اول یه workspace بهت میده که همهچی برای یه فرمتدهی یکدست و استاندارد از قبل تنظیم شده بدون اینکه تو هیچی ستاپ کنی یا دنبال config بگردی.
من تو یه پروژه nx اومدم prettier رو ستاپ کنم خیلی دردسر کشیدم تا با IDE ام یکسان شد
#prettier
#angular
@angularcafe
❤1👍1
اگه خواستید یک current route رو مقایسه کنید به صورت signal based دیگه به جای استفاده از router.isActive از signal based function به عنوان isActive که از پکیج @angular/router هست استفاده کنیم
#angularsignal
#angular
@angularcafe
<div> {{ isProfileActive() }} </div>
روش قدیم و deperacated شده:
this.#router.isActive('/user/profile', {
paths: 'exact',
queryParams: 'ignored'
});
// Signal-based
readonly isProfileActive = isActive(
'/user/prifile',
this.#router,
{
paths: 'exact',
queryParams: 'ignored'
}
);#angularsignal
#angular
@angularcafe
❤1👍1
https://www.angularspace.com/senior-angular-interview-questions/
یکی از بیشترین unique view های مقاله سایت angular space همین پست سوالات مصاحبه ای انگولار هست
خیلی بدرد شرکت های خیلی بزرگ میخوره که چه داخل چه خارج استفاده کنیم که بهترین خودمون رو ارائه بدیم
#angularinterview
#angular
@angularcafe
یکی از بیشترین unique view های مقاله سایت angular space همین پست سوالات مصاحبه ای انگولار هست
خیلی بدرد شرکت های خیلی بزرگ میخوره که چه داخل چه خارج استفاده کنیم که بهترین خودمون رو ارائه بدیم
#angularinterview
#angular
@angularcafe
Angular Space
Senior Angular Interview Questions
Lately, I've been interviewing candidates for a Senior Angular Developer role, and I've ended up rejecting the majority of them. Am I a jerk for that? Maybe. But here's what I've realized from these interviews: we live in a bubble.
Most of us spend our…
Most of us spend our…
❤1👍1
درک Time To Interactive (TTI) در Angular +17
تا حالا شده یه صفحه ظاهراً کامل لود بشه و آماده به نظر بیاد، ولی وقتی روش کلیک میکنی هیچ واکنشی نشون نده؟
اگه آره، اون تأخیر دقیقاً همون چیزیه که TTI (Time To Interactive) اندازه میگیره.
اما TTI یعنی چی؟
TTI = لحظهای که اپ Angular شما واقعاً قابل تعامل و کاملاً responsive میشه
یعنی:
* دکمهها کار میکنن
* inputها پاسخ میدن
* UI روان و بدون مکث حس میشه
و Angular چه تأثیری روی TTI داره؟
یک: CSR
TTI معمولاً کندتره چون:
* JavaScript سنگینه
* رندرینگ کاملاً سمت client انجام میشه
دو: SSR در Angularهای قدیمیتر
ظاهر صفحه زودتر میاد (paint سریعتره)، ولی:
چون DOM دوباره render/rebuild میشه
تعامل کاربر ممکنه کند بشه یا حتی یه حس lag / flicker ایجاد بشه
سه: Angular +17 (SSR + Hydration)
* همون HTML که سرور رندر کرده reuse میشه
* بدون اینکه DOM از نو ساخته بشه، فقط event listenerها attach میشن
* تعامل سریعتره و معمولاً بدون flicker (همون تیک زدن یا چشمک زدن ui که هنوز کامل چیزی لود نشده و به کاربر نشون میده)
#angular
@angularcafe
تا حالا شده یه صفحه ظاهراً کامل لود بشه و آماده به نظر بیاد، ولی وقتی روش کلیک میکنی هیچ واکنشی نشون نده؟
اگه آره، اون تأخیر دقیقاً همون چیزیه که TTI (Time To Interactive) اندازه میگیره.
اما TTI یعنی چی؟
TTI = لحظهای که اپ Angular شما واقعاً قابل تعامل و کاملاً responsive میشه
یعنی:
* دکمهها کار میکنن
* inputها پاسخ میدن
* UI روان و بدون مکث حس میشه
و Angular چه تأثیری روی TTI داره؟
یک: CSR
TTI معمولاً کندتره چون:
* JavaScript سنگینه
* رندرینگ کاملاً سمت client انجام میشه
دو: SSR در Angularهای قدیمیتر
ظاهر صفحه زودتر میاد (paint سریعتره)، ولی:
چون DOM دوباره render/rebuild میشه
تعامل کاربر ممکنه کند بشه یا حتی یه حس lag / flicker ایجاد بشه
سه: Angular +17 (SSR + Hydration)
* همون HTML که سرور رندر کرده reuse میشه
* بدون اینکه DOM از نو ساخته بشه، فقط event listenerها attach میشن
* تعامل سریعتره و معمولاً بدون flicker (همون تیک زدن یا چشمک زدن ui که هنوز کامل چیزی لود نشده و به کاربر نشون میده)
#angular
@angularcafe
👍2
#Angularinterview
سوال و جواب مصاحبهای Angular - روز دوم (Angular Lifecycle Hooks)
ادامهی سری روزانه مصاحبه Angular؛ این بار میریم سراغ موضوعی که تقریباً توی بیشتر مصاحبهها حتماً بهش گیر میدن.
🔹 موضوع روز ۲: Angular Lifecycle Hooks
1️⃣ سوال: Angular lifecycle hooks چی هستن؟
پاسخ: Lifecycle hooks یک سری method هستن که بهت اجازه میدن به فازهای مختلف زندگی یک component دسترسی داشته باشی - از لحظهی ساخته شدن تا زمان destroy شدن.
2️⃣ سوال: پرکاربردترین lifecycle hookها کدوما هستن؟
پاسخ:
• متد ngOnInit()
بعد از اینکه component ساخته و initialize شد، فقط یک بار اجرا میشه.
⚡️ بهترین جا برای API callها و تنظیمات اولیه.
• متد ngOnChanges()
وقتی مقدار input تغییر کنه اجرا میشه.
⚡️ زمانی استفاده میشه که component باید به تغییرات دادهی parent واکنش نشون بده.
• متد ngAfterViewInit()
بعد از اینکه view مربوط به component کامل initialize شد اجرا میشه.
⚡️ برای دسترسی به DOM و منطق viewChild خیلی کاربردیه.
• متد ngOnDestroy()
قبل از اینکه component از بین بره اجرا میشه.
⚡️ برای cleanup کردن subscriptionها، timerها و event listenerها و کلا پاک سازی حافظه استفاده شده است که بسیار مهمه که رعایت بشه برای بهبود performance سیستم.
در Angular در واقع Hook های بیشتری از موارد یاد شده وجود داره که دوست داشتید میتونیم اونا رو هم مطرح و بررسی کنیم، موارد گفته شده پرکاربردترینها بودن.
3️⃣ سوال: فرق constructor با ngOnInit() چیه؟
پاسخ:
• constructor: بیشتر برای dependency injection استفاده میشه که دیگه بهتره به جای استفاده از constructor از inject function بهتره استفاده بشه.
• ngOnInit() : برای منطق initialize شدن component
4️⃣ سوال: چرا ngOnDestroy() مهمه؟
پاسخ: اگر subscriptionها و timerها و listenerها رو cleanup نکنی، سیستم دچار memory leak میشه و مشکل performance پیش بیاد.
⚠️ نکته: به جای استفاده از unsubscribe ها در event های rx بهتره از takeUntilDestroyed استفاده کنید که خودکار بعد از destroy شدن component تون subscription رو unsubscribe کنه
📌مفهومهای Lifecycle hooks نشون میده چقدر رفتار component رو توی اپلیکیشن واقعی درست میفهمی.
➡️ ادامه: روز ۳ بهزودی… (Change Detection و OnPush Strategy) ⚡️🧠
✍🏻 منتظر نظرات و پیشنهادهای سازندهتون هستم.
#angularlifecycles
#angular
@angularcafe
سوال و جواب مصاحبهای Angular - روز دوم (Angular Lifecycle Hooks)
ادامهی سری روزانه مصاحبه Angular؛ این بار میریم سراغ موضوعی که تقریباً توی بیشتر مصاحبهها حتماً بهش گیر میدن.
🔹 موضوع روز ۲: Angular Lifecycle Hooks
1️⃣ سوال: Angular lifecycle hooks چی هستن؟
پاسخ: Lifecycle hooks یک سری method هستن که بهت اجازه میدن به فازهای مختلف زندگی یک component دسترسی داشته باشی - از لحظهی ساخته شدن تا زمان destroy شدن.
2️⃣ سوال: پرکاربردترین lifecycle hookها کدوما هستن؟
پاسخ:
• متد ngOnInit()
بعد از اینکه component ساخته و initialize شد، فقط یک بار اجرا میشه.
⚡️ بهترین جا برای API callها و تنظیمات اولیه.
• متد ngOnChanges()
وقتی مقدار input تغییر کنه اجرا میشه.
⚡️ زمانی استفاده میشه که component باید به تغییرات دادهی parent واکنش نشون بده.
• متد ngAfterViewInit()
بعد از اینکه view مربوط به component کامل initialize شد اجرا میشه.
⚡️ برای دسترسی به DOM و منطق viewChild خیلی کاربردیه.
• متد ngOnDestroy()
قبل از اینکه component از بین بره اجرا میشه.
⚡️ برای cleanup کردن subscriptionها، timerها و event listenerها و کلا پاک سازی حافظه استفاده شده است که بسیار مهمه که رعایت بشه برای بهبود performance سیستم.
در Angular در واقع Hook های بیشتری از موارد یاد شده وجود داره که دوست داشتید میتونیم اونا رو هم مطرح و بررسی کنیم، موارد گفته شده پرکاربردترینها بودن.
3️⃣ سوال: فرق constructor با ngOnInit() چیه؟
پاسخ:
• constructor: بیشتر برای dependency injection استفاده میشه که دیگه بهتره به جای استفاده از constructor از inject function بهتره استفاده بشه.
• ngOnInit() : برای منطق initialize شدن component
4️⃣ سوال: چرا ngOnDestroy() مهمه؟
پاسخ: اگر subscriptionها و timerها و listenerها رو cleanup نکنی، سیستم دچار memory leak میشه و مشکل performance پیش بیاد.
⚠️ نکته: به جای استفاده از unsubscribe ها در event های rx بهتره از takeUntilDestroyed استفاده کنید که خودکار بعد از destroy شدن component تون subscription رو unsubscribe کنه
📌مفهومهای Lifecycle hooks نشون میده چقدر رفتار component رو توی اپلیکیشن واقعی درست میفهمی.
➡️ ادامه: روز ۳ بهزودی… (Change Detection و OnPush Strategy) ⚡️🧠
✍🏻 منتظر نظرات و پیشنهادهای سازندهتون هستم.
#angularlifecycles
#angular
@angularcafe
❤3👍1