<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>GreyFlowers</title>
        <link>https://caelum.moe</link>
        <description>在失去了意义的世界里，会绽放出什么颜色的花朵呢</description>
        <lastBuildDate>Thu, 26 Feb 2026 05:50:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <image>
            <title>GreyFlowers</title>
            <url>https://static-r2.caelum.moe/greyflowers-ogimg.webp</url>
            <link>https://caelum.moe</link>
        </image>
        <copyright>MIT</copyright>
        <item>
            <title><![CDATA[开发 Vue 组件库时，样式丢失问题]]></title>
            <link>https://caelum.moe/articles/dev-vue-lib-loss-style</link>
            <guid isPermaLink="false">https://caelum.moe/articles/dev-vue-lib-loss-style</guid>
            <pubDate>Tue, 27 Jan 2026 08:50:07 GMT</pubDate>
            <description><![CDATA[最近在开发 hana-img-viewer 的时候，刚好遇到了 vite 打包时样式丢失的问题，稍微记录一下。]]></description>
            <content:encoded><![CDATA[最近在开发 hana-img-viewer 的时候，刚好遇到了 vite 打包时样式丢失的问题，稍微记录一下。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/49.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[2026-01-01]]></title>
            <link>https://caelum.moe/articles/2026-01-01</link>
            <guid isPermaLink="false">https://caelum.moe/articles/2026-01-01</guid>
            <pubDate>Wed, 31 Dec 2025 16:30:16 GMT</pubDate>
            <description><![CDATA[2026-01-01]]></description>
            <content:encoded><![CDATA[2026-01-01]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/48.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[2025-11-01]]></title>
            <link>https://caelum.moe/articles/2025-11-01</link>
            <guid isPermaLink="false">https://caelum.moe/articles/2025-11-01</guid>
            <pubDate>Fri, 31 Oct 2025 17:48:03 GMT</pubDate>
            <description><![CDATA[2025-11-01]]></description>
            <content:encoded><![CDATA[2025-11-01]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/47.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[JS/TS 实用 Cursor Rules]]></title>
            <link>https://caelum.moe/articles/js-ts-cursor-rules</link>
            <guid isPermaLink="false">https://caelum.moe/articles/js-ts-cursor-rules</guid>
            <pubDate>Fri, 29 Aug 2025 08:40:58 GMT</pubDate>
            <description><![CDATA[记录一些比较实用的 Cursor Rules，方便 Copy。]]></description>
            <content:encoded><![CDATA[记录一些比较实用的 Cursor Rules，方便 Copy。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/46.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[一段让 CC 猛猛干活的 Prompt]]></title>
            <link>https://caelum.moe/articles/claude-code-linus-prompt</link>
            <guid isPermaLink="false">https://caelum.moe/articles/claude-code-linus-prompt</guid>
            <pubDate>Fri, 29 Aug 2025 06:33:52 GMT</pubDate>
            <description><![CDATA[刷 X 刷到的，听说还真有用，记录一下（）感觉之后能用得上]]></description>
            <content:encoded><![CDATA[刷 X 刷到的，听说还真有用，记录一下（）感觉之后能用得上]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/45.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[NestJS 快速集成 Prisma最佳实践]]></title>
            <link>https://caelum.moe/articles/nest-prisma-integration</link>
            <guid isPermaLink="false">https://caelum.moe/articles/nest-prisma-integration</guid>
            <pubDate>Wed, 20 Aug 2025 12:53:40 GMT</pubDate>
            <description><![CDATA[在 NestJS 中集成 Prisma 的需求太常见了。。。总结一份 Snippet 吧]]></description>
            <content:encoded><![CDATA[在 NestJS 中集成 Prisma 的需求太常见了。。。总结一份 Snippet 吧]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/44.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Axios二次封装最佳实践]]></title>
            <link>https://caelum.moe/articles/axios-best-practices</link>
            <guid isPermaLink="false">https://caelum.moe/articles/axios-best-practices</guid>
            <pubDate>Wed, 23 Jul 2025 12:56:32 GMT</pubDate>
            <description><![CDATA[一般自己写 SPA，Axios 基本是首选的 HTTP Library，而对于它的二次封装所谓的“最佳实践”又层出不穷，在这里给一下我的方案吧（其实也是为了方便我自己随时随地 copy）]]></description>
            <content:encoded><![CDATA[一般自己写 SPA，Axios 基本是首选的 HTTP Library，而对于它的二次封装所谓的“最佳实践”又层出不穷，在这里给一下我的方案吧（其实也是为了方便我自己随时随地 copy）]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/43.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[初识 View Transition API]]></title>
            <link>https://caelum.moe/articles/first-impression-view-transition</link>
            <guid isPermaLink="false">https://caelum.moe/articles/first-impression-view-transition</guid>
            <pubDate>Wed, 23 Jul 2025 07:24:25 GMT</pubDate>
            <description><![CDATA[前阵子在写 hana-img-viewer 的时候偶然了解到了 View Transition API，感觉挺有意思的，稍微氵一篇文章吧。]]></description>
            <content:encoded><![CDATA[前阵子在写 hana-img-viewer 的时候偶然了解到了 View Transition API，感觉挺有意思的，稍微氵一篇文章吧。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/42.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[一些linter&formatter最佳实践]]></title>
            <link>https://caelum.moe/articles/linter-formatter-best-practices</link>
            <guid isPermaLink="false">https://caelum.moe/articles/linter-formatter-best-practices</guid>
            <pubDate>Mon, 09 Jun 2025 06:40:52 GMT</pubDate>
            <description><![CDATA[在创建新项目的时候，往往会经历一些痛苦，最知名的无非就是配置 linter 和 formatter 了。在这里记录一些最佳实践。]]></description>
            <content:encoded><![CDATA[在创建新项目的时候，往往会经历一些痛苦，最知名的无非就是配置 linter 和 formatter 了。在这里记录一些最佳实践。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/41.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Vite Dev Server 构建原理]]></title>
            <link>https://caelum.moe/articles/vite-dev-server-principle</link>
            <guid isPermaLink="false">https://caelum.moe/articles/vite-dev-server-principle</guid>
            <pubDate>Wed, 21 May 2025 08:32:50 GMT</pubDate>
            <description><![CDATA[最近突然对 Vite 的原理产生了浓厚的兴趣，想要了解一下 Vite Dev Server 的构建原理。在这里稍微记录一下吧。]]></description>
            <content:encoded><![CDATA[最近突然对 Vite 的原理产生了浓厚的兴趣，想要了解一下 Vite Dev Server 的构建原理。在这里稍微记录一下吧。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/40.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Serverless全栈部署工具清单]]></title>
            <link>https://caelum.moe/articles/serverless-fullstack-deployment</link>
            <guid isPermaLink="false">https://caelum.moe/articles/serverless-fullstack-deployment</guid>
            <pubDate>Sat, 19 Apr 2025 05:43:03 GMT</pubDate>
            <description><![CDATA[对于个人项目来说，当然是0成本上线是大家最关心的问题，这篇文章就给大家介绍一些0成本上线的工具和平台，帮助大家快速上线自己的项目。]]></description>
            <content:encoded><![CDATA[对于个人项目来说，当然是0成本上线是大家最关心的问题，这篇文章就给大家介绍一些0成本上线的工具和平台，帮助大家快速上线自己的项目。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/39.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[简单总结音程及和弦]]></title>
            <link>https://caelum.moe/articles/interval-and-chord</link>
            <guid isPermaLink="false">https://caelum.moe/articles/interval-and-chord</guid>
            <pubDate>Fri, 31 Jan 2025 11:20:15 GMT</pubDate>
            <description><![CDATA[本文简单总结了音程及和弦的基本知识，包括音程的分类、乐名、和弦的分类、挂留和弦、转位和弦等。]]></description>
            <content:encoded><![CDATA[本文简单总结了音程及和弦的基本知识，包括音程的分类、乐名、和弦的分类、挂留和弦、转位和弦等。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/38.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[原始值的响应式方案]]></title>
            <link>https://caelum.moe/articles/basic-responsive-data</link>
            <guid isPermaLink="false">https://caelum.moe/articles/basic-responsive-data</guid>
            <pubDate>Mon, 06 Jan 2025 09:50:38 GMT</pubDate>
            <description><![CDATA[在 Vue3 中，对于原始值的响应式处理方案要比非原始值简单得多，简单来说就是基于我们对于非原始值的代理方案，手动将原始值变为一个具有特殊属性的对象，然后通过 Proxy 进行代理，使之变为响应式。这也就是我们平常使用 xxx.value 来访问原始值的原因。]]></description>
            <content:encoded><![CDATA[在 Vue3 中，对于原始值的响应式处理方案要比非原始值简单得多，简单来说就是基于我们对于非原始值的代理方案，手动将原始值变为一个具有特殊属性的对象，然后通过 Proxy 进行代理，使之变为响应式。这也就是我们平常使用 xxx.value 来访问原始值的原因。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/37.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[非原始值的响应式方案（四、完全代理Map&Set）]]></title>
            <link>https://caelum.moe/articles/responsive-data-plan-4</link>
            <guid isPermaLink="false">https://caelum.moe/articles/responsive-data-plan-4</guid>
            <pubDate>Sat, 04 Jan 2025 15:37:29 GMT</pubDate>
            <description><![CDATA[我们在前面几章已经对 Object 与 Array 的响应式代理底层做了相对比较相近的剖析，接下来我们要深入到其他不同的对象类型，比如即将要讲的集合类型 `Set | Map | WeakMap | WeakSet`。]]></description>
            <content:encoded><![CDATA[我们在前面几章已经对 Object 与 Array 的响应式代理底层做了相对比较相近的剖析，接下来我们要深入到其他不同的对象类型，比如即将要讲的集合类型 `Set | Map | WeakMap | WeakSet`。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/36.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[非原始值的响应式方案（三、完全代理Array）]]></title>
            <link>https://caelum.moe/articles/responsive-data-plan-3</link>
            <guid isPermaLink="false">https://caelum.moe/articles/responsive-data-plan-3</guid>
            <pubDate>Thu, 02 Jan 2025 07:12:19 GMT</pubDate>
            <description><![CDATA[在上一节中，我们实现了手动完全代理 Object 类型，并且实现了深浅响应与深浅只读。接下来我们要一点点进入到 JS 的各个数据类型，所有的数据都得代理一遍，顺便了解一下各个数据类型的各个操作的底层到底是用的什么基本语义。那么开始开始！]]></description>
            <content:encoded><![CDATA[在上一节中，我们实现了手动完全代理 Object 类型，并且实现了深浅响应与深浅只读。接下来我们要一点点进入到 JS 的各个数据类型，所有的数据都得代理一遍，顺便了解一下各个数据类型的各个操作的底层到底是用的什么基本语义。那么开始开始！]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/35.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[非原始值的响应式方案（二、完全代理Object）]]></title>
            <link>https://caelum.moe/articles/responsive-data-plan-2</link>
            <guid isPermaLink="false">https://caelum.moe/articles/responsive-data-plan-2</guid>
            <pubDate>Mon, 30 Dec 2024 10:31:17 GMT</pubDate>
            <description><![CDATA[有了上一节的基础，这节我们来正式的手写一下 Vue3 中对于 Object 的响应式代理。]]></description>
            <content:encoded><![CDATA[有了上一节的基础，这节我们来正式的手写一下 Vue3 中对于 Object 的响应式代理。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/34.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[非原始值的响应式方案（一、对象、Proxy与Reflect）]]></title>
            <link>https://caelum.moe/articles/responsive-data-plan-1</link>
            <guid isPermaLink="false">https://caelum.moe/articles/responsive-data-plan-1</guid>
            <pubDate>Sun, 29 Dec 2024 04:19:29 GMT</pubDate>
            <description><![CDATA[从本章开始，我们正式的进入到 Vue3 各个响应式数据的具体实现方案。首先，先梳理一下 Proxy 与 Reflect 这两个 ES6 新特性的基本用法，以及明确 JavaScript 对象的内部方法与 Proxy 的对应关系。]]></description>
            <content:encoded><![CDATA[从本章开始，我们正式的进入到 Vue3 各个响应式数据的具体实现方案。首先，先梳理一下 Proxy 与 Reflect 这两个 ES6 新特性的基本用法，以及明确 JavaScript 对象的内部方法与 Proxy 的对应关系。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/33.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[从零实现Vue响应系统（二、computed与watch）]]></title>
            <link>https://caelum.moe/articles/vue-responsive-system-2</link>
            <guid isPermaLink="false">https://caelum.moe/articles/vue-responsive-system-2</guid>
            <pubDate>Tue, 24 Dec 2024 07:38:01 GMT</pubDate>
            <description><![CDATA[在上一篇我们已经大致理解了 Vue 的响应式系统的基础架构是如何实现的，本篇我们将继续深入，实现 computed 和 watch 这两个重要的特性。]]></description>
            <content:encoded><![CDATA[在上一篇我们已经大致理解了 Vue 的响应式系统的基础架构是如何实现的，本篇我们将继续深入，实现 computed 和 watch 这两个重要的特性。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/32.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[从零实现Vue响应系统（一、概念与基础架构）]]></title>
            <link>https://caelum.moe/articles/vue-responsive-system-1</link>
            <guid isPermaLink="false">https://caelum.moe/articles/vue-responsive-system-1</guid>
            <pubDate>Sun, 22 Dec 2024 07:32:35 GMT</pubDate>
            <description><![CDATA[这篇文章是我系统学习《Vue设计与实现》一书的笔记开篇，主要介绍了响应式数据与副作用函数的概念，以及如何设计一个完善的响应式系统。后续我会就这一本书，逐章逐节进行阅读，并将阅读笔记整理成文章发布至此。]]></description>
            <content:encoded><![CDATA[这篇文章是我系统学习《Vue设计与实现》一书的笔记开篇，主要介绍了响应式数据与副作用函数的概念，以及如何设计一个完善的响应式系统。后续我会就这一本书，逐章逐节进行阅读，并将阅读笔记整理成文章发布至此。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/31.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[JS中的尾调用优化]]></title>
            <link>https://caelum.moe/articles/javascript-tail-call-optimization</link>
            <guid isPermaLink="false">https://caelum.moe/articles/javascript-tail-call-optimization</guid>
            <pubDate>Sat, 21 Dec 2024 10:03:42 GMT</pubDate>
            <description><![CDATA[ES6 新增了一个内存管理优化机制，让 JavaScript 引擎在满足条件时可以重用栈帧。]]></description>
            <content:encoded><![CDATA[ES6 新增了一个内存管理优化机制，让 JavaScript 引擎在满足条件时可以重用栈帧。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/30.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[win11 配置 C/C++ 开发与调试环境]]></title>
            <link>https://caelum.moe/articles/win11-c-cpp-dev-debug</link>
            <guid isPermaLink="false">https://caelum.moe/articles/win11-c-cpp-dev-debug</guid>
            <pubDate>Thu, 28 Nov 2024 02:41:29 GMT</pubDate>
            <description><![CDATA[本文主要介绍如何在 win11 系统上配置 C/C++ 的开发与调试环境，以及如何在 vscode 中进行 C/C++ 的编写与调试。]]></description>
            <content:encoded><![CDATA[本文主要介绍如何在 win11 系统上配置 C/C++ 的开发与调试环境，以及如何在 vscode 中进行 C/C++ 的编写与调试。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/29.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[React 18 核心重难点]]></title>
            <link>https://caelum.moe/articles/react-18-core-difficulties</link>
            <guid isPermaLink="false">https://caelum.moe/articles/react-18-core-difficulties</guid>
            <pubDate>Mon, 14 Oct 2024 17:10:21 GMT</pubDate>
            <description><![CDATA[最近在做了一些 Next.js 的实践之后，逐渐对 React 内部的具体实现起了兴趣，想从源码的角度具体地理解一下 React 的一些核心概念，以及它们到底是怎么实现的。]]></description>
            <content:encoded><![CDATA[最近在做了一些 Next.js 的实践之后，逐渐对 React 内部的具体实现起了兴趣，想从源码的角度具体地理解一下 React 的一些核心概念，以及它们到底是怎么实现的。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/23.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Webpack vs. Vite]]></title>
            <link>https://caelum.moe/articles/webpack-vs-vite</link>
            <guid isPermaLink="false">https://caelum.moe/articles/webpack-vs-vite</guid>
            <pubDate>Fri, 06 Sep 2024 13:26:36 GMT</pubDate>
            <description><![CDATA[Webpack 和 Vite 是两个前端构建工具，各有优劣。Webpack 是一个模块打包工具，而 Vite 是一个按需打包工具。本文将对两者进行详细的对比。]]></description>
            <content:encoded><![CDATA[Webpack 和 Vite 是两个前端构建工具，各有优劣。Webpack 是一个模块打包工具，而 Vite 是一个按需打包工具。本文将对两者进行详细的对比。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/7.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[纯前端实现 PDF 水印添加]]></title>
            <link>https://caelum.moe/articles/frontend-pdf-watermark</link>
            <guid isPermaLink="false">https://caelum.moe/articles/frontend-pdf-watermark</guid>
            <pubDate>Thu, 29 Aug 2024 12:23:16 GMT</pubDate>
            <description><![CDATA[本文主要是为了解决使用 Vue3 + TS 纯前端实现 PDF 水印添加的问题。]]></description>
            <content:encoded><![CDATA[本文主要是为了解决使用 Vue3 + TS 纯前端实现 PDF 水印添加的问题。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/17.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Fetch vs. Axios，选择适合自己的 HTTP 请求方式]]></title>
            <link>https://caelum.moe/articles/fetch-vs-axios</link>
            <guid isPermaLink="false">https://caelum.moe/articles/fetch-vs-axios</guid>
            <pubDate>Thu, 08 Aug 2024 14:08:29 GMT</pubDate>
            <description><![CDATA[现阶段的前端领域的 HTTP 请求方式主要有 Fetch 和 Axios 两种，本文将对这两者进行一些系统性的调研，以便于选择适合自己的 HTTP 请求方式。]]></description>
            <content:encoded><![CDATA[现阶段的前端领域的 HTTP 请求方式主要有 Fetch 和 Axios 两种，本文将对这两者进行一些系统性的调研，以便于选择适合自己的 HTTP 请求方式。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/3.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Server Actions]]></title>
            <link>https://caelum.moe/articles/server-actions</link>
            <guid isPermaLink="false">https://caelum.moe/articles/server-actions</guid>
            <pubDate>Sat, 27 Jul 2024 15:02:05 GMT</pubDate>
            <description><![CDATA[Server Actions 是 Next.js 中的一个特殊概念，用于在服务端直接进行数据库查询等操作，而不是在客户端进行异步请求。本文将介绍 Server Actions 的基本概念和使用场景。]]></description>
            <content:encoded><![CDATA[Server Actions 是 Next.js 中的一个特殊概念，用于在服务端直接进行数据库查询等操作，而不是在客户端进行异步请求。本文将介绍 Server Actions 的基本概念和使用场景。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/11.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[认识一下PostgreSQL]]></title>
            <link>https://caelum.moe/articles/get-to-know-postgresql</link>
            <guid isPermaLink="false">https://caelum.moe/articles/get-to-know-postgresql</guid>
            <pubDate>Wed, 10 Jul 2024 07:19:12 GMT</pubDate>
            <description><![CDATA[PostgreSQL 是一个强大的、商业级别的开源关系型数据库。它允许使用关系型 SQL 和非关系型 JSON 数据和查询。PostgreSQL 背后有一个强大的社区。PostgreSQL 是一个非常可靠的数据库管理系统，具有优秀的支持水平、安全性和准确性。一些手机和网络应用程序使用 PostgreSQL 作为他们的默认数据库。许多地理空间和分析解决方案也使用了 PostgreSQL。]]></description>
            <content:encoded><![CDATA[PostgreSQL 是一个强大的、商业级别的开源关系型数据库。它允许使用关系型 SQL 和非关系型 JSON 数据和查询。PostgreSQL 背后有一个强大的社区。PostgreSQL 是一个非常可靠的数据库管理系统，具有优秀的支持水平、安全性和准确性。一些手机和网络应用程序使用 PostgreSQL 作为他们的默认数据库。许多地理空间和分析解决方案也使用了 PostgreSQL。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/4.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[React 中使用 Dnd-Kit 实现拖曳排序功能]]></title>
            <link>https://caelum.moe/articles/dnd-kit-in-react</link>
            <guid isPermaLink="false">https://caelum.moe/articles/dnd-kit-in-react</guid>
            <pubDate>Thu, 13 Jun 2024 05:28:53 GMT</pubDate>
            <description><![CDATA[由于前阵子需要在开发 Picals 的时候，需要实现一些拖动排序的功能。虽然有原生的浏览器 dragger API，不过纯靠自己手写很难实现自己想要的效果，更多的是吃力不讨好。于是我四处去调研了一些 React 中比较常用的拖曳库，最终确定了 `dnd-kit` 作为我实现拖曳排序的工具。]]></description>
            <content:encoded><![CDATA[由于前阵子需要在开发 Picals 的时候，需要实现一些拖动排序的功能。虽然有原生的浏览器 dragger API，不过纯靠自己手写很难实现自己想要的效果，更多的是吃力不讨好。于是我四处去调研了一些 React 中比较常用的拖曳库，最终确定了 `dnd-kit` 作为我实现拖曳排序的工具。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/15.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[MySQL + Typeorm 级联关系的正确处理]]></title>
            <link>https://caelum.moe/articles/mysql-typeorm-cascading-relationship</link>
            <guid isPermaLink="false">https://caelum.moe/articles/mysql-typeorm-cascading-relationship</guid>
            <pubDate>Thu, 13 Jun 2024 05:17:24 GMT</pubDate>
            <description><![CDATA[级联关系一直以来都是数据库设计中的一个重要概念，本文将介绍如何在 MySQL + Typeorm 中正确处理级联关系。]]></description>
            <content:encoded><![CDATA[级联关系一直以来都是数据库设计中的一个重要概念，本文将介绍如何在 MySQL + Typeorm 中正确处理级联关系。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/16.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Nest 中的循环依赖问题]]></title>
            <link>https://caelum.moe/articles/circular-dependency-in-nest</link>
            <guid isPermaLink="false">https://caelum.moe/articles/circular-dependency-in-nest</guid>
            <pubDate>Thu, 13 Jun 2024 05:10:14 GMT</pubDate>
            <description><![CDATA[本文主要介绍了在 nest 中循环依赖的本质、如何解决循环依赖问题以及 forwardRef() 函数的本质。]]></description>
            <content:encoded><![CDATA[本文主要介绍了在 nest 中循环依赖的本质、如何解决循环依赖问题以及 forwardRef() 函数的本质。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/19.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[如何使用 Docker 部署 Nest.js]]></title>
            <link>https://caelum.moe/articles/deploy-nest-using-docker</link>
            <guid isPermaLink="false">https://caelum.moe/articles/deploy-nest-using-docker</guid>
            <pubDate>Wed, 22 May 2024 16:15:16 GMT</pubDate>
            <description><![CDATA[本文主要介绍如何使用 Docker 部署 Nest.js 项目，包括打包 nest 应用、使用 Docker 对 nest 应用进行部署、使用 nginx 反向代理后端服务、启用 https 等内容。]]></description>
            <content:encoded><![CDATA[本文主要介绍如何使用 Docker 部署 Nest.js 项目，包括打包 nest 应用、使用 Docker 对 nest 应用进行部署、使用 nginx 反向代理后端服务、启用 https 等内容。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/12.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Cookie、Session 和 JWT 之间的区别]]></title>
            <link>https://caelum.moe/articles/cookie-session-jwt</link>
            <guid isPermaLink="false">https://caelum.moe/articles/cookie-session-jwt</guid>
            <pubDate>Sat, 18 May 2024 06:39:03 GMT</pubDate>
            <description><![CDATA[Cookie、Session 和 JWT 是常见的用户认证和会话管理机制，本文将详细介绍它们之间的区别。]]></description>
            <content:encoded><![CDATA[Cookie、Session 和 JWT 是常见的用户认证和会话管理机制，本文将详细介绍它们之间的区别。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/2.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[总结 Vue2 和 Vue3 的各种区别]]></title>
            <link>https://caelum.moe/articles/vue2-vs-vue3</link>
            <guid isPermaLink="false">https://caelum.moe/articles/vue2-vs-vue3</guid>
            <pubDate>Thu, 09 May 2024 13:04:08 GMT</pubDate>
            <description><![CDATA[最近面试一直被问这个东西都快被问麻了，想着去总结一下 Vue2 和 Vue3 的区别，以便更好地将它们进行横向对比。]]></description>
            <content:encoded><![CDATA[最近面试一直被问这个东西都快被问麻了，想着去总结一下 Vue2 和 Vue3 的区别，以便更好地将它们进行横向对比。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/9.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[JS 中如何实现类的继承]]></title>
            <link>https://caelum.moe/articles/class-inheritance-in-js</link>
            <guid isPermaLink="false">https://caelum.moe/articles/class-inheritance-in-js</guid>
            <pubDate>Mon, 06 May 2024 12:02:03 GMT</pubDate>
            <description><![CDATA[准确地说，JS 中没有类的概念，有的只是构造函数和原型链。不过，我们可以通过构造函数和原型链来实现类似于类的继承，并且可以玩出很多花样、实现不同的特性。]]></description>
            <content:encoded><![CDATA[准确地说，JS 中没有类的概念，有的只是构造函数和原型链。不过，我们可以通过构造函数和原型链来实现类似于类的继承，并且可以玩出很多花样、实现不同的特性。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/6.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[初识 Prisma]]></title>
            <link>https://caelum.moe/articles/get-to-know-prisma</link>
            <guid isPermaLink="false">https://caelum.moe/articles/get-to-know-prisma</guid>
            <pubDate>Mon, 06 May 2024 07:27:09 GMT</pubDate>
            <description><![CDATA[Prisma 是一个开源的下一代 ORM（对象关系映射器），它在 Node.js 和 TypeScript 生态系统中非常流行。本文将介绍 Prisma 的基本概念和与 TypeORM 的异同点。]]></description>
            <content:encoded><![CDATA[Prisma 是一个开源的下一代 ORM（对象关系映射器），它在 Node.js 和 TypeScript 生态系统中非常流行。本文将介绍 Prisma 的基本概念和与 TypeORM 的异同点。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/10.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[JS 中的正则表达式]]></title>
            <link>https://caelum.moe/articles/regular-expressions-in-js</link>
            <guid isPermaLink="false">https://caelum.moe/articles/regular-expressions-in-js</guid>
            <pubDate>Sun, 05 May 2024 16:07:59 GMT</pubDate>
            <description><![CDATA[正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中，正则表达式也是对象。这些模式被用于 JavaScript 的 RegExp 方法中，例如 test() 和 exec()，以及字符串的 match()、replace()、search() 和 split() 方法。]]></description>
            <content:encoded><![CDATA[正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中，正则表达式也是对象。这些模式被用于 JavaScript 的 RegExp 方法中，例如 test() 和 exec()，以及字符串的 match()、replace()、search() 和 split() 方法。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/8.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[详解 Nest 中的异常（HttpException）]]></title>
            <link>https://caelum.moe/articles/exceptions-in-nest</link>
            <guid isPermaLink="false">https://caelum.moe/articles/exceptions-in-nest</guid>
            <pubDate>Fri, 12 Apr 2024 14:48:42 GMT</pubDate>
            <description><![CDATA[本文主要介绋了 Nest 中的异常处理机制，包括基础异常类 HttpException、Nest 中的其他异常类、Nest 本身如何捕获异常、自定义异常+异常过滤器等内容。]]></description>
            <content:encoded><![CDATA[本文主要介绋了 Nest 中的异常处理机制，包括基础异常类 HttpException、Nest 中的其他异常类、Nest 本身如何捕获异常、自定义异常+异常过滤器等内容。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/20.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[使用 React + Nest，从零到一全栈手写一个 Pixiv]]></title>
            <link>https://caelum.moe/articles/picals-introduction</link>
            <guid isPermaLink="false">https://caelum.moe/articles/picals-introduction</guid>
            <pubDate>Tue, 12 Mar 2024 09:58:15 GMT</pubDate>
            <description><![CDATA[嗯，没错，这个 Pixiv 就是你们想象中的那个东东，那个世界最大的插画交流网站。我为这个项目取了一个更加朗朗上口的名字： Picals。]]></description>
            <content:encoded><![CDATA[嗯，没错，这个 Pixiv 就是你们想象中的那个东东，那个世界最大的插画交流网站。我为这个项目取了一个更加朗朗上口的名字： Picals。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/28.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[fetchEventSource 使用 + 源码解析]]></title>
            <link>https://caelum.moe/articles/fetch-event-source</link>
            <guid isPermaLink="false">https://caelum.moe/articles/fetch-event-source</guid>
            <pubDate>Tue, 12 Mar 2024 08:42:50 GMT</pubDate>
            <description><![CDATA[结合实例介绍 fetchEventSource 的使用方法，并且简单地解析其源码。]]></description>
            <content:encoded><![CDATA[结合实例介绍 fetchEventSource 的使用方法，并且简单地解析其源码。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/5.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[React.memo 初步学习]]></title>
            <link>https://caelum.moe/articles/react-memo-begin</link>
            <guid isPermaLink="false">https://caelum.moe/articles/react-memo-begin</guid>
            <pubDate>Fri, 16 Feb 2024 06:57:35 GMT</pubDate>
            <description><![CDATA[React.memo 是一个高阶组件，其主要作用是对组件进行性能优化。它通过记忆（memoizing）组件的渲染结果，来避免在某些情况下进行不必要的重新渲染。]]></description>
            <content:encoded><![CDATA[React.memo 是一个高阶组件，其主要作用是对组件进行性能优化。它通过记忆（memoizing）组件的渲染结果，来避免在某些情况下进行不必要的重新渲染。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/27.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[JS表达式 & JS代码]]></title>
            <link>https://caelum.moe/articles/js-expression-and-js-code</link>
            <guid isPermaLink="false">https://caelum.moe/articles/js-expression-and-js-code</guid>
            <pubDate>Thu, 08 Feb 2024 09:23:16 GMT</pubDate>
            <description><![CDATA[如果想要学好 React，搞明白 JS 表达式和 JS 代码的区别是非常重要的。在这篇文章中，我们将会讨论这两者的区别，以及在 React 中在什么地方应该使用表达式，什么地方应该使用代码。]]></description>
            <content:encoded><![CDATA[如果想要学好 React，搞明白 JS 表达式和 JS 代码的区别是非常重要的。在这篇文章中，我们将会讨论这两者的区别，以及在 React 中在什么地方应该使用表达式，什么地方应该使用代码。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/24.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[React Router DOM 初步学习]]></title>
            <link>https://caelum.moe/articles/react-router-dom-begin</link>
            <guid isPermaLink="false">https://caelum.moe/articles/react-router-dom-begin</guid>
            <pubDate>Wed, 07 Feb 2024 11:07:08 GMT</pubDate>
            <description><![CDATA[了解 React Router DOM 的基本概念和使用流程，以及如何在 React 项目中使用 React Router DOM。]]></description>
            <content:encoded><![CDATA[了解 React Router DOM 的基本概念和使用流程，以及如何在 React 项目中使用 React Router DOM。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/26.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Redux 初步学习]]></title>
            <link>https://caelum.moe/articles/redux-begin</link>
            <guid isPermaLink="false">https://caelum.moe/articles/redux-begin</guid>
            <pubDate>Tue, 06 Feb 2024 09:30:16 GMT</pubDate>
            <description><![CDATA[了解 Redux 的基本概念和使用流程，以及如何在 React 项目中使用 Redux。]]></description>
            <content:encoded><![CDATA[了解 Redux 的基本概念和使用流程，以及如何在 React 项目中使用 Redux。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/25.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[TS 中的装饰器（Decorator）]]></title>
            <link>https://caelum.moe/articles/decorator-in-ts</link>
            <guid isPermaLink="false">https://caelum.moe/articles/decorator-in-ts</guid>
            <pubDate>Wed, 31 Jan 2024 07:50:23 GMT</pubDate>
            <description><![CDATA[本文主要介绍了 TypeScript 中的装饰器（Decorator）的概念和用法，以及如何利用装饰器实现 AOP 面向切面编程。]]></description>
            <content:encoded><![CDATA[本文主要介绍了 TypeScript 中的装饰器（Decorator）的概念和用法，以及如何利用装饰器实现 AOP 面向切面编程。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/21.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[控制反转和依赖注入]]></title>
            <link>https://caelum.moe/articles/ioc-and-di</link>
            <guid isPermaLink="false">https://caelum.moe/articles/ioc-and-di</guid>
            <pubDate>Wed, 31 Jan 2024 07:49:20 GMT</pubDate>
            <description><![CDATA[在对 Nest.js 的介绍中提到了其以控制反转（IOC）和依赖注入（DI）为其设计理念的核心思想，因此我们有必要好好讨论一下 IOC 和 DI 到底是什么东西，尤其是它们在 TypeScript 当中到底是怎么体现的？]]></description>
            <content:encoded><![CDATA[在对 Nest.js 的介绍中提到了其以控制反转（IOC）和依赖注入（DI）为其设计理念的核心思想，因此我们有必要好好讨论一下 IOC 和 DI 到底是什么东西，尤其是它们在 TypeScript 当中到底是怎么体现的？]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/22.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[如何在 Vue3 中引入 Vite-SSG 打包]]></title>
            <link>https://caelum.moe/articles/vite-ssg-in-vue3</link>
            <guid isPermaLink="false">https://caelum.moe/articles/vite-ssg-in-vue3</guid>
            <pubDate>Wed, 31 Jan 2024 06:22:42 GMT</pubDate>
            <description><![CDATA[本文主要是为了解决使用 Vite-SSG 进行 Vue3 项目打包的问题。]]></description>
            <content:encoded><![CDATA[本文主要是为了解决使用 Vite-SSG 进行 Vue3 项目打包的问题。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/14.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[关于我是如何从零自己设计、全栈编写出个人小站的经历]]></title>
            <link>https://caelum.moe/articles/littlesharing-about</link>
            <guid isPermaLink="false">https://caelum.moe/articles/littlesharing-about</guid>
            <pubDate>Wed, 31 Jan 2024 03:44:51 GMT</pubDate>
            <description><![CDATA[这篇文章是关于我第一次个人的全栈项目 - littleSharing 的开发经历的一篇文章，主要讲述了我是如何从零自己设计、全栈编写出个人小站的。]]></description>
            <content:encoded><![CDATA[这篇文章是关于我第一次个人的全栈项目 - littleSharing 的开发经历的一篇文章，主要讲述了我是如何从零自己设计、全栈编写出个人小站的。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/18.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[如何在国内访问 Vercel 部署应用？]]></title>
            <link>https://caelum.moe/articles/access-vercel-in-china-mainland</link>
            <guid isPermaLink="false">https://caelum.moe/articles/access-vercel-in-china-mainland</guid>
            <pubDate>Wed, 31 Jan 2024 03:32:59 GMT</pubDate>
            <description><![CDATA[本文主要是为了解决使用 Vercel 部署项目后无法正常访问的问题。]]></description>
            <content:encoded><![CDATA[本文主要是为了解决使用 Vercel 部署项目后无法正常访问的问题。]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/13.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[RxJS 与 Observable]]></title>
            <link>https://caelum.moe/articles/rxjs</link>
            <guid isPermaLink="false">https://caelum.moe/articles/rxjs</guid>
            <pubDate>Fri, 01 Dec 2023 03:50:31 GMT</pubDate>
            <description><![CDATA[RxJS 是什么？Observable 是什么？如何使用 RxJS 优雅的实现用户输入搜索功能？]]></description>
            <content:encoded><![CDATA[RxJS 是什么？Observable 是什么？如何使用 RxJS 优雅的实现用户输入搜索功能？]]></content:encoded>
            <enclosure url="https://blog-r2.caelum.moe/covers/1.webp" length="0" type="image/webp"/>
        </item>
    </channel>
</rss>