跳到主要内容
一介布衣
全栈开发者
查看所有作者

Go 里 struct tag、JSON 编解码的几个稳妥习惯

· 阅读需 4 分钟
一介布衣
全栈开发者

Go 标准库里的 encoding/json 已经够用了,平时做接口、配置读取、消息体解析,大多数场景都离不开它。问题在于,很多初学阶段写出来的 JSON 代码“能跑”但并不稳。真正进入接口联调或者服务之间互相调用时,字段命名、默认值、空值含义这些细节很快就会冒出来。

Go 里什么时候该用 strings.Builder,什么时候该用 bytes.Buffer

· 阅读需 4 分钟
一介布衣
全栈开发者

刚开始写 Go 的时候,遇到文本拼接最容易想到的还是 +。代码少时当然没问题,但一旦进入循环、日志拼接、模板前处理或者接口响应组装,这种写法很快就会让代码既不清晰,也不够稳妥。真正开始做一些小工具之后,我发现自己最常用的其实不是花哨技巧,而是把 strings.Builderbytes.Buffer 的边界分清楚。

Docker Compose 网络别名,能把本地联调变得更像线上

· 阅读需 2 分钟
一介布衣
全栈开发者

容器化本地开发有一个很常见的问题:服务虽然都起来了,但互相调用时用的地址特别随意。今天写死一个容器名,明天改成宿主机端口,后天又因为换了 compose 文件把连接地址全部推倒重来。结果是,本地联调环境虽然能跑,却总和线上长得不太一样。

想让 webpack 缓存真正生效,chunk 命名和依赖稳定性要一起管

· 阅读需 3 分钟
一介布衣
全栈开发者

很多项目第一次做 webpack 缓存优化,都会先把文件名改成带 hash,觉得这样浏览器就能长期缓存了。这个方向没错,但如果 chunk 划分本身不稳定、运行时代码老是跟着变化、公共依赖和业务代码混在一起,最后会发现缓存命中率并没有想象中高。

source map 不是越全越好,排查和发布环境要分开选型

· 阅读需 3 分钟
一介布衣
全栈开发者

webpack 配 source map 时,很多人最开始只有一个判断标准:能不能在浏览器里看到原始源码。可项目一大以后,你会发现 source map 其实牵连了很多事,构建速度、调试精度、错误定位、产物暴露范围,全都和它有关。选型如果只看“调试爽不爽”,很容易在发布阶段踩坑。

代码拆分要顺着路由和功能边界来,别把 import() 用成碎片化

· 阅读需 3 分钟
一介布衣
全栈开发者

webpack 开始提示包太大以后,很多人的第一反应是“那我多写几个 import() 吧”。动态导入当然是重要工具,但如果拆分点没有顺着页面路由和功能边界走,只会把一个大包拆成很多难管理的小包,首屏和切页体验未必真的更好。

做 webpack 优化前,先用 bundle report 看清到底是谁把包撑大了

· 阅读需 3 分钟
一介布衣
全栈开发者

webpack 的性能优化很容易让人一上来就陷入“经验动作”:先怀疑 UI 组件库,再怀疑图片,再想办法加几个拆包配置。可如果还没看清产物里到底是什么占了体积,这些动作大多只是碰运气。真正有效的优化,通常都从一份可读的打包分析开始。