前端实战

跨端网络层写了两套就后悔了:请求拦截、缓存和错误处理怎么抽成一份跑在 iOS、Android 和 Web 上

跨端网络层复用的关键在于分层:将请求拦截链、缓存策略、错误处理等平台无关逻辑抽成共享核心,只把传输层和存储层留给各端实现。采用中间件模式替代继承,用洋葱模型组织拦截器;缓存策略与存储解耦,统一错误码映射和重试策略;传输层通过最小化接口适配,关闭平台自带缓存避免冲突。共享代码用 TypeScript 编写,通过 CI 自动同步,大幅降低维护成本。

前端实战

把 PanResponder 和 GestureHandler 的抽象对齐到一套手势模型里,我们踩过的坑和最终选型

跨端组件库需同时兼容 React Native 新旧架构,手势系统成为最大难点。PanResponder 与 Gesture Handler 在事件响应链、状态机粒度和坐标体系上存在结构性差异,无法直接对齐。最终方案以 Gesture Handler 的完整手势模型为统一抽象层,向上提供声明式 API,向下通过适配器模式模拟 PanResponder 的缺失状态与坐标补偿,在保留旧架构兼容性的同时,确保新架构下零开销直通。

前端实战

同一套设计令牌在 React Native、Flutter 和 Web 里跑出三套样式,我们踩过的坑比想象中多

设计令牌从 Figma 导出 JSON 后,在三端渲染时因平台差异产生大量样式不一致问题。颜色方面,Android 动态色彩、Flutter 色域、Web 深色模式自动反转导致色差;字号受设备像素比和系统缩放影响;间距圆角存在像素取整差异;阴影和动效因渲染引擎不同难以统一。解决方案包括在令牌中引入渲染意图标记、字号缩放限制、安全值检查、自定义贝塞尔曲线,以及建立令牌契约测试防止生成器错误。

前端实战

把平台判断从业务代码里清出去:给 Native 能力加一层可替换的注入接口

跨平台开发中,应通过接口抽象将平台特有能力封装起来,业务代码只依赖接口而非平台判断。这样能避免平台判断散落各处导致的维护灾难,实现修改隔离和可测试性。文章详细介绍了接口定义、平台实现、依赖注入策略,以及如何处理 API 差异、能力降级等问题,并强调这种架构带来的测试收益远超代码整洁本身。

前端实战

事件总线挂了半天才发现是内存泄漏——我在微前端里给事件加了命名空间和类型约束

微前端架构中,全局 EventBus 的内存泄漏常因子应用卸载时未移除事件监听导致,尤其是高频事件和闭包引用会加速内存飙升。通过命名空间实现事件归属与批量清理,结合 TypeScript 类型约束固化事件签名,可从根本上杜绝泄漏和类型错乱。文章还提供了完整落地代码及 mitt、RxJS 等替代方案,强调生命周期绑定与可验证清理的核心原则。

前端实战

微前端选型时容易忽略的构建差异:Module Federation 和 qiankun 在部署环节到底怎么取舍

Module Federation 与 qiankun 的核心差异在于部署策略。MF 采用“整体协调发布”,子应用接口变更需宿主重新构建,导致回滚需联动、CI/CD 存在构建顺序依赖;qiankun 实现真正的独立部署,子应用通过 HTML 入口完全解耦,回滚与灰度更简单,但需注意入口 HTML 与资源的版本一致性。共享依赖上,MF 的 shared 机制易引发版本协调问题,而 qiankun 的 externals 方案更可控但牺牲灵活性。两者在缓存策略、监控排障上也因构建产物结构不同而各有利弊。

前端实战

Electron 和 Web 端共用 store,主进程与渲染进程的同步方案我对比了四种

Electron 共享 store 的核心在于同步边界划分。四种方案中,渲染进程单例 store 配合 preload 桥接主进程能力是最稳妥的选择,能兼顾 Web 端兼容、性能和可维护性。其他方案分别存在 Web 端不可用、IPC 性能开销大、双向同步逻辑复杂或灵活性差等问题。推荐将 store 放在渲染进程,主进程仅作服务层,状态靠近 UI 层更易维护。

前端实战

子应用挂了别急着白屏,先把静态副本顶上去——降级策略和用户提示的几个实践细节

前端容灾的关键在于两层防护:静态副本快速顶替和用户提示给出出路。静态副本应是包含核心功能的最小可用版本,而非简单公告页,需完全自包含且体积极小。触发切换要前置监控,在用户感知卡顿前完成。用户提示需具体说明可用功能、提供可操作按钮并避免甩锅技术细节。副本维护可通过自动化构建流水线降低,且缓存策略需与主版本隔离。

前端实战

一个巨型 AngularJS 项目拆成 8 个微前端子应用,我们怎么定的拆分边界和粒度

从一次线上白屏事故出发,团队将运行9年的AngularJS单体巨兽拆分为8个微前端子应用。核心思路是从业务能力而非代码结构切入,通过变更频率、数据耦合度和团队匹配三个硬指标确定拆分边界。迁移过程遵循风险控制优先原则,并做出了允许适度冗余、路由隔离、事件总线通信等反直觉决策,最终在14个月内实现无事故迁移。