koa洋葱结构解析

文章通过分析 Koa 源码,深入探讨了其核心的洋葱模型中间件执行机制。重点解析了 `koa-compose` 库如何利用递归和 Promise 实现中间件的顺序与逆序执行,解释了输出 1,3,4,2 的底层原理。

[javaScript]ES2023 引入非破坏性方法

ES2023 为 JavaScript 数组引入了 toReversed、toSorted、toSpliced 和 with 方法,这些非破坏性方法在保持原数组不变的同时,提供与 reverse、sort、splice 等传统方法相同的功能,旨在简化不可变数据操作并提升代码可读性。

使用jsx来编写模板

文章探讨了传统模板引擎在语法提示、类型检查和学习成本上的不足,并提出了使用 JSX 作为替代方案。通过 preact-render-to-string 库将 JSX 转换为字符串,结合 TypeScript 和构建工具如 webpack,实现在 Node.js 环境中编写类型安全且开发体验更优的模板。

hook下如何书写发布订阅

本文探讨在 Vue 中基于 ahooks 思路,通过重构 EventEmitter 类实现一个支持自动清理的 useEventEmitter Hook,以简化组件间发布订阅模式,避免手动管理依赖和卸载。

monorepo 如何解决别名问题

在 pnpm monorepo 架构中,TypeScript 项目常因路径别名问题导致导入时包含冗余的 `src` 目录。本文探讨如何利用 Node.js 的 `exports` 字段,通过配置子路径映射来简化导入路径,并解决相关的 TypeScript 类型定义和模块解析问题。

TypeScript 类型收窄

文章从开发异步队列库时遇到的实际类型推导问题切入,系统性地探讨了 TypeScript 中的类型收窄机制。详细介绍了 typeof 守卫、条件语句、相等运算符、in 运算符、instanceof、赋值、类型谓词以及联合类型在接口中的应用,并通过示例展示了如何利用这些技术优化代码的类型安全性和可维护性。

nginx 极简入门

文章以 nginx 的核心功能——反向代理和负载均衡为切入点,通过配置示例和对比开发工具(如 Vite)中的代理设置,阐释了其工作原理与实现细节,并提供了常见命令参考。

.gitattributes 正确使用姿势

本文通过一个实际案例,探讨了 .gitattributes 文件在 Git 项目中如何正确配置以统一行尾序列,避免二进制文件损坏。文章分析了前置后添加与全局后添加两种策略,并提供了迁移和兼容性指南,适合工程师优化项目配置。

yarn.lock 引发的血案

文章通过一个由 yarn.lock 文件缺失引发的实际 bug,深入探讨了 Node.js 包管理中 lock 文件的作用。它分析了 npm 从嵌套依赖到扁平化安装的演进,解释了依赖不确定性问题的根源,并对比了 yarn、npm 和 pnpm 的解决方案,包括软链接等优化策略。

vite 源码解析之 create-vite

本文深入剖析 Vite 官方脚手架 `create-vite` 的源码实现,聚焦于其如何通过 minimist 解析命令行参数、prompts 实现交互式问答以及 kolorist 优化终端输出,来构建一个高效、用户友好的项目初始化流程。