
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>58Ge&#39;s Blog</title>
      <link>https://blog.58ge.gs.cn//blog</link>
      <description>永远是个初学者</description>
      <language>zh-cn</language>
      <managingEditor>song58ge@gmail.com (GeSong)</managingEditor>
      <webMaster>song58ge@gmail.com (GeSong)</webMaster>
      <lastBuildDate>Mon, 09 Nov 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://blog.58ge.gs.cn//feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://blog.58ge.gs.cn//blog/infinite-canvas</guid>
    <title>实现无限画布</title>
    <link>https://blog.58ge.gs.cn//blog/infinite-canvas</link>
    <description>无限画布是视口上的一台相机：世界坐标无界，屏幕只是平移和缩放后的窗口。本文给出可交互示例，并比较 DOM 变换、Canvas 2D、视口裁剪和 WebGL 四条实现路线。</description>
    <pubDate>Mon, 09 Nov 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>canvas</category><category>web</category><category>javascript</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/design-patterns/singleton</guid>
    <title>设计模式（五）之单例模式</title>
    <link>https://blog.58ge.gs.cn//blog/design-patterns/singleton</link>
    <description>保证一个类在进程里只有一个实例。对比 TypeScript 类单例和 ES 模块单例，并说明测试与多实例边界。</description>
    <pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>设计模式</category><category>typescript</category><category>singleton</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/design-patterns/observer</guid>
    <title>设计模式（四）之观察者模式</title>
    <link>https://blog.58ge.gs.cn//blog/design-patterns/observer</link>
    <description>主题在状态变化时通知已注册的观察者。用一段 TypeScript 事件总线说明订阅、退订，以及泄漏与通知顺序。</description>
    <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>设计模式</category><category>typescript</category><category>observer</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/design-patterns/factory</guid>
    <title>设计模式（三）之工厂模式</title>
    <link>https://blog.58ge.gs.cn//blog/design-patterns/factory</link>
    <description>把对象创建从使用处抽走。用 TypeScript 的简单工厂和工厂方法，说明何时封装 new，以及和构造函数重载的差别。</description>
    <pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>设计模式</category><category>typescript</category><category>factory</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/design-patterns/adapter</guid>
    <title>设计模式（二）之适配器模式</title>
    <link>https://blog.58ge.gs.cn//blog/design-patterns/adapter</link>
    <description>把已有接口转换成调用方期望的接口。用 TypeScript 包装第三方支付 SDK，说明适配器与装饰器的差别，并给出常见落地场景。</description>
    <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>设计模式</category><category>typescript</category><category>adapter</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/design-patterns/decorator</guid>
    <title>设计模式（一）之装饰器模式</title>
    <link>https://blog.58ge.gs.cn//blog/design-patterns/decorator</link>
    <description>用组合而不是继承给对象动态叠加行为。以 TypeScript 包装数据源为例，说明装饰器模式的结构、用法和注意点。</description>
    <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>设计模式</category><category>typescript</category><category>decorator</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/react/use-ref</guid>
    <title>React Hook 专题：useRef</title>
    <link>https://blog.58ge.gs.cn//blog/react/use-ref</link>
    <description>梳理 useRef 在 DOM 引用与可变盒子两种角色中的用法与原理，并说明渲染期读写、初始化陷阱、与 state 误用等常见问题。</description>
    <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>react</category><category>hooks</category><category>useRef</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/react/use-callback</guid>
    <title>React Hook 专题：useCallback</title>
    <link>https://blog.58ge.gs.cn//blog/react/use-callback</link>
    <description>说明 useCallback 如何稳定函数引用、与 memo/useEffect 的配合方式，以及滥用、依赖陷阱、和 useMemo 的关系与解法。</description>
    <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>react</category><category>hooks</category><category>useCallback</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/react/use-memo</guid>
    <title>React Hook 专题：useMemo</title>
    <link>https://blog.58ge.gs.cn//blog/react/use-memo</link>
    <description>讲清 useMemo 的缓存语义与适用场景，区分「性能优化」和「语义保证」，并覆盖依赖错误、过度memo、缓存被丢弃等常见问题。</description>
    <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>react</category><category>hooks</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/react/use-effect</guid>
    <title>React Hook 专题：useEffect</title>
    <link>https://blog.58ge.gs.cn//blog/react/use-effect</link>
    <description>从用法、执行时机与依赖数组讲清 useEffect，并梳理 Strict Mode 双调用、陈旧闭包、无限循环等常见问题与官方推荐解法。</description>
    <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>react</category><category>hooks</category><category>useEffect</category>
  </item>

  <item>
    <guid>https://blog.58ge.gs.cn//blog/html-in-canvas-hello-world</guid>
    <title>从 Hello World 入门 HTML-in-Canvas</title>
    <link>https://blog.58ge.gs.cn//blog/html-in-canvas-hello-world</link>
    <description>基于官方 Hello World demo，梳理 HTML-in-Canvas 的先决条件，以及 layoutsubtree、drawElementImage、onpaint 的最小工作流。</description>
    <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
    <author>song58ge@gmail.com (GeSong)</author>
    <category>canvas</category><category>html</category><category>chromium</category><category>web</category>
  </item>

    </channel>
  </rss>
