<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://hujiacheng-blog.netlify.app/categories/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/esm-vs-commonjs/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/javascript/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/node.js/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/%E7%AC%94%E8%AE%B0/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E6%A8%A1%E5%9D%97%E5%8C%96/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/</loc><lastmod>2026-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-vnode-core-flags/</loc><lastmod>2026-03-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/vue3/</loc><lastmod>2026-03-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-reactivity-proxy-reflect/</loc><lastmod>2026-03-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/vue/</loc><lastmod>2026-03-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-async-update-and-nexttick/</loc><lastmod>2026-03-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/vite/</loc><lastmod>2026-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-dev-hooks/</loc><lastmod>2026-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E6%8F%92%E4%BB%B6/</loc><lastmod>2026-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/</loc><lastmod>2026-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/</loc><lastmod>2026-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-memory-monitor-plugin/</loc><lastmod>2026-03-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7/</loc><lastmod>2026-03-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-hooks-file-journey/</loc><lastmod>2026-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-mpa/</loc><lastmod>2026-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/tsconfig/</loc><lastmod>2026-02-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-define-best-practices/</loc><lastmod>2026-02-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/react/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/react-style-engineering-guide/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/typescript/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-env-typescript-guide/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-client-types-explained/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-tsconfig-explained/</loc><lastmod>2026-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/monorepo-vite-tsconfig-guide/</loc><lastmod>2026-02-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/tsconfig-core-roles-and-use-cases.md/</loc><lastmod>2026-02-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/ts-utility-types-cheatsheet/</loc><lastmod>2026-02-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/my-2026-month-1-2/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/diff%E7%AE%97%E6%B3%95/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-diff-algorithm-scenarios-and-source/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-patch-keyed-children-deep-dive/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/%E5%8D%9A%E5%AE%A2/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E7%AE%97%E6%B3%95/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</loc><lastmod>2026-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/lis/</loc><lastmod>2026-02-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-lis-algorithm-deep-dive/</loc><lastmod>2026-02-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/hbuilderx-uni-app-build-mp-deploy/</loc><lastmod>2026-02-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/miniprogram-ci-guide/</loc><lastmod>2026-02-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/console-performance-analysis/</loc><lastmod>2026-02-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-sourcemap-build-process/</loc><lastmod>2026-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-build-optimization/</loc><lastmod>2026-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-build-visual-guide/</loc><lastmod>2026-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-build-memory-overflow/</loc><lastmod>2026-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</loc><lastmod>2026-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/package-manager-comparison/</loc><lastmod>2026-01-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/frontend-engineering-guide/</loc><lastmod>2026-01-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/ast-guide/</loc><lastmod>2026-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/sourcemap-guide/</loc><lastmod>2026-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/transform-hook-failure-analysis/</loc><lastmod>2026-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-build-process/</loc><lastmod>2026-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-build-workflow/</loc><lastmod>2026-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/sourcemap-comment-demo/</loc><lastmod>2026-01-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/why-rollup-resets-sourcemap-to-undefined/</loc><lastmod>2026-01-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/sourcemap-filter/</loc><lastmod>2026-01-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/version-scripts/</loc><lastmod>2026-01-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/upload-sourcemap-guide/</loc><lastmod>2026-01-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/proxy+reflect/</loc><lastmod>2026-01-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/2025-summary/</loc><lastmod>2025-12-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-common-config/</loc><lastmod>2025-12-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-h-and-render/</loc><lastmod>2025-12-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-h-and-render-vs-create-app/</loc><lastmod>2025-12-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-chunk-guide/</loc><lastmod>2025-12-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-async-loading-code-splitting-guide/</loc><lastmod>2025-12-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-global-components/</loc><lastmod>2025-12-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/gitignore-options/</loc><lastmod>2025-12-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/nginx-deploy/</loc><lastmod>2025-12-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue3-ts-components-vite-build/</loc><lastmod>2025-12-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/changesets-cli-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/commitlint-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/editorconfig-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/monorepo-turborepo/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/npmrc-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/package-json-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/rollup-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/tsconfig-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vite-options/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vitest-testing-guide/</loc><lastmod>2025-11-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/commitizen-options/</loc><lastmod>2025-11-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/tsup-options/</loc><lastmod>2025-11-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/turborepo-options/</loc><lastmod>2025-11-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/%E9%9D%A2%E8%AF%95/</loc><lastmod>2025-11-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/miao-ma-front/</loc><lastmod>2025-11-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/eslint-prettier-husky-commitlint-editorconfig-stylelint-guide/</loc><lastmod>2025-11-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/eslint-options/</loc><lastmod>2025-11-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/prettier-options/</loc><lastmod>2025-11-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/stylelint-options/</loc><lastmod>2025-11-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-3-vite-sentry-monitoring-configuration-guide/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/css-functions/</loc><lastmod>2025-10-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/uniapp-system-info/</loc><lastmod>2025-10-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/css-specificity/</loc><lastmod>2025-10-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/vite/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/22-conclusion/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E8%BF%9B%E9%98%B6%E4%B8%8E%E5%BC%80%E6%BA%90%E6%89%A9%E5%B1%95/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E7%BB%84%E4%BB%B6%E5%BA%93/</loc><lastmod>2025-10-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/21-typescript-types-export/</loc><lastmod>2025-10-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/mcp-config/</loc><lastmod>2025-10-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/mcp-site/</loc><lastmod>2025-10-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/npm/</loc><lastmod>2025-10-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/open-source/</loc><lastmod>2025-10-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/20-npm-init-template/</loc><lastmod>2025-10-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/cli/</loc><lastmod>2025-10-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/css-computed-style/</loc><lastmod>2025-10-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/19-cli-tool-devx/</loc><lastmod>2025-10-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/css-block/</loc><lastmod>2025-10-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%A4%BE%E5%8C%BA%E8%BF%90%E8%90%A5%E4%B8%8E%E8%B4%A8%E9%87%8F/</loc><lastmod>2025-10-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/ai-tools/</loc><lastmod>2025-10-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/browser-rendering-principles/</loc><lastmod>2025-10-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/18-github-project-management/</loc><lastmod>2025-10-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/17-manage-pull-requests/</loc><lastmod>2025-10-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/event-loop/</loc><lastmod>2025-10-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/testing/</loc><lastmod>2025-10-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/16-coverage-report/</loc><lastmod>2025-10-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/documentation/</loc><lastmod>2025-10-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/15-write-readme/</loc><lastmod>2025-10-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/uniapp-intranet-traversal/</loc><lastmod>2025-10-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/stream-process/</loc><lastmod>2025-10-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/deployment/</loc><lastmod>2025-10-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/vercel/</loc><lastmod>2025-10-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%8F%91%E5%B8%83%E4%B8%8E%E7%94%9F%E6%80%81%E5%BB%BA%E8%AE%BE/</loc><lastmod>2025-10-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/14-deploy-docs-vercel/</loc><lastmod>2025-10-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/tree-shaking/</loc><lastmod>2025-10-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/13-tree-shaking-on-demand/</loc><lastmod>2025-10-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/monorepo/</loc><lastmod>2025-10-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/12-monorepo-ecosystem/</loc><lastmod>2025-10-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/cursor-config/</loc><lastmod>2025-10-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/semver/</loc><lastmod>2025-10-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/11-semver-npm-publish/</loc><lastmod>2025-10-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/express-cloud-server-deployment-guide/</loc><lastmod>2025-10-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/10-open-source-license/</loc><lastmod>2025-10-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/ci-cd/</loc><lastmod>2025-10-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/09-ci-github-actions/</loc><lastmod>2025-10-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%B7%A5%E7%A8%8B%E5%8C%96%E9%85%8D%E7%BD%AE/</loc><lastmod>2025-10-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/esm/</loc><lastmod>2025-10-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/08-package-module-compat/</loc><lastmod>2025-10-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/eslint/</loc><lastmod>2025-10-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/husky/</loc><lastmod>2025-10-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/lint/</loc><lastmod>2025-10-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/prettier/</loc><lastmod>2025-10-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/07-lint-and-format/</loc><lastmod>2025-10-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/vitest/</loc><lastmod>2025-10-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/06-unit-test-vitest/</loc><lastmod>2025-10-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/jest/</loc><lastmod>2025-10-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/05-unit-test-jest/</loc><lastmod>2025-10-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/04-docs-with-demo/</loc><lastmod>2025-10-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%BB%84%E4%BB%B6%E5%BA%93%E5%9F%BA%E7%A1%80%E6%90%AD%E5%BB%BA/</loc><lastmod>2025-10-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/css/</loc><lastmod>2025-10-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/03-unocss-atomic-css/</loc><lastmod>2025-10-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/unocss/</loc><lastmod>2025-10-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/02-mvp-component-library/</loc><lastmod>2025-10-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite-component-library/01-opening/</loc><lastmod>2025-10-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-design-and-implementation/</loc><lastmod>2025-09-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/blog-migration/</loc><lastmod>2025-09-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/component-dev-environment/</loc><lastmod>2025-09-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/</loc><lastmod>2025-09-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/vue3/</loc><lastmod>2025-09-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vue3-%E7%89%B9%E6%AE%8A%E5%85%83%E7%B4%A0%E4%B8%8E%E6%8C%87%E4%BB%A4/</loc><lastmod>2025-09-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/22-conclusion/</loc><lastmod>2025-09-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/slot/</loc><lastmod>2025-09-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/21-directive-slot/</loc><lastmod>2025-09-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/v-model/</loc><lastmod>2025-09-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/20-directive-v-model/</loc><lastmod>2025-09-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/suspense/</loc><lastmod>2025-09-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/19-builtin-suspense/</loc><lastmod>2025-09-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vue3-%E5%86%85%E7%BD%AE%E7%BB%84%E4%BB%B6/</loc><lastmod>2025-09-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/teleport/</loc><lastmod>2025-09-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/18-builtin-teleport/</loc><lastmod>2025-09-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/keepalive/</loc><lastmod>2025-09-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/17-builtin-keepalive/</loc><lastmod>2025-09-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/interview-questions/</loc><lastmod>2025-09-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/transition/</loc><lastmod>2025-09-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/16-builtin-transition/</loc><lastmod>2025-09-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vue3-%E7%BC%96%E8%AF%91%E5%99%A8/</loc><lastmod>2025-09-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/15-compiler-optimization/</loc><lastmod>2025-09-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/ast/</loc><lastmod>2025-09-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/14-compiler-jsast-to-render/</loc><lastmod>2025-09-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/render-function/</loc><lastmod>2025-09-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/13-compiler-ast-to-jsast/</loc><lastmod>2025-09-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/12-compiler-template-to-ast/</loc><lastmod>2025-09-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/provide-inject/</loc><lastmod>2025-09-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vue3-%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86/</loc><lastmod>2025-09-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/11-reactivity-provide-inject/</loc><lastmod>2025-09-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/computed/</loc><lastmod>2025-09-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/10-reactivity-computed/</loc><lastmod>2025-09-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/watch/</loc><lastmod>2025-09-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/09-reactivity-watch/</loc><lastmod>2025-09-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/nexttick/</loc><lastmod>2025-09-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/08-reactivity-nexttick/</loc><lastmod>2025-09-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/effect/</loc><lastmod>2025-09-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/07-reactivity-effect/</loc><lastmod>2025-09-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/proxy/</loc><lastmod>2025-09-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/reactivity/</loc><lastmod>2025-09-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/06-reactivity-proxy/</loc><lastmod>2025-09-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/diff/</loc><lastmod>2025-09-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vue3-%E6%B8%B2%E6%9F%93%E5%99%A8/</loc><lastmod>2025-09-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/05-renderer-diff-algorithm/</loc><lastmod>2025-09-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/04-renderer-component-update/</loc><lastmod>2025-09-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/03-renderer-data-proxy/</loc><lastmod>2025-09-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/dom/</loc><lastmod>2025-09-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/02-renderer-component-to-dom/</loc><lastmod>2025-09-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vue3/01-opening/</loc><lastmod>2025-09-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/monorepo/</loc><lastmod>2025-08-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/write-resume/</loc><lastmod>2025-08-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/logging-system/</loc><lastmod>2025-08-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/https-support-check/</loc><lastmod>2025-08-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/mongodb-%E4%B8%8E-graphql/</loc><lastmod>2025-07-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/nestjs/</loc><lastmod>2025-07-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/nestjs/</loc><lastmod>2025-07-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/</loc><lastmod>2025-07-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/200-debug-nest-source/</loc><lastmod>2025-07-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/graphql/</loc><lastmod>2025-07-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/199-graphql-prisma-react-todolist/</loc><lastmod>2025-07-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/prisma/</loc><lastmod>2025-07-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/198-nest-graphql-crud/</loc><lastmod>2025-07-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/197-graphql-quickstart/</loc><lastmod>2025-07-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/mongodb/</loc><lastmod>2025-07-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/mongoose/</loc><lastmod>2025-07-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/196-mongoose-mongodb/</loc><lastmod>2025-07-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/195-mongodb-quickstart/</loc><lastmod>2025-07-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/websocket-%E4%B8%8E%E8%81%8A%E5%A4%A9%E5%AE%A4/</loc><lastmod>2025-07-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/194-chat-room-summary/</loc><lastmod>2025-07-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/193-chat-room-full-test/</loc><lastmod>2025-07-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/192-chat-room-favorites/</loc><lastmod>2025-07-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/191-chat-room-emoji-file/</loc><lastmod>2025-07-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/190-chat-room-group-chat/</loc><lastmod>2025-07-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/189-chat-room-one-to-one/</loc><lastmod>2025-07-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/188-chat-room-chat-frontend/</loc><lastmod>2025-07-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/187-chat-room-chat-backend/</loc><lastmod>2025-07-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/186-chat-room-friend-notification/</loc><lastmod>2025-07-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/185-chat-room-friend-group-list/</loc><lastmod>2025-07-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/184-chat-room-avatar-upload/</loc><lastmod>2025-07-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/183-chat-room-password-info-page/</loc><lastmod>2025-07-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/182-chat-room-login-register-page/</loc><lastmod>2025-07-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/181-chat-room-create-join/</loc><lastmod>2025-06-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/180-chat-room-friend-list/</loc><lastmod>2025-06-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/28-vite3-updates/</loc><lastmod>2025-06-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vite-%E6%89%8B%E5%86%99%E5%AE%9E%E7%8E%B0/</loc><lastmod>2025-06-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/179-chat-room-password-info/</loc><lastmod>2025-06-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/</loc><lastmod>2025-06-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/bundler/</loc><lastmod>2025-06-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/178-chat-room-user-login/</loc><lastmod>2025-06-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/27-handwrite-bundler-treeshaking/</loc><lastmod>2025-06-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/177-chat-room-user-register/</loc><lastmod>2025-06-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/26-handwrite-bundler-ast/</loc><lastmod>2025-06-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/176-chat-room-tech-design/</loc><lastmod>2025-06-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/25-handwrite-vite-part2/</loc><lastmod>2025-06-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/175-chat-room-requirements/</loc><lastmod>2025-06-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/24-handwrite-vite-part1/</loc><lastmod>2025-06-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/hmr/</loc><lastmod>2025-06-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vite-%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/</loc><lastmod>2025-06-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/websocket/</loc><lastmod>2025-06-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/23-hmr-implementation/</loc><lastmod>2025-06-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/174-socketio-room-chat/</loc><lastmod>2025-06-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/173-nest-websocket/</loc><lastmod>2025-06-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/22-plugin-pipeline/</loc><lastmod>2025-06-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/esbuild/</loc><lastmod>2025-06-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/21-esbuild-pre-bundling/</loc><lastmod>2025-06-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/172-handwrite-websocket/</loc><lastmod>2025-06-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E8%80%83%E8%AF%95%E7%B3%BB%E7%BB%9F/</loc><lastmod>2025-06-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/171-exam-system-summary/</loc><lastmod>2025-06-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/20-config-resolution/</loc><lastmod>2025-06-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/performance/</loc><lastmod>2025-06-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vite-%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8/</loc><lastmod>2025-06-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/170-exam-system-full-test/</loc><lastmod>2025-06-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/19-performance-optimization/</loc><lastmod>2025-06-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/18-esm-advanced/</loc><lastmod>2025-06-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/microservice/</loc><lastmod>2025-06-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/public-api/</loc><lastmod>2025-06-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/169-exam-system-analysis-ranking/</loc><lastmod>2025-06-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/168-exam-system-auto-grading/</loc><lastmod>2025-06-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/17-module-federation/</loc><lastmod>2025-06-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/167-exam-system-answer-page/</loc><lastmod>2025-06-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/16-ssr-prerender/</loc><lastmod>2025-06-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/166-exam-system-answer-service/</loc><lastmod>2025-06-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/15-syntax-polyfill/</loc><lastmod>2025-06-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/code-splitting/</loc><lastmod>2025-06-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/14-code-splitting/</loc><lastmod>2025-06-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/165-exam-system-paper-preview/</loc><lastmod>2025-06-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/13-hmr-api-and-principle/</loc><lastmod>2025-06-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/164-exam-system-paper-editor/</loc><lastmod>2025-06-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/plugin/</loc><lastmod>2025-06-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/163-exam-system-paper-recycle/</loc><lastmod>2025-06-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/12-vite-plugin-development/</loc><lastmod>2025-06-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/rollup/</loc><lastmod>2025-06-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vite-%E5%8F%8C%E5%BC%95%E6%93%8E/</loc><lastmod>2025-06-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/162-exam-system-paper-list/</loc><lastmod>2025-06-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/11-rollup-plugin-mechanism/</loc><lastmod>2025-06-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/10-rollup-basics/</loc><lastmod>2025-06-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/161-exam-system-login-page/</loc><lastmod>2025-06-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/09-esbuild-in-practice/</loc><lastmod>2025-06-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/160-exam-system-exam-service/</loc><lastmod>2025-06-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/08-dual-engine-architecture/</loc><lastmod>2025-06-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/159-exam-system-login-password/</loc><lastmod>2025-06-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/pre-bundling/</loc><lastmod>2025-06-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/vite-%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8/</loc><lastmod>2025-06-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/158-exam-system-user-register/</loc><lastmod>2025-06-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/07-dependency-pre-bundling/</loc><lastmod>2025-06-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/static-assets/</loc><lastmod>2025-06-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/157-exam-system-microservice-lib/</loc><lastmod>2025-06-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/06-static-assets/</loc><lastmod>2025-06-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/156-exam-system-tech-design/</loc><lastmod>2025-06-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/05-lint-toolchain/</loc><lastmod>2025-06-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/155-exam-system-requirements/</loc><lastmod>2025-06-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/04-css-engineering/</loc><lastmod>2025-06-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/redis/</loc><lastmod>2025-06-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/redis-%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8/</loc><lastmod>2025-06-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/154-redis-leaderboard/</loc><lastmod>2025-06-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/03-quick-start/</loc><lastmod>2025-06-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/153-redis-follow-system/</loc><lastmod>2025-06-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/02-esm-module-standard/</loc><lastmod>2025-06-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/rabbitmq/</loc><lastmod>2025-06-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/vite/01-opening/</loc><lastmod>2025-06-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/152-why-rabbitmq/</loc><lastmod>2025-06-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/prisma/</loc><lastmod>2025-05-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/151-nest-prisma-integration/</loc><lastmod>2025-05-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/150-prisma-client-multi-table/</loc><lastmod>2025-05-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/149-prisma-client-single-table/</loc><lastmod>2025-05-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/148-prisma-schema-syntax/</loc><lastmod>2025-05-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/147-prisma-all-commands/</loc><lastmod>2025-05-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/146-prisma-quickstart/</loc><lastmod>2025-05-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/grpc/</loc><lastmod>2025-05-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/145-grpc-cross-language/</loc><lastmod>2025-05-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%BE%AE%E6%9C%8D%E5%8A%A1/</loc><lastmod>2025-05-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/nacos/</loc><lastmod>2025-05-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/144-nacos-config-registry/</loc><lastmod>2025-05-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/etcd/</loc><lastmod>2025-05-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/143-nest-etcd-integration/</loc><lastmod>2025-05-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/142-etcd-config-registry/</loc><lastmod>2025-05-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/141-nest-monorepo-library/</loc><lastmod>2025-05-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/140-nest-microservice/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%B7%A5%E7%A8%8B%E5%8C%96%E4%B8%8E%E6%B5%81%E7%A8%8B/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E4%BD%93%E9%AA%8C%E4%BC%98%E5%8C%96/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E4%BD%93%E9%AA%8C%E4%BC%98%E5%8C%96/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/20-workflow-improvement/</loc><lastmod>2025-05-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/automation/</loc><lastmod>2025-05-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E4%BC%9A%E8%AE%AE%E5%AE%A4%E9%A2%84%E8%AE%A2%E7%B3%BB%E7%BB%9F/</loc><lastmod>2025-05-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/139-meeting-room-summary/</loc><lastmod>2025-05-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/19-frontend-automation/</loc><lastmod>2025-05-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/18-css-solutions/</loc><lastmod>2025-05-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/138-meeting-room-full-test/</loc><lastmod>2025-05-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/build-tools/</loc><lastmod>2025-05-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/17-modern-build-tools/</loc><lastmod>2025-05-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/137-meeting-room-frontend-optimize/</loc><lastmod>2025-05-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/lazy-load/</loc><lastmod>2025-05-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/winston/</loc><lastmod>2025-05-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/136-meeting-room-winston/</loc><lastmod>2025-05-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%9B%BE%E7%89%87%E4%B8%8E%E6%87%92%E5%8A%A0%E8%BD%BD/</loc><lastmod>2025-05-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/16-lazy-loading-library/</loc><lastmod>2025-05-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/135-meeting-room-backend-optimize/</loc><lastmod>2025-05-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/15-resource-lazy-loading/</loc><lastmod>2025-05-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/14-gif-optimization/</loc><lastmod>2025-05-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/image/</loc><lastmod>2025-05-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/134-meeting-room-google-login-frontend/</loc><lastmod>2025-05-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/133-meeting-room-google-login-backend/</loc><lastmod>2025-05-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/13-adaptive-image-format/</loc><lastmod>2025-05-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/oss/</loc><lastmod>2025-05-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/ssr/</loc><lastmod>2025-05-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/132-meeting-room-oss-upload/</loc><lastmod>2025-05-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/12-ssr-advanced/</loc><lastmod>2025-05-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E6%B8%B2%E6%9F%93%E4%B8%8Essr/</loc><lastmod>2025-05-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/migration/</loc><lastmod>2025-05-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/131-meeting-room-migration/</loc><lastmod>2025-05-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/11-ssr-fcp-optimization/</loc><lastmod>2025-05-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/10-code-split-example/</loc><lastmod>2025-05-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E4%BB%A3%E7%A0%81%E4%BC%98%E5%8C%96/</loc><lastmod>2025-05-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/130-meeting-room-deploy-frontend/</loc><lastmod>2025-05-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/09-granular-code-split/</loc><lastmod>2025-05-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/129-meeting-room-deploy-backend/</loc><lastmod>2025-05-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/08-lazy-loading-issues/</loc><lastmod>2025-05-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/128-meeting-room-stats-frontend/</loc><lastmod>2025-05-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/07-module-lazy-loading/</loc><lastmod>2025-05-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/127-meeting-room-stats-backend/</loc><lastmod>2025-05-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/cdn/</loc><lastmod>2025-05-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/06-cdn-verification/</loc><lastmod>2025-05-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/126-meeting-room-booking-user-frontend/</loc><lastmod>2025-05-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E8%B5%84%E6%BA%90%E5%8A%A0%E8%BD%BD%E4%BC%98%E5%8C%96/</loc><lastmod>2025-05-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/05-cdn-traffic-saving/</loc><lastmod>2025-05-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/125-meeting-room-booking-admin-frontend/</loc><lastmod>2025-05-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/04-resource-priority-hints/</loc><lastmod>2025-05-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/resource-hints/</loc><lastmod>2025-05-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/124-meeting-room-booking-backend/</loc><lastmod>2025-05-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/performance-api/</loc><lastmod>2025-05-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/03-performance-api/</loc><lastmod>2025-05-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/123-meeting-room-room-user-frontend/</loc><lastmod>2025-05-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E6%95%B0%E6%8D%AE%E9%A9%B1%E5%8A%A8%E4%BC%98%E5%8C%96/</loc><lastmod>2025-05-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/122-meeting-room-room-admin-frontend/</loc><lastmod>2025-05-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/02-user-experience-data/</loc><lastmod>2025-05-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/121-meeting-room-room-backend/</loc><lastmod>2025-05-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/frontend-experience/01-data-driven-optimization/</loc><lastmod>2025-05-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/120-meeting-room-admin-info-page/</loc><lastmod>2025-04-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/interview/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/type-gymnastics/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/typescript/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/119-meeting-room-admin-user-list/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/29-bytedance-interview/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%B1%BB%E5%9E%8B%E4%BD%93%E6%93%8D%E5%8A%A0%E9%A4%90/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/streaming-chart/</loc><lastmod>2025-04-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/jsdoc/</loc><lastmod>2025-04-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/118-meeting-room-avatar-upload/</loc><lastmod>2025-04-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/28-jsdoc-vs-typescript/</loc><lastmod>2025-04-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/sse-stream-solution/</loc><lastmod>2025-04-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/satisfies/</loc><lastmod>2025-04-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/117-meeting-room-user-info-page/</loc><lastmod>2025-04-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/27-satisfies-keyword/</loc><lastmod>2025-04-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/116-meeting-room-user-login-page/</loc><lastmod>2025-04-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/26-real-type-programming-cases/</loc><lastmod>2025-04-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/swagger/</loc><lastmod>2025-04-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/115-meeting-room-swagger/</loc><lastmod>2025-04-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/25-three-layer-interview/</loc><lastmod>2025-04-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/project-reference/</loc><lastmod>2025-04-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/tsc/</loc><lastmod>2025-04-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/114-meeting-room-user-list/</loc><lastmod>2025-04-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/24-project-reference/</loc><lastmod>2025-04-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/interceptor/</loc><lastmod>2025-04-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/113-meeting-room-user-interceptor/</loc><lastmod>2025-04-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/23-type-sources-and-modules/</loc><lastmod>2025-04-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/112-meeting-room-auth/</loc><lastmod>2025-04-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%B1%BB%E5%9E%8B%E4%BD%93%E6%93%8D%E5%8E%9F%E7%90%86/</loc><lastmod>2025-04-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/22-conclusion/</loc><lastmod>2025-04-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/111-meeting-room-user-register/</loc><lastmod>2025-04-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/21-special-cases/</loc><lastmod>2025-04-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/110-meeting-room-tech-design/</loc><lastmod>2025-04-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/20-read-typescript-source/</loc><lastmod>2025-04-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/109-meeting-room-requirements/</loc><lastmod>2025-04-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/19-simple-type-checker/</loc><lastmod>2025-04-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/babel/</loc><lastmod>2025-04-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/i18n/</loc><lastmod>2025-04-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/108-nest-i18n/</loc><lastmod>2025-04-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%AE%9E%E6%88%98%E6%8A%80%E5%B7%A7/</loc><lastmod>2025-04-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/18-tsc-vs-babel/</loc><lastmod>2025-04-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/contravariance/</loc><lastmod>2025-04-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/covariance/</loc><lastmod>2025-04-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/107-server-cpu-memory-disk/</loc><lastmod>2025-04-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/17-variance/</loc><lastmod>2025-04-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/infer/</loc><lastmod>2025-04-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%B1%BB%E5%9E%8B%E7%BC%96%E7%A8%8B%E5%AE%9E%E6%88%98/</loc><lastmod>2025-04-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/106-generate-ppt/</loc><lastmod>2025-04-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/16-infer-extends/</loc><lastmod>2025-04-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/excel/</loc><lastmod>2025-04-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/15-practice-two/</loc><lastmod>2025-04-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/105-excel-import-export/</loc><lastmod>2025-04-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/104-nest-repl-mode/</loc><lastmod>2025-04-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/repl/</loc><lastmod>2025-04-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/14-practice-one/</loc><lastmod>2025-04-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/103-qr-code-login/</loc><lastmod>2025-04-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/13-real-world-cases/</loc><lastmod>2025-04-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/advanced-types/</loc><lastmod>2025-04-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/puppeteer/</loc><lastmod>2025-04-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/102-puppeteer-crawler/</loc><lastmod>2025-04-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/12-builtin-advanced-types/</loc><lastmod>2025-04-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/101-stream-download/</loc><lastmod>2025-04-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%B1%BB%E5%9E%8B%E4%BD%93%E6%93%8D%E5%85%AD%E5%A4%A7%E5%A5%97%E8%B7%AF/</loc><lastmod>2025-04-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/11-type-gymnastics-rhyme/</loc><lastmod>2025-04-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/sharp/</loc><lastmod>2025-04-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/100-sharp-gif-compress/</loc><lastmod>2025-04-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/10-special-features/</loc><lastmod>2025-04-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/minio/</loc><lastmod>2025-04-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/union-type/</loc><lastmod>2025-04-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/099-direct-upload-minio/</loc><lastmod>2025-04-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/09-union-distribution/</loc><lastmod>2025-04-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/08-array-length-counting/</loc><lastmod>2025-04-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/098-minio-oss/</loc><lastmod>2025-04-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/097-server-sent-event/</loc><lastmod>2025-04-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/recursion/</loc><lastmod>2025-04-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/07-recursion/</loc><lastmod>2025-04-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/096-short-url-service/</loc><lastmod>2025-04-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/06-reconstruct/</loc><lastmod>2025-04-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/pattern-matching/</loc><lastmod>2025-04-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/095-request-logging/</loc><lastmod>2025-04-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/05-pattern-matching/</loc><lastmod>2025-04-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/094-weather-query-service/</loc><lastmod>2025-04-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/04-type-system-and-operations/</loc><lastmod>2025-04-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%B1%BB%E5%9E%8B%E4%BD%93%E6%93%8D%E5%85%A5%E9%97%A8/</loc><lastmod>2025-04-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/093-nest-event-communication/</loc><lastmod>2025-04-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/03-why-called-type-gymnastics/</loc><lastmod>2025-04-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/cron/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/092-nest-cron-jobs/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/ts-%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/33-interview-typescript/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/02-why-typescript-is-popular/</loc><lastmod>2025-04-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/091-cron-redis-view-count/</loc><lastmod>2025-04-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/32-conclusion/</loc><lastmod>2025-04-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/ts-type-gymnastics/01-how-to-read/</loc><lastmod>2025-04-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/090-email-code-login/</loc><lastmod>2025-03-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/31-typescript-ast/</loc><lastmod>2025-03-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/email/</loc><lastmod>2025-03-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/089-node-send-email/</loc><lastmod>2025-03-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/30-prisma-nestjs-project/</loc><lastmod>2025-03-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/29-prisma-nestjs-prerequisites/</loc><lastmod>2025-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/088-compodoc/</loc><lastmod>2025-03-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/ts-%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</loc><lastmod>2025-03-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/28-tsconfig-part2/</loc><lastmod>2025-03-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/087-custom-serialization-interceptor/</loc><lastmod>2025-03-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/27-tsconfig-part1/</loc><lastmod>2025-03-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/086-serialization-entity/</loc><lastmod>2025-03-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/085-class-validator-decorators/</loc><lastmod>2025-03-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/dependency-injection/</loc><lastmod>2025-03-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/ioc/</loc><lastmod>2025-03-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/26-ioc-and-dependency-injection/</loc><lastmod>2025-03-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/decorator/</loc><lastmod>2025-03-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/reflect-metadata/</loc><lastmod>2025-03-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/084-flexible-dto/</loc><lastmod>2025-03-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/25-decorators-and-reflect-metadata/</loc><lastmod>2025-03-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/ecmascript/</loc><lastmod>2025-03-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/24-typescript-and-ecmascript/</loc><lastmod>2025-03-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/083-swagger-api-docs/</loc><lastmod>2025-03-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/082-redis-nearby-service/</loc><lastmod>2025-03-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/23-typescript-toolchain/</loc><lastmod>2025-03-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/session/</loc><lastmod>2025-03-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/081-redis-distributed-session/</loc><lastmod>2025-03-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/22-eslint-for-typescript/</loc><lastmod>2025-03-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/nginx/</loc><lastmod>2025-03-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/nginx/</loc><lastmod>2025-03-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/080-nginx-gray-release/</loc><lastmod>2025-03-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/21-react-with-typescript/</loc><lastmod>2025-03-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/ts-%E8%BF%9B%E9%98%B6%E7%89%B9%E6%80%A7/</loc><lastmod>2025-03-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/20-type-declarations-and-directives/</loc><lastmod>2025-03-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/079-nginx-core-usage/</loc><lastmod>2025-03-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/docker/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/docker-%E8%BF%9B%E9%98%B6/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/078-docker-restart-vs-pm2/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/pm2/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/template-literal/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/utility-types/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/19-template-string-tool-types/</loc><lastmod>2025-03-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/077-docker-bridge-network/</loc><lastmod>2025-03-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/18-template-literal-types/</loc><lastmod>2025-03-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/docker-compose/</loc><lastmod>2025-03-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/ts-%E7%B1%BB%E5%9E%8B%E7%BC%96%E7%A8%8B/</loc><lastmod>2025-03-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/17-advanced-utility-types/</loc><lastmod>2025-03-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/076-why-docker-compose/</loc><lastmod>2025-03-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/passport/</loc><lastmod>2025-03-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/075-passport-google-login/</loc><lastmod>2025-03-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/16-type-programming-meaning/</loc><lastmod>2025-03-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E8%AE%A4%E8%AF%81%E4%B8%8E%E6%9D%83%E9%99%90/</loc><lastmod>2025-03-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/074-passport-github-login/</loc><lastmod>2025-03-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/15-covariance-and-contravariance/</loc><lastmod>2025-03-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/14-contextual-types/</loc><lastmod>2025-03-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/073-passport-auth/</loc><lastmod>2025-03-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/072-single-token-refresh/</loc><lastmod>2025-03-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/13-builtin-utility-types/</loc><lastmod>2025-03-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/conditional-type/</loc><lastmod>2025-03-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/071-access-refresh-token/</loc><lastmod>2025-03-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/12-conditional-types-and-infer/</loc><lastmod>2025-03-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/rbac/</loc><lastmod>2025-03-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/070-rbac-permission/</loc><lastmod>2025-03-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/11-type-hierarchy/</loc><lastmod>2025-03-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/acl/</loc><lastmod>2025-03-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/type-compatibility/</loc><lastmod>2025-03-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/069-acl-permission/</loc><lastmod>2025-03-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/10-structural-type-system/</loc><lastmod>2025-03-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/generics/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/jwt/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/mysql/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/068-mysql-typeorm-jwt-login/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/typeorm/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/09-generics/</loc><lastmod>2025-03-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/067-nest-session-jwt/</loc><lastmod>2025-03-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/08-type-tools-part2/</loc><lastmod>2025-03-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/07-type-tools-part1/</loc><lastmod>2025-03-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/066-jwt-vs-session/</loc><lastmod>2025-03-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/any-unknown-never/</loc><lastmod>2025-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/ts-%E5%9F%BA%E7%A1%80%E7%B1%BB%E5%9E%8B/</loc><lastmod>2025-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/type-assertion/</loc><lastmod>2025-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/06-any-unknown-never/</loc><lastmod>2025-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/065-why-not-cache-manager/</loc><lastmod>2025-03-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/class/</loc><lastmod>2025-03-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/function-overload/</loc><lastmod>2025-03-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/05-function-and-class/</loc><lastmod>2025-03-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/064-nest-redis/</loc><lastmod>2025-03-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/enum/</loc><lastmod>2025-03-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/063-redis-quickstart/</loc><lastmod>2025-03-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/04-literal-types-and-enums/</loc><lastmod>2025-03-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/03-primitive-and-object-types/</loc><lastmod>2025-03-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/062-dynamic-config/</loc><lastmod>2025-03-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/mysql-%E4%B8%8E-typeorm/</loc><lastmod>2025-03-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/061-nest-typeorm-migration/</loc><lastmod>2025-03-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/02-dev-environment/</loc><lastmod>2025-03-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/060-typeorm-migration-why/</loc><lastmod>2025-03-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/typescript/01-opening/</loc><lastmod>2025-03-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/059-typeorm-nested-relations/</loc><lastmod>2025-02-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/058-nest-typeorm-integration/</loc><lastmod>2025-02-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/057-typeorm-many-to-many/</loc><lastmod>2025-02-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/056-typeorm-one-to-many/</loc><lastmod>2025-02-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/055-typeorm-one-to-one/</loc><lastmod>2025-02-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/054-typeorm-quickstart/</loc><lastmod>2025-02-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/053-node-mysql-two-ways/</loc><lastmod>2025-02-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/052-mysql-view-procedure-function/</loc><lastmod>2025-02-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/051-mysql-transaction-isolation/</loc><lastmod>2025-02-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/050-sql-practice/</loc><lastmod>2025-02-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/049-subquery-and-exists/</loc><lastmod>2025-02-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/048-one-to-many-many-to-many/</loc><lastmod>2025-02-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/047-one-to-one-join-cascade/</loc><lastmod>2025-02-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/046-sql-syntax-and-functions/</loc><lastmod>2025-02-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%BC%80%E7%AF%87%E4%B8%8E%E7%BB%93%E8%AF%AD/</loc><lastmod>2025-02-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/</loc><lastmod>2025-02-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/15-summary/</loc><lastmod>2025-02-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/categories/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</loc><lastmod>2025-02-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/045-mysql-quickstart/</loc><lastmod>2025-02-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E6%80%A7%E8%83%BD%E7%9B%91%E6%B5%8B/</loc><lastmod>2025-02-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/14-performance-monitoring/</loc><lastmod>2025-02-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/debounce/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/throttle/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E6%97%A5%E5%BF%97%E4%B8%8E%E9%83%A8%E7%BD%B2/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/044-why-pm2/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%BA%94%E7%94%A8%E5%B1%82%E4%BC%98%E5%8C%96/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/13-throttle-debounce/</loc><lastmod>2025-02-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/043-how-docker-works/</loc><lastmod>2025-02-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/12-lazy-load/</loc><lastmod>2025-02-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/reflow/</loc><lastmod>2025-02-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93%E4%BC%98%E5%8C%96/</loc><lastmod>2025-02-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/042-dockerfile-tips/</loc><lastmod>2025-02-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/11-reflow-repaint/</loc><lastmod>2025-02-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/event-loop/</loc><lastmod>2025-02-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/041-nest-dockerfile/</loc><lastmod>2025-02-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/10-event-loop-async/</loc><lastmod>2025-02-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/040-first-dockerfile/</loc><lastmod>2025-02-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/09-dom-optimization/</loc><lastmod>2025-02-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/039-docker-desktop-learning/</loc><lastmod>2025-02-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/08-browser-mechanism/</loc><lastmod>2025-02-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/038-nest-winston-integration/</loc><lastmod>2025-02-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/07-server-side-rendering/</loc><lastmod>2025-02-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/cache/</loc><lastmod>2025-02-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/06-cdn-cache/</loc><lastmod>2025-02-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E7%BD%91%E7%BB%9C%E4%B8%8E%E5%AD%98%E5%82%A8%E4%BC%98%E5%8C%96/</loc><lastmod>2025-02-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/037-why-winston/</loc><lastmod>2025-02-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/cookie/</loc><lastmod>2025-02-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/036-nest-logging/</loc><lastmod>2025-02-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/storage/</loc><lastmod>2025-02-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/05-local-storage/</loc><lastmod>2025-02-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/04-browser-cache/</loc><lastmod>2025-02-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/035-oss-upload/</loc><lastmod>2025-02-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/034-large-file-upload/</loc><lastmod>2025-02-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/03-image-optimization/</loc><lastmod>2025-02-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/gzip/</loc><lastmod>2025-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/webpack/</loc><lastmod>2025-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/%E5%9B%BE%E4%B9%A6%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/</loc><lastmod>2025-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/033-book-system-summary/</loc><lastmod>2025-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/02-webpack-gzip/</loc><lastmod>2025-02-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/performance/01-opening/</loc><lastmod>2025-02-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/032-book-system-book-crud/</loc><lastmod>2025-02-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/031-book-system-book-search/</loc><lastmod>2025-01-31T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/030-book-system-user-frontend/</loc><lastmod>2025-01-30T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/029-book-system-book-backend/</loc><lastmod>2025-01-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/028-book-system-user-backend/</loc><lastmod>2025-01-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/027-book-system-requirements/</loc><lastmod>2025-01-27T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/multer/</loc><lastmod>2025-01-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/026-nest-multer-upload/</loc><lastmod>2025-01-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/series/nestjs-%E5%9F%BA%E7%A1%80/</loc><lastmod>2025-01-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/025-express-multer-upload/</loc><lastmod>2025-01-25T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/024-api-versioning/</loc><lastmod>2025-01-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/023-nest-core-concepts/</loc><lastmod>2025-01-23T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/022-custom-exception-filter/</loc><lastmod>2025-01-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/pipe/</loc><lastmod>2025-01-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/021-validation-pipe/</loc><lastmod>2025-01-21T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/020-built-in-and-custom-pipe/</loc><lastmod>2025-01-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/rxjs/</loc><lastmod>2025-01-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/019-rxjs-and-interceptor/</loc><lastmod>2025-01-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/middleware/</loc><lastmod>2025-01-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/018-nest-middleware/</loc><lastmod>2025-01-18T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/017-nest-express-fastify/</loc><lastmod>2025-01-17T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/016-dynamic-module/</loc><lastmod>2025-01-16T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/015-circular-dependency/</loc><lastmod>2025-01-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/014-execution-context/</loc><lastmod>2025-01-14T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/013-metadata-and-reflector/</loc><lastmod>2025-01-13T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/012-custom-decorators/</loc><lastmod>2025-01-12T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/011-all-nest-decorators/</loc><lastmod>2025-01-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/010-aop-architecture/</loc><lastmod>2025-01-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/009-global-module-lifecycle/</loc><lastmod>2025-01-09T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/008-multiple-providers/</loc><lastmod>2025-01-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/007-debug-nest-project/</loc><lastmod>2025-01-07T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/006-ioc-pain-points/</loc><lastmod>2025-01-06T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/005-http-data-transfer/</loc><lastmod>2025-01-05T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/004-nest-cli/</loc><lastmod>2025-01-04T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/003-nest-basics/</loc><lastmod>2025-01-03T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/002-five-reasons-to-learn-nest/</loc><lastmod>2025-01-02T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/bookmarks/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/bug/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/bugs/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E5%B7%A5%E5%85%B7/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/nestjs/001-introduction/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E5%89%8D%E7%AB%AF/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/tags/%E8%B5%84%E6%BA%90/</loc><lastmod>2025-01-01T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/build-server-side-with-express-ts-sequelize/</loc><lastmod>2024-11-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/deploy-express-project-automatically-with-vercel/</loc><lastmod>2024-09-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/vue-common-apis/</loc><lastmod>2024-09-08T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/electron-vue3-remote-printing-project/</loc><lastmod>2024-08-19T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/common-code-snippets/</loc><lastmod>2024-07-29T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/react-quick-start/</loc><lastmod>2024-07-28T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/git/</loc><lastmod>2024-07-26T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/custom-block-and-code/</loc><lastmod>2024-07-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/sharp-install-failed/</loc><lastmod>2024-07-15T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/git-tortoisegit/</loc><lastmod>2024-05-24T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/deploy-vitepress-automatically-with-netlify/</loc><lastmod>2024-05-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/picgo-tencent-cos-typora-setup-image-hosting/</loc><lastmod>2024-05-10T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/garbage-collection/</loc><lastmod>2024-01-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/package-manager/</loc><lastmod>2023-12-20T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/module/</loc><lastmod>2023-12-11T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/posts/programming-standard/</loc><lastmod>2023-11-22T00:00:00+00:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/authors/</loc><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://hujiacheng-blog.netlify.app/about/</loc><changefreq>daily</changefreq><priority>0.5</priority></url></urlset>