前端工程师(跨端方向) · 广州 · 3 年经验
xuzhiyuan@example.com · 137 0000 0000 · github.com/xuzhiyuan
工作经历
某本地生活平台 · 前端开发工程师
负责商家券和外卖下单相关的小程序,三端小程序合计日活约 50 万,组内 7 人。
- 三端统一:原来微信、支付宝、抖音三端各维护一套代码,一个需求要做三遍。推动用 Taro 统一,先从新页面开始,再按访问量逐步迁移老页面,大部分需求现在只开发一次
- 包体积和启动:微信小程序主包接近 2MB 上限,新功能加不进去。按页面访问量重新划分分包,把低频页面和大体积依赖(图表、富文本)移出主包,首页依赖的分包做预下载;主包降到 1.1MB,冷启动耗时减少约 四成
- 渲染性能:商品详情页切换规格时明显卡顿,排查发现是一次
setData传了整个商品对象。改为只传变化的字段并合并高频更新,切换规格基本无卡顿 - 设备兼容:真机测试中发现部分安卓 WebView 回到前台后定位权限状态没有刷新,用户看到旧位置。监听生命周期并重新检查权限,失败时展示手动选择地址入口;和测试一起整理 12 台常见机型的回归清单
某跨境电商公司 · 前端开发实习生
- 参与商城 H5 的多语言改造,抽出文案字典并按语言包按需加载,支持 6 种语言
- 处理不同语言下文案长度差异导致的布局错乱问题,整理了多语言布局规范
- 商品详情页的价格在不同币种下格式不统一,改用
Intl.NumberFormat统一处理货币和千分位
项目经历
三端统一小程序
Taro / React / TypeScript
- 平台差异适配层:登录、支付、分享、定位四类能力在三个平台的接口和流程都不同,封装统一的适配层,业务代码不再写平台判断
- 体积监控:在 CI 中加入小程序包体积检查,主包或分包超出预算时阻止合并,并在 PR 里展示体积变化明细
- 灰度和回滚:小程序发版审核慢,关键功能加了远程开关,出问题时不用等审核就能关闭
- 弱网下单:用户从商家页跳支付时可能切到后台,回来后本地状态与服务端订单不一致。提交时带幂等订单号,支付回跳后重新查询服务端结果;对超时、重复点击、取消支付分别给出提示。试点地区相关客服咨询从每周 20 多件降到个位数
React Native 下单链路
React Native / TypeScript / FlashList / Reanimated
App 内的门店列表、商品选购和购物车三个页面用 React Native 重写,覆盖下单流程的主要环节。
- 门店列表从 ScrollView 换成 FlashList,配合固定高度的骨架行,低端安卓机上滚动掉帧明显减少
- 商品图按可视区加载并限制解码尺寸,长时间浏览后的内存占用比原来低了约三分之一,闪退率随之下降
- 加购动画用 Reanimated 跑在 UI 线程,JS 线程忙于计算价格时动画也不掉帧
跨端组件库
React Native / Taro / Storybook
- 沉淀 40 多个跨端组件(选择器、弹层、表单项、商品卡片等),三端视觉和交互保持一致
- 每个组件附 Storybook 示例和三端截图对比,组件改动自动生成截图对比,减少视觉回归问题
- 对日期选择、图片上传等系统能力差异大的组件只共用协议和数据校验,各端保留原生交互;减少了大量平台分支,适配新系统版本时也能按端定位问题
个人优势
- 三年跨端前端经验,负责本地生活平台的微信、支付宝、抖音三端小程序,合计日活约 50 万
- 推动三端代码用 Taro 统一,从新页面开始渐进迁移,现在大部分需求只开发一次
- 小程序性能有实战:重新划分分包、预下载、
setData只传变化字段,主包从接近 2MB 降到 1.1MB,冷启动减少约四成 - 熟悉三端在登录、支付、分享、定位上的差异,封装了统一适配层,业务代码不再写平台判断
- 参与 React Native 下单链路开发,处理过长列表、图片解码和低端安卓机卡顿
- 弱网和异常流程考虑得比较细:支付回跳状态不一致、重复点击、超时,分别有幂等和提示策略
- 沉淀 40 多个跨端组件,每个组件附三端截图对比,组件改动自动做视觉回归
- 熟悉 H5 与原生之间的 JSBridge 通信,处理过 WebView 生命周期、权限状态刷新等兼容问题
- 有真机回归习惯,和测试一起整理了 12 台常见机型的回归清单,不只在开发机上验证
- 在 CI 里加了小程序包体积检查,超预算阻止合并,PR 里能直接看到体积变化
- 技术栈:微信 / 支付宝 / 抖音小程序、Taro、uni-app、React Native、React、TypeScript、JSBridge