<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های احسان لطفی نیا</title><link>https://virgool.ir/feed/@lotfiniamail</link><description>پدر، برنامه نویس، عاشق قهوه</description><language>fa</language><pubDate>2026-11-11 22:14:21</pubDate><image><url>https://files.virgool.ir/upload/users/1754752/avatar/avatar.png</url><title>احسان لطفی نیا</title><link>https://virgool.ir/@lotfiniamail</link></image><item><title>بهینه‌سازی عملکرد Angular با استفاده از Deferrable Views</title><link>https://virgool.ir/@lotfiniamail/بهینه-سازی-عملکرد-angular-با-استفاده-از-deferrable-views-yk0vl7rja1cv</link><description> Deferrable Views in Angularقابلیت بارگذاری تأخیری (Deferrable Views) در Angular 17 با استفاده از بلوک‌های `@defer` معرفی شد و امکان بارگذاری جداگانه و در زمان نیاز کامپوننت‌ها، دایرکتیوها و پایپ‌های غیرضروری را فراهم می‌کند. این ویژگی باعث کاهش حجم اولیه، بهبود معیارهای LCP و TTFB و ارتقاء تجربه کاربری می‌شود.کاربران امروزی انتظار بارگذاری سریع و تجربه کاربری منعطف را دارند. Angular با ارائه `@defer` این نیاز را با بارگذاری دقیق و به موقع بخش‌های قالب پوشش می‌دهد تعریف Deferrable Viewsاصلاح Deferrable Views یا بلوک‌های `@defer` قسمتی از قالب را که نیاز به بارگذاری جداگانه دارد، مشخص می‌کند. تنها کامپوننت‌ها، دایرکتیوها و پایپ‌های standalone می‌توانند از این ساختار استفاده کنند.مزایاکاهش حجم بسته اولیه: انتقال کد غیرضروری به بسته‌های جداگانه منجر به بهبود زمان دریافت اولین بایت می‌شود .بهبود Web Vitals: بارگذاری تأخیری باعث بهبود LCP و TTFB می‌شود.ارتقاء تجربه کاربری: محتوای اصلی سریع نمایش داده شده و سایر بخش‌ها در پس‌زمینه یا بر اساس تعامل بارگذاری می‌شوند.نحوه استفادهدر زیر مثالی ساده از نحوه استفاده @defer نمایش داده شده است.@defer (on viewport) {    &lt;large-component /&gt;} @loading(after 100ms; minimum 1s) {    &lt;img alt=&#34;loading...&#34; src=&#34;loading.gif&#34; /&gt;} @placeholder(minimum 500ms) {    &lt;p&gt;Placeholder content&lt;/p&gt;}@error {  &#xA;  &lt;p&gt;Failed to load large component.&lt;/p&gt;&#xA;}&#xA;بلاک defer: بارگذاری تأخیری یک بخش از نما را زمانی که نیاز است به‌صورت غیرهمزمان انجام می‌دهد.بلاک loading: محتوایی که هنگام بارگذاری داده‌ها به‌صورت موقت نمایش داده می‌شود.بلاک placeholder: یک فضای خالی یا طرح اولیه برای زمانی که داده‌ها هنوز آماده نیستند.بلاک error: نمایش پیغام خطا در صورت شکست در بارگذاری داده‌ها.ورودی های بلاک deferبطور کلی دو ورودی on و when در ورودی این بلاک قابل تعریف است که on برای تعریف یک رویداد خاص مانند نمایش viewport و when برای تعریف یک شرط در نمایش defer کاربرد دارد به حالت های مختلف در مثال زیر دقت کنید.&#xA;&lt;!-- Load component when it appears in the viewport --&gt;@defer (on viewport) { &lt;large-cmp /&gt; }&lt;!-- Reference element for deferred loading --&gt;&lt;div #greeting&gt;Hello!&lt;/div&gt;&lt;!-- Load component when the greeting element enters the viewport --&gt;@defer (on viewport(greeting)) { &lt;greetings-cmp /&gt; }&lt;!-- Load component upon user interaction (e.g., click) --&gt;@defer (on interaction) { &lt;large-cmp /&gt; }&lt;!-- Reference element for interaction-based loading --&gt;&lt;div #greeting&gt;Hello!&lt;/div&gt;&lt;!-- Load component when interacting with the greeting element --&gt;@defer (on interaction(greeting)) { &lt;greetings-cmp /&gt; }&lt;!-- Load component when hovered over --&gt;@defer (on hover) { &lt;large-cmp /&gt; }&lt;!-- Reference element for hover-based loading --&gt;&lt;div #greeting&gt;Hello!&lt;/div&gt;&lt;!-- Load component when hovering over the greeting element --&gt;@defer (on hover(greeting)) { &lt;greetings-cmp /&gt; }&lt;!-- Load component immediately without delay --&gt;@defer (on immediate) { &lt;large-cmp /&gt; }&lt;!-- Load component after a delay of 500 milliseconds --&gt;@defer (on timer(500ms)) { &lt;large-cmp /&gt; }&#xA;// Load component only if the conditionFlag is truelet conditionFlag = false;@defer (when conditionFlag) { &lt;large-cmp /&gt; }نتیجه‌گیریساختار Deferrable Views در Angular ابزاری قوی برای بهینه‌سازی بارگذاری اولیه و بهبود تجربه کاربری هستند که با استفاده هوشمندانه می‌توانند زمان رندر اولیه را کاهش داده و عملکرد کلی اپلیکیشن را ارتقاء دهند.#angular</description><category>احسان لطفی نیا</category><author>احسان لطفی نیا</author><pubDate>Tue, 13 May 2025 09:44:46 +0330</pubDate></item></channel></rss>