<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0">
  <channel>
    <title>许冬博客 · JS 技术分享</title>
    <link>https://blog.keepcalm.cn</link>
    <description>专注 JavaScript、HTML、CSS、Node.js 与数据库的技术分享博客</description>
    <language>zh-CN</language>
    <lastBuildDate>Fri, 23 Oct 2026 04:51:37 GMT</lastBuildDate>
    <item>
      <title>HTTP/2 与 HTTP/3：协议演进带来了什么</title>
      <link>https://blog.keepcalm.cn/posts/http2-http3-explained</link>
      <guid>https://blog.keepcalm.cn/posts/http2-http3-explained</guid>
      <pubDate>Sat, 12 Sep 2026 02:00:00 GMT</pubDate>
      <description>HTTP/1.1 的队头阻塞是什么？HTTP/2 多路复用、头部压缩，以及 HTTP/3 基于 QUIC 又解决了什么问题。</description>
    </item>
    <item>
      <title>AI 辅助编程一年实践：从代码补全到结对开发</title>
      <link>https://blog.keepcalm.cn/posts/ai-assisted-coding-workflow</link>
      <guid>https://blog.keepcalm.cn/posts/ai-assisted-coding-workflow</guid>
      <pubDate>Sat, 15 Aug 2026 02:00:00 GMT</pubDate>
      <description>用了一年 AI 编程助手后的真实体会：哪些环节效率翻倍，哪些地方差点被坑，以及如何给 AI 当好&quot;产品经理&quot;。</description>
    </item>
    <item>
      <title>ES2023 到 ES2025：已经进入日常的实用新特性</title>
      <link>https://blog.keepcalm.cn/posts/es2023-es2025-practical-features</link>
      <guid>https://blog.keepcalm.cn/posts/es2023-es2025-practical-features</guid>
      <pubDate>Sat, 18 Jul 2026 02:00:00 GMT</pubDate>
      <description>findLast、toSorted、Object.groupBy、Promise.withResolvers、Set 集合运算……盘点近三年 ES 标准里真正用得到的那些。</description>
    </item>
    <item>
      <title>CommonJS 与 ESM：模块加载原理与差异</title>
      <link>https://blog.keepcalm.cn/posts/commonjs-esm-module-loading</link>
      <guid>https://blog.keepcalm.cn/posts/commonjs-esm-module-loading</guid>
      <pubDate>Sat, 20 Jun 2026 02:00:00 GMT</pubDate>
      <description>require 和 import 到底有什么本质区别？循环依赖在两者中分别如何表现？讲清模块包装、加载时机与互操作。</description>
    </item>
    <item>
      <title>Proxy 与 Reflect：响应式系统的基石</title>
      <link>https://blog.keepcalm.cn/posts/proxy-reflect-reactivity-foundation</link>
      <guid>https://blog.keepcalm.cn/posts/proxy-reflect-reactivity-foundation</guid>
      <pubDate>Sat, 21 Mar 2026 02:00:00 GMT</pubDate>
      <description>Proxy 能拦截哪些操作？为什么处理函数里要用 Reflect 而不是直接操作 target？从陷阱方法讲到响应式实现。</description>
    </item>
    <item>
      <title>Nuxt 4 与全栈框架趋势观察</title>
      <link>https://blog.keepcalm.cn/posts/nuxt4-fullstack-framework-trends</link>
      <guid>https://blog.keepcalm.cn/posts/nuxt4-fullstack-framework-trends</guid>
      <pubDate>Sat, 22 Nov 2025 02:00:00 GMT</pubDate>
      <description>Nuxt 4 调整目录结构、强化数据层。盘点其变化，并观察 SSR/SSG/RSC/边缘渲染这几年的演进方向。</description>
    </item>
    <item>
      <title>前端也要懂 Docker：一次搞定部署环境差异</title>
      <link>https://blog.keepcalm.cn/posts/docker-for-frontend</link>
      <guid>https://blog.keepcalm.cn/posts/docker-for-frontend</guid>
      <pubDate>Sat, 18 Oct 2025 02:00:00 GMT</pubDate>
      <description>&quot;我本地好好的&quot;这句话我听过太多次了。把前端项目塞进 Docker 后，构建环境完全一致，部署变成一条命令。这篇写给没碰过 Docker 的前端同学。</description>
    </item>
    <item>
      <title>深入 V8：执行上下文、词法环境与调用栈</title>
      <link>https://blog.keepcalm.cn/posts/deep-dive-v8-execution-context</link>
      <guid>https://blog.keepcalm.cn/posts/deep-dive-v8-execution-context</guid>
      <pubDate>Sat, 20 Sep 2025 02:00:00 GMT</pubDate>
      <description>一段 JS 代码在引擎里到底经历了什么？从解析、AST、字节码讲到执行上下文、词法环境和调用栈模型。</description>
    </item>
    <item>
      <title>新视口单位 svh/dvh/lvh：移动端 100vh 的救赎</title>
      <link>https://blog.keepcalm.cn/posts/new-viewport-units-svh-dvh</link>
      <guid>https://blog.keepcalm.cn/posts/new-viewport-units-svh-dvh</guid>
      <pubDate>Sat, 16 Aug 2025 02:00:00 GMT</pubDate>
      <description>移动端 Safari 上 100vh 一直被地址栏坑，老方案是 JS 算 --vh 变量。现在 CSS 原生给出了答案：svh、dvh、lvh 三兄弟。这篇讲清它们的区别和迁移策略。</description>
    </item>
    <item>
      <title>Vite 6 与构建工具的下一步</title>
      <link>https://blog.keepcalm.cn/posts/vite6-and-build-tools-future</link>
      <guid>https://blog.keepcalm.cn/posts/vite6-and-build-tools-future</guid>
      <pubDate>Sat, 21 Jun 2025 02:00:00 GMT</pubDate>
      <description>Vite 6 带来 Environment API，为开发环境多目标构建打基础。梳理版本演进、核心新特性与 Rollup 4 生态。</description>
    </item>
    <item>
      <title>现代 CSS 三件套：:has()、容器查询与原生嵌套</title>
      <link>https://blog.keepcalm.cn/posts/modern-css-has-container-nesting</link>
      <guid>https://blog.keepcalm.cn/posts/modern-css-has-container-nesting</guid>
      <pubDate>Sat, 17 May 2025 02:00:00 GMT</pubDate>
      <description>:has() 让 CSS 第一次能&quot;选中父元素&quot;，容器查询让组件按自身宽度响应式，原生嵌套让预处理器不再是必需品。</description>
    </item>
    <item>
      <title>MongoDB 聚合管道：从 find 到 Aggregation</title>
      <link>https://blog.keepcalm.cn/posts/mongodb-aggregation-pipeline</link>
      <guid>https://blog.keepcalm.cn/posts/mongodb-aggregation-pipeline</guid>
      <pubDate>Sat, 19 Apr 2025 02:00:00 GMT</pubDate>
      <description>复杂统计 find 已经力不从心。介绍 aggregate 管道思想与 $match/$group/$lookup 等常用阶段，附实战示例。</description>
    </item>
    <item>
      <title>Vue 3.5 响应式系统优化解读</title>
      <link>https://blog.keepcalm.cn/posts/vue3-5-reactivity-optimization</link>
      <guid>https://blog.keepcalm.cn/posts/vue3-5-reactivity-optimization</guid>
      <pubDate>Sat, 22 Feb 2025 02:00:00 GMT</pubDate>
      <description>官方称内存降低 56%、大型列表更新提速。梳理 3.5 响应式重构的三个关键变化及其背后的设计权衡。</description>
    </item>
    <item>
      <title>Node.js 22/23 新特性盘点：原生技能树又点亮了不少</title>
      <link>https://blog.keepcalm.cn/posts/nodejs-22-23-new-features</link>
      <guid>https://blog.keepcalm.cn/posts/nodejs-22-23-new-features</guid>
      <pubDate>Sat, 18 Jan 2025 02:00:00 GMT</pubDate>
      <description>Node 22 成了新的 LTS，带来了原生 WebSocket、内置 SQLite、require ESM 等硬货。盘点这两个版本里我认为前端最该知道的特性，有些真的可以删掉依赖了。</description>
    </item>
    <item>
      <title>2024 Vue 生态年度盘点：Vapor Mode 与新动向</title>
      <link>https://blog.keepcalm.cn/posts/vue-ecosystem-2024-vapor-mode</link>
      <guid>https://blog.keepcalm.cn/posts/vue-ecosystem-2024-vapor-mode</guid>
      <pubDate>Sat, 21 Dec 2024 02:00:00 GMT</pubDate>
      <description>年底盘点 Vue 生态：Vapor Mode 无虚拟 DOM 策略、Vue 3.4/3.5、Nuxt 4、语言工具与社区趋势观察。</description>
    </item>
    <item>
      <title>customRef 实战：手写一个防抖输入框</title>
      <link>https://blog.keepcalm.cn/posts/customref-debounced-input</link>
      <guid>https://blog.keepcalm.cn/posts/customref-debounced-input</guid>
      <pubDate>Sat, 16 Nov 2024 02:00:00 GMT</pubDate>
      <description>ref 只能&quot;改了就触发&quot;，但防抖搜索框要的是&quot;改完停一会再触发&quot;。Vue 3 的 customRef 把 get/set 的控制权交给你，这篇用它从零实现一个 v-model 可用的防抖 ref。</description>
    </item>
    <item>
      <title>GitHub Actions 实战：CI/CD 流水线从零搭建</title>
      <link>https://blog.keepcalm.cn/posts/github-actions-cicd-guide</link>
      <guid>https://blog.keepcalm.cn/posts/github-actions-cicd-guide</guid>
      <pubDate>Sat, 19 Oct 2024 02:00:00 GMT</pubDate>
      <description>push 代码后自动 lint、测试、构建、部署是怎么配置的？从 workflow 语法讲到 Node 项目完整流水线与缓存优化。</description>
    </item>
    <item>
      <title>Cookie、Session、Token 与 JWT：鉴权方案选型</title>
      <link>https://blog.keepcalm.cn/posts/cookie-session-token-jwt</link>
      <guid>https://blog.keepcalm.cn/posts/cookie-session-token-jwt</guid>
      <pubDate>Sat, 17 Aug 2024 02:00:00 GMT</pubDate>
      <description>登录状态到底存在哪里？JWT 为什么不能随便用？梳理四种鉴权机制的原理、存储位置与安全实践。</description>
    </item>
    <item>
      <title>Performance API：别再拿 Date.now() 测性能了</title>
      <link>https://blog.keepcalm.cn/posts/performance-api-measure</link>
      <guid>https://blog.keepcalm.cn/posts/performance-api-measure</guid>
      <pubDate>Sat, 20 Jul 2024 02:00:00 GMT</pubDate>
      <description>性能测量的正确姿势不是 Date.now() 做减法——精度只有毫秒还受系统时钟影响。Performance API 提供微秒级精度、标准化的打点标记和完整的资源耗时数据。</description>
    </item>
    <item>
      <title>缓存穿透、击穿与雪崩：Redis 高可用三兄弟</title>
      <link>https://blog.keepcalm.cn/posts/redis-penetration-breakdown-avalanche</link>
      <guid>https://blog.keepcalm.cn/posts/redis-penetration-breakdown-avalanche</guid>
      <pubDate>Sat, 22 Jun 2024 02:00:00 GMT</pubDate>
      <description>大促时缓存层挂了数据库怎么办？区分三种缓存异常，分别给出空值缓存、互斥锁、随机过期等方案。</description>
    </item>
  </channel>
</rss>