<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Antonio's blog</title>
        <link>https://antonio-ling.com/</link>
        <description>我是一隻前端小蝦米，努力夢想有一天變成大鯨魚</description>
        <lastBuildDate>Wed, 14 Oct 2026 06:46:39 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-TW</language>
        <image>
            <title>Antonio's blog</title>
            <url>https://antonio-ling.com/images/icon-192.png</url>
            <link>https://antonio-ling.com/</link>
        </image>
        <copyright>© 2026 Antonio</copyright>
        <atom:link href="https://antonio-ling.com/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Day 30：Angular Router Providers 與生命週期管理，路由離開後 Service 會銷毀嗎？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-30/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-30/</guid>
            <pubDate>Wed, 14 Oct 2026 06:46:39 GMT</pubDate>
            <description><![CDATA[平常在 Angular 中，我們可以透過 providers 決定 Service 的注入範圍。例如註冊在 Root，讓整個 Application 共用同一個實例；或註冊在 Component，讓 Service 隨著…]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 29：Angular 也有 VueUse？使用 Signality 整合常見 Browser API]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-29/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-29/</guid>
            <pubDate>Tue, 13 Oct 2026 15:14:18 GMT</pubDate>
            <description><![CDATA[在 Vue 生態系中，VueUse 提供許多 Composables，讓我們可以快速使用瀏覽器功能，例如監聽網路狀態、保存使用者設定，或偵測元素是否進入可視範圍。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 28：Angular 動態建立 Component，NgComponentOutlet 與 ViewContainerRef]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-28/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-28/</guid>
            <pubDate>Mon, 12 Oct 2026 09:27:41 GMT</pubDate>
            <description><![CDATA[平常在 Angular 中使用 Component，通常會直接在 Template 裡面宣告：]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 27：NgRx Store vs SignalStore，從 Action、Reducer 到直接更新 State]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-27/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-27/</guid>
            <pubDate>Sun, 11 Oct 2026 12:06:41 GMT</pubDate>
            <description><![CDATA[前幾天我們使用 NgRx SignalStore 實作購物車，透過 withState() 管理商品資料、withComputed() 計算總金額，再利用 withMethods() 與 patchState() 更新 …]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 26：SignalStore 與 Strategy Pattern，透過 DI 動態切換業務邏輯]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-26/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-26/</guid>
            <pubDate>Sat, 10 Oct 2026 14:01:59 GMT</pubDate>
            <description><![CDATA[昨天我們使用 Angular 原生 Signal 與 NgRx SignalStore 實作購物車，透過 State 管理商品資料，再利用 Computed 計算商品數量與總金額。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 25：Angular SignalStore，原生 Signal 不夠用嗎？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-25/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-25/</guid>
            <pubDate>Fri, 09 Oct 2026 13:28:45 GMT</pubDate>
            <description><![CDATA[在 Angular 開發中，如果資料只會被單一 Component 使用，通常可以直接透過 signal() 管理。但當多個 Component 需要共用同一份資料時，就得考慮狀態應該放在哪裡。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 24：SPA Router 為什麼不再只靠 History API？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-24/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-24/</guid>
            <pubDate>Thu, 08 Oct 2026 06:30:47 GMT</pubDate>
            <description><![CDATA[平常使用 Angular Router 時，可以透過 routerLink 或 router.navigate() 切換不同頁面。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 23：RouteReuseStrategy，切換路由一定要銷毀 Component 嗎？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-23/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-23/</guid>
            <pubDate>Wed, 07 Oct 2026 07:58:32 GMT</pubDate>
            <description><![CDATA[在後台系統中，很常會看到頁籤式介面，例如：]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 22：Angular Render Lifecycle，從 afterNextRender 到 DestroyRef]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-22/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-22/</guid>
            <pubDate>Tue, 06 Oct 2026 15:36:23 GMT</pubDate>
            <description><![CDATA[過去在 Angular 中，只要遇到初始化、View 建立或資源清理，通常會先想到 Lifecycle Hooks：]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 21：Angular Template 還適合呼叫 Method 嗎？從 Pipe、RxJS 到 computed]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-21/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-21/</guid>
            <pubDate>Mon, 05 Oct 2026 15:30:32 GMT</pubDate>
            <description><![CDATA[過去在寫 Angular 時，因為 Template 可以直接呼叫 Method，很容易在專案裡看到大量這樣的寫法。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 20：Signal Forms 非同步驗證，validateHttp 與 validateAsync]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-20/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-20/</guid>
            <pubDate>Sun, 04 Oct 2026 12:56:17 GMT</pubDate>
            <description><![CDATA[前兩篇介紹了 Signal Forms 的基本驗證，以及需要參考其他欄位的 Cross-field Validation。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 19：Signal Forms Cross-field Validation 與欄位更新時機]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-19/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-19/</guid>
            <pubDate>Sat, 03 Oct 2026 15:18:26 GMT</pubDate>
            <description><![CDATA[上一篇介紹 Signal Forms 時，已經看到可以透過 Schema 定義欄位驗證，例如 required()、email()、minLength()。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 18：Angular Signal Forms 穩定了，跟我們用了這麼久的 Reactive Forms 到底差在哪？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-18/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-18/</guid>
            <pubDate>Fri, 02 Oct 2026 15:28:36 GMT</pubDate>
            <description><![CDATA[在 Angular 中處理表單，很多專案使用的都是 Reactive Forms。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 17：effect() 不是拿來同步 Signal 的，Angular 的 Side Effect 該怎麼寫？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-17/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-17/</guid>
            <pubDate>Thu, 01 Oct 2026 13:22:13 GMT</pubDate>
            <description><![CDATA[effect() 是 Angular signal 裡很容易被誤用的一個 API。因為寫法直覺，只要讀取 signal，就能在值改變時執行一些事情，所以很常被拿來同步狀態、打 API，甚至再去修改其他 signal。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 16：即將登場的 Route Resources，Angular Router 為什麼需要新的資料載入方式？]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-16/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-16/</guid>
            <pubDate>Wed, 30 Sep 2026 15:12:05 GMT</pubDate>
            <description><![CDATA[過去在 Angular Router 中，如果希望進入 Component 前先完成資料載入，可以透過 Resolver，讓資料取得流程在 Component 初始化之前執行。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 15：搞懂 Injection Context，從 inject()、runInInjectionContext() 到 injectAsync()]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-15/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-15/</guid>
            <pubDate>Tue, 29 Sep 2026 05:44:28 GMT</pubDate>
            <description><![CDATA[前面提到 Injection Context 時，可能會讓人聯想到先前介紹過的 Reactive Context。我一開始也有點搞混，因此花了一些時間重新理解 Angular 裡這些不同的執行環境。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 14：Lazy Loading 不只一種，從 Router Preloading、@defer 到 injectAsync()]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-14/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-14/</guid>
            <pubDate>Mon, 28 Sep 2026 14:44:46 GMT</pubDate>
            <description><![CDATA[當 Client Side Rendering 的應用越來越大時，我們通常會開始思考，能不能把原本一次載入的內容拆得更小，等到真正需要時再下載，避免初始載入過多 JavaScript，拉長畫面呈現的時間。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 13：從 Router Event 到 Signal]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-13/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-13/</guid>
            <pubDate>Sun, 27 Sep 2026 12:37:55 GMT</pubDate>
            <description><![CDATA[路由狀態管理在前端開發中比較少被單獨拿出來討論，但在 Angular 裡，一次路由導航其實會經過不少階段，也會在過程中發出不同的 Router Event，例如 NavigationStart、NavigationEnd…]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 12：從 httpResource 到 TanStack Query，認識 Server State]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-12/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-12/</guid>
            <pubDate>Sat, 26 Sep 2026 15:35:12 GMT</pubDate>
            <description><![CDATA[前面我們花了不少時間討論，為什麼「請求本身的狀態」和「元件的顯示狀態」應該分開處理。]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
        <item>
            <title><![CDATA[Day 11：用 rxResource 串起 Observable 與 Resource]]></title>
            <link>https://antonio-ling.com/ithome-2026-day-11/</link>
            <guid isPermaLink="false">https://antonio-ling.com/ithome-2026-day-11/</guid>
            <pubDate>Fri, 25 Sep 2026 14:42:04 GMT</pubDate>
            <description><![CDATA[前面介紹了不少 Resource 到 httpResource() 的應用。不過在 Angular 開發中，Observable 與 RxJS 仍然是很常見的非同步資料處理方式，像是 switchMap、map、debo…]]></description>
            <category>iThome 鐵人賽</category>
            <category>Angular</category>
            <category>2026 鐵人賽</category>
        </item>
    </channel>
</rss>