<![CDATA[藏经阁郭大爷]]> https://blog.workmn.com RSS for Node Sun, 26 Apr 2026 16:13:31 GMT Sun, 26 Apr 2026 16:13:29 GMT <![CDATA[Next.js SSR 性能工程:从请求路径到缓存键设计(命中率/一致性/失效策略)]]> https://blog.workmn.com/post/ssr-performance-engineering-cache-key-invalidation https://blog.workmn.com/post/ssr-performance-engineering-cache-key-invalidation Thu, 29 Aug 2024 22:48:05 GMT <![CDATA[RTL/BiDi 全链路治理清单:从编辑器到 PPTX/PDF 导出,把多语言排版从“靠运气”变成“可控可回归”]]> https://blog.workmn.com/post/rtl-bidi-end-to-end-governance-checklist https://blog.workmn.com/post/rtl-bidi-end-to-end-governance-checklist Mon, 10 Nov 2025 01:30:19 GMT <![CDATA[多语言 SEO 的关键细节:hreflang alternates、x-default、canonical 如何避免重复收录]]> https://blog.workmn.com/post/multilingual-seo-details-hreflang-canonical https://blog.workmn.com/post/multilingual-seo-details-hreflang-canonical Thu, 20 Feb 2025 02:37:44 GMT <![CDATA[Express + Next.js Custom Server 实战:LRU HTML 缓存把 SSR 首屏延迟打下来(含 x-cache 观测)]]> https://blog.workmn.com/post/express-nextjs-custom-server-lru-cache https://blog.workmn.com/post/express-nextjs-custom-server-lru-cache Fri, 13 Sep 2024 00:44:55 GMT <![CDATA[PptxGenJS 导出 PPTX 实战:RTL 对齐、富文本 runs 与列表 bullet,如何把网页幻灯片变成“可编辑文件”]]> https://blog.workmn.com/post/export-pptx-pptxgenjs-rtl-align https://blog.workmn.com/post/export-pptx-pptxgenjs-rtl-align Mon, 13 Oct 2025 13:24:16 GMT <![CDATA[Chakra UI Design Token 从 0 到 1:语义 Token、主题扩展与组件一致性治理]]> https://blog.workmn.com/post/chakra-ui-design-tokens-from-0-to-1 https://blog.workmn.com/post/chakra-ui-design-tokens-from-0-to-1 Thu, 24 Jul 2025 23:31:49 GMT <![CDATA[Design Token 工程:语义化 Token、主题扩展与组件约束,如何让 UI 一致性变成“系统能力”]]> https://blog.workmn.com/post/design-token-engineering-system-capability https://blog.workmn.com/post/design-token-engineering-system-capability Fri, 11 Jul 2025 15:59:59 GMT <![CDATA[多语言 SEO 的系统解:hreflang、x-default、canonical、noindex 如何协同避免重复收录]]> https://blog.workmn.com/post/multilingual-seo-system-hreflang-canonical-noindex https://blog.workmn.com/post/multilingual-seo-system-hreflang-canonical-noindex Wed, 05 Feb 2025 20:31:25 GMT <![CDATA[SEO Meta 组件化:title/description/OG/robots/alternate 的“统一入口”如何减少页面分叉]]> https://blog.workmn.com/post/seo-meta-componentization-unified-entry https://blog.workmn.com/post/seo-meta-componentization-unified-entry Tue, 22 Apr 2025 12:14:19 GMT <![CDATA[我为什么开始用 OpenSpec 做 SDD:把 AI coding 从“聊天驱动”拉回可验证交付]]> https://blog.workmn.com/post/openspec-sdd-ai-coding-workflow https://blog.workmn.com/post/openspec-sdd-ai-coding-workflow Mon, 10 Nov 2025 16:08:07 GMT <![CDATA[Next.js SEO 工具页矩阵:根路径语义化路由 + 兼容历史路由的一套迁移方案]]> https://blog.workmn.com/post/nextjs-seo-tools-matrix-legacy-migration https://blog.workmn.com/post/nextjs-seo-tools-matrix-legacy-migration Mon, 18 Nov 2024 02:15:54 GMT <![CDATA[自定义服务层(BFF)在前端架构里的边界:路由治理、兼容迁移与灰度策略怎么落地]]> https://blog.workmn.com/post/bff-boundaries-routing-migration-gray-release https://blog.workmn.com/post/bff-boundaries-routing-migration-gray-release Wed, 16 Oct 2024 06:36:45 GMT <![CDATA[使用Next.js、TypeORM和Shadcn-UI从零搭建现代化SaaS系统(完成登录和框架)]]> https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-03 https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-03 Fri, 28 Jun 2024 15:08:14 GMT <![CDATA[使用Next.js、TypeORM和Shadcn-UI从零搭建现代化SaaS系统(第二部分-状态管理和接口)]]> https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-02 https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-02 Thu, 27 Jun 2024 16:33:01 GMT <![CDATA[使用Next.js、TypeORM和Shadcn-UI从零搭建现代化SaaS系统(第一部分)]]> https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-01 https://blog.workmn.com/post/nextjs-with-typrorm-sass-startup-01 Fri, 21 Jun 2024 07:20:54 GMT <![CDATA[如何使用Next.js和NestJS实现双Token认证与刷新机制]]> https://blog.workmn.com/post/doubleToken https://blog.workmn.com/post/doubleToken Tue, 04 Jun 2024 09:18:53 GMT <![CDATA[术语解释(全局汇总)]]> https://blog.workmn.com/post/glossary https://blog.workmn.com/post/glossary Sat, 28 Feb 2026 05:09:20 GMT <![CDATA[(从零到一)快速搭建博客网站:使用Next.js、Strapi和Shadcn-UI构建CMS管理后台和SEO友好的前端界面]]> https://blog.workmn.com/post/nextjs-blog-strapi-pnpm-monorepo-course https://blog.workmn.com/post/nextjs-blog-strapi-pnpm-monorepo-course Fri, 31 May 2024 06:30:09 GMT <![CDATA[在Next.js中使用MatchMedia进行多端适配的解决方案]]> https://blog.workmn.com/post/NextJS-MatchMedia-BUG-FIX https://blog.workmn.com/post/NextJS-MatchMedia-BUG-FIX Fri, 28 Jun 2024 10:15:54 GMT <![CDATA[可观测性:正确打开方式(方法论)——用“信号→定位→修复→验证”反馈闭环,让前端工程可持续迭代]]> https://blog.workmn.com/post/observability-for-frontend-feedback-loop https://blog.workmn.com/post/observability-for-frontend-feedback-loop Tue, 16 Dec 2025 03:34:02 GMT <![CDATA[导出链路一致性(方法论):用“中间层模型 + 字体度量 + 双通道渲染”把 PPTX 与 PDF 高保真对齐]]> https://blog.workmn.com/post/export-pipeline-methodology-pptx-pdf-consistency https://blog.workmn.com/post/export-pipeline-methodology-pptx-pdf-consistency Mon, 29 Sep 2025 07:21:18 GMT <![CDATA[pdf-lib 导出高保真 PDF 实战:字体度量、子集化与行级 BiDi,让多语言排版“可控且一致”]]> https://blog.workmn.com/post/export-pdf-pdf-lib-font-metrics-bidi https://blog.workmn.com/post/export-pdf-pdf-lib-font-metrics-bidi Mon, 27 Oct 2025 15:05:59 GMT <![CDATA[Headless CMS 内容管道:内容/路由/资源三件套如何同步到构建与运行时(可回滚、可追溯)]]> https://blog.workmn.com/post/headless-cms-content-pipeline-build-runtime https://blog.workmn.com/post/headless-cms-content-pipeline-build-runtime Sun, 25 May 2025 15:55:40 GMT <![CDATA[Sentry + PostHog 闭环实战:用“统一事件封装 + 关联键 + 导出链路三件套”把线上问题变成可定位、可验证、可回归]]> https://blog.workmn.com/post/observability-loop-sentry-posthog https://blog.workmn.com/post/observability-loop-sentry-posthog Tue, 30 Dec 2025 14:50:11 GMT <![CDATA[可索引策略实战:哪些页面该 noindex?如何用规则把 SEO 风险“关进笼子”]]> https://blog.workmn.com/post/robots-noindex-indexing-strategy https://blog.workmn.com/post/robots-noindex-indexing-strategy Thu, 06 Mar 2025 11:49:48 GMT <![CDATA[SEO Meta 标准化:用“配置驱动 + 组件化”消灭页面级散装 SEO(可测、可回归)]]> https://blog.workmn.com/post/seo-meta-standardization-config-driven https://blog.workmn.com/post/seo-meta-standardization-config-driven Mon, 07 Apr 2025 23:40:31 GMT <![CDATA[Sitemap 工程化:把“内容路由 + 静态路由 + 运行时模板路由”合并为一个 sitemap.xml]]> https://blog.workmn.com/post/sitemap-merge-content-static-runtime https://blog.workmn.com/post/sitemap-merge-content-static-runtime Fri, 03 Jan 2025 23:01:24 GMT <![CDATA[Supabase 内容同步脚本一条龙:构建期落盘 JSON 快照 + routes manifest + assets 镜像(多语言齐全 gate)]]> https://blog.workmn.com/post/supabase-content-sync-routes-manifest https://blog.workmn.com/post/supabase-content-sync-routes-manifest Sun, 08 Jun 2025 09:29:52 GMT <![CDATA[Sitemap 生成的工程化设计:多数据源合并、去重、语言齐全约束与降级策略]]> https://blog.workmn.com/post/sitemap-engineering-dedupe-locales-degradation https://blog.workmn.com/post/sitemap-engineering-dedupe-locales-degradation Sat, 21 Dec 2024 04:44:35 GMT <![CDATA[next-i18next + URL 前缀 + Cookie 偏好:营销页跟 URL,应用页跟用户(并修掉 sitemap 死循环)]]> https://blog.workmn.com/post/next-i18next-locale-prefix-cookie https://blog.workmn.com/post/next-i18next-locale-prefix-cookie Wed, 27 Aug 2025 15:11:35 GMT <![CDATA[webpack中sass-loader里node-sass改成sass的终极方案:webpack5旧项目依赖升级与Node版本解绑]]> https://blog.workmn.com/post/node-sass-change-sass https://blog.workmn.com/post/node-sass-change-sass Fri, 31 May 2024 06:41:41 GMT <![CDATA[实战Webpack插件和加载器]]> https://blog.workmn.com/post/webpack-practice https://blog.workmn.com/post/webpack-practice Fri, 31 May 2024 06:36:51 GMT <![CDATA[记一次 CentOS 8 使用 npm 安装依赖时报 node-gyp 错误的解决方法]]> https://blog.workmn.com/post/node-npm-gyp https://blog.workmn.com/post/node-npm-gyp Wed, 24 Jan 2024 10:00:47 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-05:MySQL数据库与表结构设计]]> https://blog.workmn.com/post/nuxtjs-05 https://blog.workmn.com/post/nuxtjs-05 Wed, 24 Jan 2024 13:34:53 GMT <![CDATA[使用 Nuxt + Express 连接 MySQL:Mac/Windows 安装与 Node.js 操作示例|个人博客系列-04]]> https://blog.workmn.com/post/nuxtjs-04 https://blog.workmn.com/post/nuxtjs-04 Wed, 24 Jan 2024 13:34:51 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-06:后台管理与 admin 路由中间件]]> https://blog.workmn.com/post/nuxtjs-06 https://blog.workmn.com/post/nuxtjs-06 Wed, 24 Jan 2024 13:35:59 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-02:Linux 安装 nvm 与 Node 环境配置及 Express Hello World]]> https://blog.workmn.com/post/nuxtjs-02 https://blog.workmn.com/post/nuxtjs-02 Wed, 24 Jan 2024 13:34:50 GMT <![CDATA[使用 Nuxt/Express 模板创建 Nuxt SSR 应用:安装 vue-cli、项目初始化与配置解析|个人博客系列-03]]> https://blog.workmn.com/post/nuxtjs-03 https://blog.workmn.com/post/nuxtjs-03 Wed, 24 Jan 2024 13:34:48 GMT <![CDATA[使用 Nuxt SSR + Express + MySQL + Nginx 从 0-1 搭建个人博客系列(01):环境说明]]> https://blog.workmn.com/post/nuxtjs-01 https://blog.workmn.com/post/nuxtjs-01 Wed, 24 Jan 2024 10:43:45 GMT <![CDATA[使用Nuxt+Express+MySQL+Nginx搭建个人博客(09):新增后台Dashboard与分类Categorys路由]]> https://blog.workmn.com/post/nuxtjs-09 https://blog.workmn.com/post/nuxtjs-09 Wed, 24 Jan 2024 13:36:05 GMT <![CDATA[使用 Nuxt、Express、MySQL、Nginx 创建个人博客系列-07:后台注册登录页面与公用头部]]> https://blog.workmn.com/post/nuxtjs-07 https://blog.workmn.com/post/nuxtjs-07 Wed, 24 Jan 2024 13:36:01 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-16:后台上传文章图片并保存到腾讯云COS]]> https://blog.workmn.com/post/nuxtjs-16 https://blog.workmn.com/post/nuxtjs-16 Wed, 24 Jan 2024 13:36:18 GMT <![CDATA[使用Nuxt+Express+MySQL+Nginx创建个人博客系列-18:文章详情页与API路由实现]]> https://blog.workmn.com/post/nuxtjs-18 https://blog.workmn.com/post/nuxtjs-18 Wed, 24 Jan 2024 13:36:21 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-19:评论接口实现与无限级评论]]> https://blog.workmn.com/post/nuxtjs-19 https://blog.workmn.com/post/nuxtjs-19 Wed, 24 Jan 2024 13:36:23 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-20:根据文章类型查找文章]]> https://blog.workmn.com/post/nuxtjs-20 https://blog.workmn.com/post/nuxtjs-20 Wed, 24 Jan 2024 13:36:25 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-21:根据文章标签查找文章]]> https://blog.workmn.com/post/nuxtjs-21 https://blog.workmn.com/post/nuxtjs-21 Wed, 24 Jan 2024 13:36:27 GMT <![CDATA[使用 Nuxt、Express、MySQL、Nginx 创建个人博客系列-22:服务器配置与 SSH 私钥登录]]> https://blog.workmn.com/post/nuxtjs-22 https://blog.workmn.com/post/nuxtjs-22 Wed, 24 Jan 2024 13:36:29 GMT <![CDATA[使用Nuxt创建个人博客系列23:设置淘宝源与安装Yarn、PM2、MySQL]]> https://blog.workmn.com/post/nuxtjs-23 https://blog.workmn.com/post/nuxtjs-23 Wed, 24 Jan 2024 13:36:31 GMT <![CDATA[使用 Nuxt 创建个人博客系列 24:PM2 自动部署与 GitHub SSH 提交上线]]> https://blog.workmn.com/post/nuxtjs-24 https://blog.workmn.com/post/nuxtjs-24 Wed, 24 Jan 2024 13:36:33 GMT <![CDATA[使用 Nuxt 创建个人博客系列-25:使用 Nginx 反向代理转发到 Node 服务]]> https://blog.workmn.com/post/nuxtjs-25 https://blog.workmn.com/post/nuxtjs-25 Wed, 24 Jan 2024 13:36:35 GMT <![CDATA[使用nuxt、express、mysql、nginx创建个人博客系列-08:用户注册与登录接口(createUser/login)实现]]> https://blog.workmn.com/post/nuxtjs-08 https://blog.workmn.com/post/nuxtjs-08 Wed, 24 Jan 2024 13:36:03 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-15:添加 articles_edit.html 文件]]> https://blog.workmn.com/post/nuxtjs-15 https://blog.workmn.com/post/nuxtjs-15 Wed, 24 Jan 2024 13:36:16 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-14:文章新增与修改路由实现]]> https://blog.workmn.com/post/nuxtjs-14 https://blog.workmn.com/post/nuxtjs-14 Wed, 24 Jan 2024 13:36:15 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-13:文章列表与路由配置]]> https://blog.workmn.com/post/nuxtjs-13 https://blog.workmn.com/post/nuxtjs-13 Wed, 24 Jan 2024 13:36:12 GMT <![CDATA[使用nuxt,express,mysql,nginx创建个人博客系列-12:实现文章标签(tags)编辑页与保存路由]]> https://blog.workmn.com/post/nuxtjs-12 https://blog.workmn.com/post/nuxtjs-12 Wed, 24 Jan 2024 13:36:10 GMT <![CDATA[使用Nuxt、Express、MySQL、Nginx创建个人博客系列-11:categorys编辑页实现]]> https://blog.workmn.com/post/nuxtjs-11 https://blog.workmn.com/post/nuxtjs-11 Wed, 24 Jan 2024 13:36:09 GMT <![CDATA[使用 Nuxt+Express+MySQL+Nginx 创建个人博客系列-10:后台新增 Tags 标签页与 /tags 路由]]> https://blog.workmn.com/post/nuxtjs-10 https://blog.workmn.com/post/nuxtjs-10 Wed, 24 Jan 2024 13:36:06 GMT <![CDATA[使用 Nuxt+Express+MySQL+Nginx 创建个人博客系列-17:文章列表页与公共布局实现]]> https://blog.workmn.com/post/nuxtjs-17 https://blog.workmn.com/post/nuxtjs-17 Wed, 24 Jan 2024 13:36:20 GMT