<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://shanlefan.com/en</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://shanlefan.com/en" />
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://shanlefan.com/zh-TW" />
<lastmod>2026-07-03T09:50:23.583Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://shanlefan.com/en/blog" />
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://shanlefan.com/zh-TW/blog" />
<lastmod>2026-07-03T09:50:23.583Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/tags</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://shanlefan.com/en/blog/tags" />
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://shanlefan.com/zh-TW/blog/tags" />
<lastmod>2026-07-03T09:50:23.583Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/a11y-series-1-sematic-html-zh_tw</loc>
<lastmod>2025-01-10T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/a11y-series-1-sematic-html</loc>
<lastmod>2025-01-10T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/aws-security-group-setup-zh_tw</loc>
<lastmod>2025-08-18T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/aws-security-group-setup</loc>
<lastmod>2025-08-18T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/browser-rendering-pipeline-part-1-zh_tw</loc>
<lastmod>2024-11-18T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/browser-rendering-pipeline-part-1</loc>
<lastmod>2024-11-18T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/browser-rendering-pipeline-part-2-zh_tw</loc>
<lastmod>2024-12-03T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/browser-rendering-pipeline-part-2</loc>
<lastmod>2024-12-03T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/browser-workflow-from-downloading-resources-to-rendering-the-page-part-1-zh_tw</loc>
<lastmod>2024-11-14T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/browser-workflow-from-downloading-resources-to-rendering-the-page-part-1</loc>
<lastmod>2024-11-14T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/browser-workflow-from-downloading-resources-to-rendering-the-page-part-2-zh_tw</loc>
<lastmod>2024-11-15T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/browser-workflow-from-downloading-resources-to-rendering-the-page-part-2</loc>
<lastmod>2024-11-15T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/create-design-system-zh_tw</loc>
<lastmod>2025-07-21T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/create-design-system</loc>
<lastmod>2025-07-21T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/design-system-naming-zh_tw</loc>
<lastmod>2025-08-04T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/design-system-naming</loc>
<lastmod>2025-08-04T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/event-tracking-and-monitoring-zh_tw</loc>
<lastmod>2024-11-19T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/event-tracking-and-monitoring</loc>
<lastmod>2024-11-19T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/how-to-implement-form-event-tracking-monitoring-zh_tw</loc>
<lastmod>2024-11-22T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/how-to-implement-form-event-tracking-monitoring</loc>
<lastmod>2024-11-22T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-engine-and-browser-zh_tw</loc>
<lastmod>2024-12-05T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-engine-and-browser</loc>
<lastmod>2024-12-05T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-event-loop-zh_tw</loc>
<lastmod>2024-10-10T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-event-loop</loc>
<lastmod>2024-10-10T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-execution-context-zh_tw</loc>
<lastmod>2024-10-14T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-execution-context</loc>
<lastmod>2024-10-14T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-forEach-vs-map-key-differences-zh_tw</loc>
<lastmod>2024-12-01T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-forEach-vs-map-key-differences</loc>
<lastmod>2024-12-01T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-prototype-introduction-programming-paradigms-zh_tw</loc>
<lastmod>2024-12-20T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-prototype-introduction-programming-paradigms</loc>
<lastmod>2024-12-20T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-prototype-part-1-zh_tw</loc>
<lastmod>2024-12-22T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-prototype-part-1</loc>
<lastmod>2024-12-22T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-scope-zh_tw</loc>
<lastmod>2024-10-12T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-scope</loc>
<lastmod>2024-10-12T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-type-conversion-vs.-type-coercion-zh_tw</loc>
<lastmod>2024-10-20T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-type-conversion-vs.-type-coercion</loc>
<lastmod>2024-10-20T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/js-variables-and-constants-zh_tw</loc>
<lastmod>2024-10-09T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/js-variables-and-constants</loc>
<lastmod>2024-10-09T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/learn-to-build-auth-authorization-en</loc>
<lastmod>2026-02-04T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/learn-to-build-auth-authorization-frontend-perspective-1-en</loc>
<lastmod>2026-02-24T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/learn-to-build-auth-authorization-frontend-perspective-1-zh_tw</loc>
<lastmod>2026-02-24T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/learn-to-build-auth-authorization-frontend-perspective-2-en</loc>
<lastmod>2026-03-06T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/learn-to-build-auth-authorization-frontend-perspective-2-zh_tw</loc>
<lastmod>2026-03-06T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/learn-to-build-auth-authorization-zh_tw</loc>
<lastmod>2026-02-04T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/learn-to-build-auth-data-scope-expansion-en</loc>
<lastmod>2026-02-11T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/learn-to-build-auth-data-scope-expansion-zh_tw</loc>
<lastmod>2026-02-11T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/learn-to-build-auth-en</loc>
<lastmod>2026-01-25T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/learn-to-build-auth-zh_tw</loc>
<lastmod>2026-01-25T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/zh-TW/blog/reflection-on-work-zh_tw</loc>
<lastmod>2025-07-11T00:00:00.000Z</lastmod>
</url>
<url>
<loc>https://shanlefan.com/en/blog/reflection-on-work</loc>
<lastmod>2025-07-11T00:00:00.000Z</lastmod>
</url>
</urlset>
