技术博客文章
Vue 3 响应式原理实战:用 Proxy 手写迷你 reactive 理解依赖收集
为什么值得手写一遍 平时用 ref 和 reactive 很顺手,但遇到"改了值视图不更新"时,光看文档很难定位。Vue 3 的响应式核心是 Proxy 加依赖收集,把它简化成几十行自己写一遍,很多坑就自然想通了。 核心三件套 用一个 W...
Rust 用 sea-orm 做类型安全 ORM:实体定义、关联查询与数据库迁移
为什么选 sea-orm diesel 是编译期 DSL 的标杆,但它偏同步、写法重。sea-orm 是异步优先、derive 驱动的 ORM,底层基于 sqlx,天然契合 tokio 生态,实体用属性宏生成,字段类型在编译期就锁死。 用...
React 用 Suspense 与 use() 做组件级数据请求:把异步资源写在组件里
为什么把数据请求写进组件 过去的习惯是把请求放在父组件的 useEffect 里,再用 props 往下传。问题是加载状态散落在各处,子组件想单独取数就得一层层 prop drilling。React 19 的 use() 配合 Suspe...
Laravel 用 spatie/laravel-permission 落地 RBAC:角色授权、权限缓存与中间件守门
为什么不用 Policy/Gate 直接硬写 Gate 和 Policy 适合"某个用户可以删这篇帖子"这类点对点判断。当系统出现 admin、editor、viewer 多个角色,每个角色挂一堆权限时,再手写就容易散。spatie/lar...
Go 容器化实战:多阶段 Dockerfile 把服务压成 15MB 安全镜像
为什么 Go 服务容易被打包成巨无霸镜像 Go 编译出来是零依赖的单文件二进制,但很多人直接用 golang 官方镜像作为运行环境,结果一个 hello world 服务镜像轻松破 1GB,还带着编译器和源码,既占空间又有攻击面。多阶段构建...
Laravel 用 Telescope 做开发期调试:请求、查询、异常与队列一目了然
本地调试靠 dump 太慢 排查慢接口时,光看代码很难发现是哪条 SQL 没走索引、哪个队列任务悄悄失败。Telescope 是 Laravel 官方调试面板,把最近的请求、命令、队列、异常、模型变更全部记录下来,点开就能看到完整上下文。 ...
Rust 用 redis-rs 接入 Redis:连接池、管道与发布订阅
sync 还是 async redis-rs 提供同步客户端(redis 默认特性)和异步客户端(启用 tokio-comp 特性)。纯计算或命令行工具用同步;在 Axum/tokio 服务里必须开 async 特性,否则会阻塞事件循环。 ...
Go 用 cobra 构建企业级 CLI:子命令、flag 绑定与配置加载
为什么手写 flag 不够 小工具用标准库 flag 包够用,但一旦要支持子命令(如 app serve / app migrate)、全局与局部 flag、自动 help 与补全,就得上 cobra。它是 Kubernetes、Hugo ...
Vue 3 用 Web Worker 处理大文件解析:把卡顿的主线程解放出来
主线程为什么会被卡住 前端解析几 MB 的 CSV、做图片像素处理、跑复杂计算时,这些同步代码会占满主线程,页面点击没反应、动画掉帧。Web Worker 能在另一条线程跑脚本,算完把结果 postMessage 回主线程,UI 始终保持响...
React 声明式动画实战:用 Framer Motion 接管进场、列表与手势
为什么不直接写 CSS 动画 项目里弹窗、列表、卡片经常需要进场和退场动画。手写 CSS keyframes 要维护 class、监听 transitionend,列表项增删时还要自己算位置。Framer Motion 把这些变成声明式的 ...
