<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های احسان لطفی نیا</title>
        <link>https://virgool.io/feed/@lotfiniamail</link>
        <description>پدر، برنامه نویس، عاشق قهوه</description>
        <language>fa</language>
        <pubDate>2026-06-16 11:06:15</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1754752/avatar/avatar.png?height=120&amp;width=120</url>
            <title>احسان لطفی نیا</title>
            <link>https://virgool.io/@lotfiniamail</link>
        </image>

                    <item>
                <title>بهینه‌سازی عملکرد Angular با استفاده از Deferrable Views</title>
                <link>https://virgool.io/@lotfiniamail/%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF-angular-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-deferrable-views-yk0vl7rja1cv</link>
                <description> Deferrable Views in Angularقابلیت بارگذاری تأخیری (Deferrable Views) در Angular 17 با استفاده از بلوک‌های &#x60;@defer&#x60; معرفی شد و امکان بارگذاری جداگانه و در زمان نیاز کامپوننت‌ها، دایرکتیوها و پایپ‌های غیرضروری را فراهم می‌کند. این ویژگی باعث کاهش حجم اولیه، بهبود معیارهای LCP و TTFB و ارتقاء تجربه کاربری می‌شود.کاربران امروزی انتظار بارگذاری سریع و تجربه کاربری منعطف را دارند. Angular با ارائه &#x60;@defer&#x60; این نیاز را با بارگذاری دقیق و به موقع بخش‌های قالب پوشش می‌دهد تعریف Deferrable Viewsاصلاح Deferrable Views یا بلوک‌های &#x60;@defer&#x60; قسمتی از قالب را که نیاز به بارگذاری جداگانه دارد، مشخص می‌کند. تنها کامپوننت‌ها، دایرکتیوها و پایپ‌های standalone می‌توانند از این ساختار استفاده کنند.مزایاکاهش حجم بسته اولیه: انتقال کد غیرضروری به بسته‌های جداگانه منجر به بهبود زمان دریافت اولین بایت می‌شود .بهبود Web Vitals: بارگذاری تأخیری باعث بهبود LCP و TTFB می‌شود.ارتقاء تجربه کاربری: محتوای اصلی سریع نمایش داده شده و سایر بخش‌ها در پس‌زمینه یا بر اساس تعامل بارگذاری می‌شوند.نحوه استفادهدر زیر مثالی ساده از نحوه استفاده @defer نمایش داده شده است.@defer (on viewport) {    &lt;large-component /&gt;} @loading(after 100ms; minimum 1s) {    &lt;img alt=&amp;quotloading...&amp;quot src=&amp;quotloading.gif&amp;quot /&gt;} @placeholder(minimum 500ms) {    &lt;p&gt;Placeholder content&lt;/p&gt;}@error {  
  &lt;p&gt;Failed to load large component.&lt;/p&gt;
}
بلاک defer: بارگذاری تأخیری یک بخش از نما را زمانی که نیاز است به‌صورت غیرهمزمان انجام می‌دهد.بلاک loading: محتوایی که هنگام بارگذاری داده‌ها به‌صورت موقت نمایش داده می‌شود.بلاک placeholder: یک فضای خالی یا طرح اولیه برای زمانی که داده‌ها هنوز آماده نیستند.بلاک error: نمایش پیغام خطا در صورت شکست در بارگذاری داده‌ها.ورودی های بلاک deferبطور کلی دو ورودی on و when در ورودی این بلاک قابل تعریف است که on برای تعریف یک رویداد خاص مانند نمایش viewport و when برای تعریف یک شرط در نمایش defer کاربرد دارد به حالت های مختلف در مثال زیر دقت کنید.
&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; }
// 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>