技术博客文章

Vue 3 响应式进阶:watch 与 watchEffect 的触发时机、深度监听与性能取舍

两种副作用 API 的区别 Vue 3 的 Composition API 提供 watch 和 watchEffect 两种侦听手段。核心差别在于:watch 需要你显式写出要监听的源,回调只在源变化时触发;watchEffect 则在函...

技术test12026-09-279

Rust 用 diesel 构建类型安全的数据访问层

diesel 的定位 sqlx 是运行时校验 SQL,diesel 则把表结构编译进类型系统:字段名、列类型、插入与查询都在编译期检查,拼错列名或类型不匹配会直接编译失败。它生成的 SQL 可控、零额外运行时反射,适合对性能与正确性都有要求...

技术test12026-09-2710

React Router 实战:嵌套路由、动态参数与导航守卫

为什么需要路由层 单页应用里所有视图其实都来自同一个 HTML 入口,真正区分页面的是 URL。React Router 把 URL 映射到组件树,让浏览器前进、后退、刷新都能精确还原当前界面,同时支持数据预取与权限拦截。下面用 react...

技术test12026-09-279

Laravel 模型关联与预加载:用 with/load 解决 N+1 与关联写入

N+1 问题 当你查出 20 篇文章,再在循环里访问每篇的作者,ORM 会为每篇文章各发一条 SQL 查用户,总共 1+20 条查询。这种 N+1 在列表页尤其致命。Laravel 用预加载把关联一次性取出,把 N+1 压成 2 条查询。 ...

技术test12026-09-2710

Go 消息队列实战:用 asynq 基于 Redis 做异步任务、定时与重试

为什么用 asynq 当邮件发送、图片压缩、报表生成这类耗时操作被塞进 HTTP 请求里,接口就会变慢甚至超时。asynq 是一个基于 Redis 的轻量任务队列,它用 List 存待处理任务、用 ZSet 存延迟与定时任务,提供入队、定时...

技术test12026-09-2710

Vue 3 异步组件:用 defineAsyncComponent 配合 Suspense 做路由级懒加载

为什么做组件级懒加载 把首屏不需要的图表、编辑器、富文本等大组件直接静态导入,会让主包体积膨胀,拖慢首次可交互时间。Vue 3 提供的 defineAsyncComponent 可以把组件改成动态导入,配合打包工具自动拆出独立 chunk,...

技术test12026-09-2611

Rust 迭代器与闭包实战:用 filter/map/fold 替代手写循环

迭代器的惰性求值 Rust 的迭代器是惰性的:iter()、filter、map 这类适配器只是描述计算过程,不立即执行,直到遇到 collect、sum、fold 等消费型方法才真正跑数据。这让你可以把多个变换串成一条流水线,且零额外分配...

技术test12026-09-269

React Portal 实战:用 createPortal 把弹窗渲染到 body 脱离父级裁剪

为什么需要 Portal 在 React 里,组件返回的 JSX 默认会挂到父组件的 DOM 树里。当弹窗、Toast、下拉菜单被放在一个设置了 overflow: hidden 或 position: relative 的容器内部时,子元...

技术test12026-09-267

Laravel 用 Sanctum 做 SPA 鉴权:令牌签发、多 guard 与前端配合

Sanctum 的两种模式 Sanctum 同时支持"令牌(token)"和"会话(session cookie)"两套机制。SPA 与第一方前端走的是会话模式:前端和 API 同域(或配好 CORS),登录后由后端下发 CSRF cook...

技术test12026-09-267

Go 用 GORM 做 CRUD 实战:模型定义、关联预加载与钩子

连接数据库与模型定义 GORM 是 Go 里最主流的 ORM,用结构体标签描述表结构,AutoMigrate 可以自动建表或增量加字段。下面用一个用户和订单的场景演示。 type User struct { ID ui...

技术test12026-09-267