全栈工程化

CSS 和 JS 拆包节奏不一致,首屏要么缺样式要么带着整张冗余表,怎么用构建配置对齐两边的分割点

拆包节奏不一致源于 CSS 分割由 JS 引用被动决定,而 JS 分割由路由主动控制。解决核心是显式化 CSS 边界:让样式与 JS 同 chunk 边界,或将首屏关键样式提升为独立入口。提供三种对齐策略:CSS 跟随 JS 分割点、首屏样式独立入口、运行时注入兜底,并建议组合使用。

全栈工程化

Nx 和 Turborepo 的缓存与依赖图,谁能让 monorepo 前端 CI 只构建你改过的那几个包

Nx 与 Turborepo 在缓存和依赖图方面路线不同:Turborepo 以内容哈希和任务拓扑实现极简,Nx 则通过分布式缓存、可插拔哈希输入和项目图 API 构建平台级能力。文章从缓存命中、依赖图、CI 集成和选型建议四方面对比,指出小团队适合 Turborepo,大团队或复杂场景下 Nx 长期收益更高。

全栈工程化

多人共用仓库时,我们定了一套分支命名和权限规则,误删保护分支的事再没发生过

多人共用仓库时,误删或强推 `main`、`release` 等关键分支是最大风险。解决方案核心为:用命名前缀区分分支用途与责任人,并通过 GitLab 保护规则和 CODEOWNERS 将写权限收口。具体包括 `main` 完全锁定、`release/*` 仅走 MR、`feature/*` 限制删除、`exp/*` 提供安全试验空间,同时配合 CI 分支名校验、镜像备份和审计日志实现快速恢复。

全栈工程化

你的 Tree shaking 在生产环境不生效,可能不是工具的问题,而是 sideEffects 没写对

`sideEffects` 字段配置不当是生产环境 tree shaking 失效的主因,而非打包工具本身。未设置或设为 `true` 会让工具保守保留所有代码;设为 `false` 可安全删除未使用导出,但需注意全局 CSS 和 polyfill 等有副作用文件需用数组单独列出,且 glob 路径要覆盖子目录。组件库若使用 CommonJS 或动态导出结构会破坏静态分析,导致 tree shaking 失效。验证时应直接检查产物内容或使用 `optimizationBailout` 定位原因,而非仅看构建日志。

全栈工程化

大促前手动改资源配额太蠢了,我给 Helm Chart 加了一层环境感知模板让 limits 自动适配

资源配额不应写死在 values.yaml,而应作为环境上下文与业务策略的函数。通过三层适配——环境基线合并、大促时间窗口或开关切换、结合 HPA minReplicas 动态推导——实现 limits 和 requests 自动调整,并将最终配额暴露到监控面板,避免手动改配带来的风险和成本浪费。

全栈工程化

把日志从文件切到标准输出后,Fluentd 和 Filebeat 在 10w QPS 下的丢包率差了一个数量级

容器 stdout 日志采集的性能瓶颈在缓冲设计而非解析速度。实测 10w QPS 下 Fluentd 丢包率 0.3%,Filebeat 默认配置达 2.8%,差距源于两者缓冲模型不同:Fluentd 用 8MB chunk 内存队列,Filebeat 默认仅 4096 events。调大 Filebeat 队列至 131072 后反超至 0.19%。生产建议:低速率用 Filebeat,高吞吐走 Fluentd 直连并设内存上限。

全栈工程化

hotfix 合入 release 分支后,用什么流程保证补丁不漏合到 develop 分支也不被重复合并

补丁漏合到 develop 的根源在于流程缺乏强制约束。核心是将合入顺序和基线对齐固化为硬性规则:hotfix 先合 release 再合 develop,必须用 merge 而非 cherry-pick,以保留原始 commit hash 供 Git 自动去重。配合 CI 自动化校验合入状态、检测重复提交,并规范多 release 分支的从老到新合入顺序,可有效防止漏合与重复合并。

全栈工程化

Module Federation 共享库版本不一致时,别只靠沟通,试试在构建阶段就把冲突拦下来

构建期强制校验是解决 Module Federation 多团队共享依赖版本漂移的唯一可靠手段。通过自定义 Webpack 插件提取构建产物中实际解析的共享依赖版本,生成 manifest 文件,并在 CI 中与基准版本自动比对,对 singleton 依赖要求完全一致,对非 singleton 依赖校验版本范围,从而将版本冲突拦截在合入代码之前,避免线上多实例运行导致的隐蔽故障。

全栈工程化

有状态服务容器化后,local volume、hostPath、CSI 三种持久化方案在数据迁移时各会踩到什么坑

三种方案中,local volume 迁移受 PV 的 nodeAffinity 硬绑定限制,需停服复制数据并重建 PV;hostPath 无生命周期管理、路径无记录、权限易错,迁移本质是重构部署;CSI 机制完善但快照跨集群不可移植、拓扑标签和驱动版本易引发兼容问题。迁移前应设 Retain 策略,优先文件系统级工具配合应用一致性控制。