关于我

我是 Eric,本名崔本勇,网名玄一。9 年前端与跨端开发,其中 8 年在做 React Native,10 年 JavaScript。

我的工作长期集中在一个问题上:怎么让一套代码可靠地跑在多个端上。为此做过跨平台框架的编译层、RN 的拆包与增量更新、小程序容器的渲染方案、以及配套的调试工具链。这个博客里的文章基本都来自这些工作中踩过的坑,不是教程搬运。

我主要在做什么

跨端框架设计。 主导过 Ray(React)跨平台方案的整体架构,用 Babel 插件 + AST 解析实现 Ray→RN 的代码转换,配套的跨端设备控制组件库在业务里应用率超过 95%。相关的开发文档由我编写维护,公开可查:Ray 小程序官方文档

RN 工程化。 做过 RN 0.59.10 → 0.72.5 的大版本升级(中间层 + 代码转换脚本处理兼容问题),也做过 0.46 → 0.61。拆包架构、按需加载、增量更新、CI/CD 对接都是自己搭的。鸿蒙适配用的是 node + jscodeshift + AST + Docker 的实时转换方案,避免维护两套代码。

性能与稳定性。 用 bsdiff 做业务包增量更新,带宽占用降了 95% 以上;优化拆包方案把业务崩溃率降了 50%;脚本预加载把启动从 2s 压到 200–300ms。异常监控平台按 JS / Native / 渲染三类分别设计捕获策略,上报后自动匹配 sourcemap 再 webhook 给对应开发。

AI 辅助开发。 用 Agent + MCP + 知识库做过 RN 转小程序的工具,把重构任务的人工介入率从 100% 降到 30%。也做过跑在 CI 上的 AI 代码 Review 工作流。

技术栈

技术栈 经验年限 核心能力
JavaScript / TypeScript 10 年 语言基础、ES6+、Node.js
React Native 8 年 架构设计、原生组件、热更新、双线程、全局挂载、增量更新
React 5 年 Hooks、状态管理、组件设计、性能优化
小程序 4 年 自研框架、Ray 框架、Taro

工具链:Webpack、Metro、Babel、ESBuild、ESLint、Prettier、GitHub Actions、Docker、Podman
状态管理:React-Redux、React Hooks、jotai
跨端:RN(iOS / Android / 鸿蒙)、小程序、Electron、js bridge、双树渲染、异层渲染
移动原生:Objective-C、Swift(2 年,可独立开发原生组件)、Java(2 年,AAR 封装)
其他:Node.js(3 年)、Vue、Electron、AI Agent、PHP(2 年)

工作经历

杭州涂鸦信息技术有限公司 · 跨端技术专家

2021.06 – 2025.09

Ray 跨平台框架研发

  • 主导 Ray(React)跨平台开发方案的整体架构设计
  • 用 Babel 插件、AST 解析技术实现 Ray→RN 代码转换
  • 设计跨端设备控制公共组件库,业务应用率 95%+
  • 编写维护开发文档、API 文档与最佳实践指南

开发工具链

  • 自研小程序 IDE 设备调试工具(Electron),worker(node) + view(react) 分层,调试效率提升 50%+
    • 多设备调试:基于 MQTT + AES 加解密与设备实时通信
    • 多设备切换:同步 App 设备列表,支持快速切换
    • 多协议连接:Zigbee、SigMesh、BLE
  • 建设设备插件市场,上线十几款插件
  • 小程序真机调试:基于 MQTT,支持广域网与局域网双模式
  • 小程序容器:参与设计实现基于 WebView 的跨端方案,双树渲染提升渲染性能,异层渲染实现原生组件与小程序组件无缝集成

RN 框架优化与升级

  • 主导 RN 0.59.10 → 0.72.5 大版本升级,中间层 + 代码转换脚本处理版本兼容
  • 实现 RN 拆包架构,支持按需加载与增量更新,客户端预加载,CI/CD 对接与维护
  • 鸿蒙适配:node + jscodeshift + AST + Docker 实时转换,支持双版本 RN 业务同时调试
  • 全局弹窗挂载方案,动态拆包注入现有 RN 项目,兼容 0.51 / 0.59 / 0.72 三个版本

AI 工具

  • Agent + MCP + 知识库实现 RN 转小程序工具,人工介入率 100% → 30%
  • 与 RN 组件库匹配的 Ray 组件库,业务利用率 80%+
  • AI 代码 Review 工作流,CI 构建时审查并发送报告

结果:提供了一套代码多运行环境的完整方案;多个业务首屏渲染性能提升 30%;小程序开发脱离真机调试依赖;旧业务鸿蒙化避免双代码维护。

杭州萤石网络有限公司 · RN 高级工程师

2018.03 – 2021.06

多产品线 RN 框架

  • 覆盖萤石云视频、萤享云视频、海康互联、EZVIZ 等系列 App
  • 将 RN 框架封装为动态库、AAR 包简化原生接入,构建时间降低 20%
  • 热更新做到 5 分钟内发布上线,增量更新降低带宽占用
  • 灰度支持手机号、账号、邮箱、地区等维度
  • 封装原生组件为 RN 组件:IPC 视频流、视频通话、音视频通话、推流、地图、鹰眼定位

性能优化

  • bsdiff 算法实现业务包增量更新,带宽占用降低 95%+
  • 优化 RN 拆包方案,业务崩溃率降低 50%
  • 脚本预加载方案,启动从 2s 提升到 200–300ms
  • 多模式包加载策略:App 内置包(重点业务)、动态全量包(非核心业务)、动态增量包(Top 10 版本)、合并失败时降级全量、依赖自加载避免多版本冲突、module 动态清理与重载实现无感更新
  • 异常监控平台:JS 全局捕获 / Native 原生捕获 / 渲染层捕获三类策略,自动匹配 sourcemap 后 webhook 通知
  • 双线程处理:用 RN registerRunnable 把复杂任务拆到后台,避免阻塞主线程
  • WebView 跨端交互:js bridge 双向通信,支持复杂数据结构,统一事件处理机制

团队:负责增值服务前端团队日常管理、技术指导与项目交付。

结果:RN 0.46 → 0.61 升级;构建时间降低 20%,用户下载时间缩短 30%;连续 3 年绩效前 10%,职级提升两次。

杭州有问科技有限公司 · iOS / RN 工程师

2017.02 – 2018.02

  • Swift / Objective-C 开发有问 App iOS 端
  • 集成网易云信 SDK 实现 IM,并封装为 RN 组件
  • 主导整个 App 的 RN 化重构
  • WebRTC 实现云上视频/音频发布会功能

青岛云商汇电子商务有限公司 · 全栈工程师

2015.12 – 2017.01

  • 后端 PHP + MySQL,前端 jQuery,移动端 iOS(OC) + Android(Java)
  • 项目:小皇图后台、汇了金融直播、全民猎 RN、微民爱心筹

教育背景

山东科技大学 软件工程 本科,2012.09 – 2016.06。英语 CET-6。

关于这个博客

站里的内容大致分五块:CSS 布局JavaScript 核心机制React 原理与实践Vue 全家桶AI 编程工具

早期文章是工作笔记,写得比较简略;2024 年之后的篇目会标注最后更新时间和所依据的版本。如果你发现哪篇过时了或者写错了,欢迎邮件告诉我。