[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-frontend-monitoring-basics-zh-CN":3,"blog-adjacent-frontend-monitoring-basics-zh-CN":29,"blog-related-frontend-monitoring-basics-zh-CN":64},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":28},35,"frontend-monitoring-basics","前端监控：等白屏了才知道","用户不会告诉你页面打不开，他们只会离开。前端监控应该在上线前就位。","\u003Cp>我们曾经有一次上线后接到客户电话，说系统打不开。检查发现是一个第三方脚本加载失败，导致整个页面白屏。问题是，这个错误已经发生了六个小时，我们毫不知情。\u003C\u002Fp>\n\u003Ch2>至少采集四类信息\u003C\u002Fh2>\n\u003Cp>页面错误：JavaScript 异常、资源加载失败、接口报错，记录页面路径和浏览器版本。\u003C\u002Fp>\n\u003Cp>性能指标：首屏时间、接口平均耗时，按版本和地区分组，便于发现劣化。\u003C\u002Fp>\n\u003Cp>用户行为：关键路径的点击与跳转，用来还原错误发生前的操作。\u003C\u002Fp>\n\u003Cp>环境信息：网络类型、屏幕尺寸、是否启用广告拦截插件。\u003C\u002Fp>\n\u003Ch2>落地建议\u003C\u002Fh2>\n\u003Cp>优先接入现成方案，小团队自建监控的成本远高于预期。\u003C\u002Fp>\n\u003Cp>设置告警阈值，比如五分钟内同类型错误超过二十次就推送到群里，而不是等日报。\u003C\u002Fp>\n\u003Cp>每次线上问题处理后补一条监控规则，避免同类问题再次静默发生。\u003C\u002Fp>\n\u003Cp>监控的价值不在于报表好看，而在于把“用户发现问题”变成“团队先发现问题”。\u003C\u002Fp>","","slate","佳益方圆团队","2026-08-18T14:05:00+08:00",1,false,[16,17,18],"前端","监控","运维",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},0,"engineering","技术专栏","架构设计、性能优化、AI 集成与跨端方案等一线技术实践，由研发团队持续分享。","cpu","blue","article",60,{},{"previous":30,"next":47},{"id":31,"slug":32,"title":33,"excerpt":34,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":35,"updatedAt":35,"readingMinutes":13,"featured":14,"tags":36,"category":40},14,"partnership-exit-clause","合伙人之间先说清退出机制","股权、分工和退出方式，最好在公司还小、关系还好的时候写清楚。","2026-08-20T13:52:00+08:00",[37,38,39],"创业","合伙人","股权",{"id":41,"parentId":20,"slug":42,"name":43,"description":44,"icon":45,"cover":9,"tone":25,"kind":26,"sortOrder":46,"count":20},6,"founder-notes","创业手记","创始团队在经营、管理与产品上的思考，记录一家软件公司的成长过程。","pen-tool",10,{"id":48,"slug":49,"title":50,"excerpt":51,"content":9,"cover":9,"tone":25,"author":11,"publishedAt":52,"updatedAt":52,"readingMinutes":13,"featured":14,"tags":53,"category":57},55,"empty-states-in-b2b","B 端产品的空状态","用户第一次进入系统时看到的不是功能，而是一片空白。空状态决定了他们能否开始。","2026-08-16T14:05:00+08:00",[54,55,56],"B 端","体验","空状态",{"id":58,"parentId":20,"slug":59,"name":60,"description":61,"icon":62,"cover":9,"tone":25,"kind":26,"sortOrder":63,"count":20},2,"product-thinking","产品思维","需求分析、用户体验与产品设计方法论，以及从业务问题到产品方案的思考过程。","lightbulb",50,[65,77,88],{"id":66,"slug":67,"title":68,"excerpt":69,"content":9,"cover":9,"tone":70,"author":11,"publishedAt":71,"updatedAt":71,"readingMinutes":13,"featured":14,"tags":72,"category":76},30,"integration-api-pitfalls","企业系统集成：接口对接最容易踩的五个坑","接口文档写得再全，真正对接时仍然会卡在字段约定、超时和重复推送这些细节上。","cyan","2026-10-17T09:00:00+08:00",[73,74,75],"系统集成","接口","工程实践",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":13,"slug":78,"title":79,"excerpt":80,"content":9,"cover":9,"tone":70,"author":11,"publishedAt":81,"updatedAt":82,"readingMinutes":58,"featured":83,"tags":84,"category":87},"why-enterprise-systems-age","为什么企业系统会在三年后开始“老化”","系统上线时功能齐全，三年后却处处别扭。问题往往不在代码，而在交付时被忽略的那些变化。","2026-10-16T09:30:00+08:00","2026-10-18T15:58:14.648+08:00",true,[85,86],"系统演进","架构设计",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":89,"slug":90,"title":91,"excerpt":92,"content":9,"cover":9,"tone":25,"author":11,"publishedAt":93,"updatedAt":93,"readingMinutes":13,"featured":14,"tags":94,"category":98},31,"idempotent-design-basics","幂等设计：重复提交不只是用户手抖","网络重试、消息重投、用户连点，都会让同一个请求到达多次。幂等应该设计在接口里。","2026-10-05T10:13:00+08:00",[95,96,97],"接口设计","幂等","可靠性",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20}]