技术博客文章
Laravel 用 Livewire 写全栈组件:服务端渲染加增量更新,少写前端胶水
Livewire 解决什么问题 想做一个带交互的页面,传统做法是前端写组件、后端写 API、再 glue 一遍。Livewire 让你只写一个 PHP 类加一段 Blade,交互由服务端渲染、前端只做增量更新,省掉大量胶水代码。 安装与创...
Rust 用 cargo workspace 搭多 crate 工程:共享依赖、按需编译与统一发布
什么时候用 workspace 当项目拆成多个互相依赖的 crate(比如一个核心库加多个命令行工具或微服务),把它们放进同一个 workspace 可以共享依赖版本、统一编译缓存、一次性 cargo build。下面是一套典型结构。 根...
Go 用 OpenTelemetry 打通分布式追踪:从 span 链路到采样策略
为什么需要分布式追踪 一个请求穿过网关、多个服务和数据库,光看各服务的日志很难还原完整路径。分布式追踪把一次请求标记成一条 trace,里面每个环节是一个 span,串起来就能看到耗时都花在哪。 初始化 Tracer 用 OTLP 把数据...
Vue 3 + Vite 做 PWA:用 vite-plugin-pwa 实现离线缓存与可安装
为什么是 PWA 把 Web 应用做成 PWA 后,用户可以把站点"安装"到桌面,离线也能打开最近访问过的页面,体验更接近原生。Vite 生态里 vite-plugin-pwa 把 Workbox 封装好了,配置成本低。 安装与基础配置 ...
React 实战大文件分片上传:断点续传、并发切片与进度管控
为什么需要分片上传 单文件直接 PUT 上传有几个现实问题:大文件占用一条连接太久、中途断网要从头再来、进度条只能粗粒度。把文件切成固定大小的片,逐片并发上传,就能并发利用带宽、断点续传只补缺失的片、进度按片累计。下面是一套可直接落地的实现...
Laravel 接口限流实战:用 RateLimiter 防刷接口、按用户与 IP 定制配额
为什么要限流 登录、发短信、搜索这类接口被人脚本刷起来,数据库和第三方服务先扛不住。Laravel 自带 RateLimiter,底层基于缓存(默认用 Redis),能在不写额外中间件代码的情况下按 key 限频。 在路由里直接用 thr...
Vue 3 数据可视化:用 ECharts 封装一个会自适应、自动销毁的图表组件
为什么要把 ECharts 包一层 ECharts 初始化、resize、销毁都要手动管,直接在页面里 new 一坨不仅重复,还容易内存泄漏。用 Vue 3 的 ref、watch、onUnmounted 把它封成组件,数据变了自动重绘,容...
Rust 用 wasm-bindgen 把计算函数编译进浏览器:给前端补一块原生速度
什么时候把 Rust 搬进前端 前端遇到图像、加密、大量数值计算时,JS 会卡。把这部分用 Rust 写、编译成 WebAssembly,能在浏览器里跑出接近原生的速度,再借 wasm-bindgen 把函数暴露给 JS 调用。 最小工程...
Go WebSocket 实战:用 gorilla/websocket 搭一个带心跳与广播的推送服务
WebSocket 适合什么场景 HTTP 一问一答适合取数据,但聊天、行情推送、协同编辑这类"服务端主动推"的场景,用 WebSocket 更省连接。gorilla/websocket 是 Go 里最成熟的实现,下面写一个能跑的回声与广播...
React 组件测试实战:用 Vitest 与 React Testing Library 把交互固化成用例
为什么组件要写测试 组件写完能跑起来,不等于改了不会出事。React 组件把状态、事件和 DOM 绑在一起,单元测试能把这些交互固化成可回归的用例。Vitest 启动快、和 Vite 配置复用,配合 React Testing Librar...
