从裸辞到重返战场:我的跨平台框架选择实战复盘
去年十月的一个雨夜,我坐在杭州滨江那套45平小公寓的飘窗上,看着窗外钱塘江对岸闪烁的霓虹,手里攥着刚还完的房贷账单——每月6328元,一分都不能少。
那时我已经裸辞整整三个月了。离开前东家(某一线大厂)的理由听起来很体面:“想休息一下,调整状态”。但只有我自己知道,真正的原因是连续半年每天工作14小时、凌晨三点还在改UI适配问题、以及体检报告上那一串加粗的“异常”指标。老婆当时说:“要不先歇半年?房子刚买,但不至于饿死。”我点点头,心里却慌得一批。
Gap期前两个月还算潇洒:打游戏、健身、陪老婆逛宜家。但到了第三个月,焦虑像梅雨天的霉斑一样悄悄爬上来。简历投出去石沉大海,面试官问得最多的是:“为什么空窗这么久?”更扎心的是,技术栈好像一夜之间全变了——React Native 被 Flutter 吊打?Electron 已死?Tauri 是什么新物种?
我意识到,如果再不系统梳理一下跨平台开发的现状,可能真的要被市场淘汰了。
实战经验:三个项目,三种痛
重新找工作前,我决定用实战逼自己一把。正好有个朋友在创业,缺个能快速出活的全栈,月薪不高(15k),但能让我接触真实业务。我咬牙接了。
项目一:用 React Native 做一个社区团购小程序(失败)
时间:今年1月
团队:我 + 一个前端实习生
目标:两周上线 iOS 和 Android 双端
我们选了 React Native(RN),毕竟我在大厂时主力就是它,生态熟、组件多、热更新爽。但现实狠狠打了脸:
- iOS 审核卡壳:用了第三方热更新插件,被苹果直接拒了三次。每次修改都要等3天审核,进度直接拖垮。
- Android 碎片化地狱:华为P40 Pro 的刘海屏和 Redmi Note 9 的圆角处理完全不一样,同一个样式在两台机子上长得像失散多年的兄弟。
- 性能瓶颈:列表滚动到第50条就开始掉帧,用户反馈“卡成PPT”。
最崩溃的是某天凌晨两点,我和实习生对着 Expo 控制台报错发呆,他突然说:“哥,要不咱换 Flutter 吧?”我苦笑:“换?现在换等于重写,deadline 就在后天。”
最后这个项目勉强上线,但日活不到200,老板默默砍掉了。我拿着那15k的工资,心里五味杂陈——不是技术不行,是我对 RN 的认知还停留在三年前。
教训1:RN 适合有成熟工程体系的大厂,小团队玩不起它的“灵活性”。热更新虽香,但苹果爸爸不认。
项目二:用 Flutter 开发一个内部工具 App(成功)
时间:今年3月
背景:接到一个外包机会,给一家本地物流公司做司机端 App
预算:3万,周期一个月
这次我果断选了 Flutter。理由很简单:编译成原生代码、性能稳、UI 一致性高。而且 Dart 语法清爽,上手比想象中快。
实战亮点:
- 一套代码双端跑:iOS 和 Android UI 完全一致,连动画曲线都分毫不差。产品经理再也不用问我“为什么安卓这边按钮偏了2px”。
- 热重载真香:改一行代码,3秒内看到效果。以前在 RN 里改个颜色要等1分钟打包,现在直接 Ctrl+S 刷新。
- 性能起飞:列表滑动丝滑如德芙,即使加载100+条带图片的数据也不卡。
当然也有坑:
- 包体积大:初始安装包 28MB,客户抱怨“比微信还大”。后来通过代码分割和资源压缩压到19MB,勉强接受。
- 生态不如 RN 成熟:有些小众功能(比如蓝牙打印)找不到靠谱插件,最后还是得写 platform channel 调原生。
但整体非常顺利。交付那天,老板请我吃了楼下的外婆家,还额外给了2k奖金。更重要的是,我在简历上终于能写:“主导 Flutter 项目,从0到1交付”。
教训2:Flutter 适合追求性能和一致性的场景,尤其是 B 端或工具类应用。别怕 Dart,它比你想象中友好。
项目三:用 Tauri + Vue 做一个桌面端数据看板(惊喜)
时间:今年5月
契机:老婆公司需要内部数据分析工具,Web 版太卡,Electron 又太吃内存
我本来打算用 Electron——毕竟会 Vue,上手快。但查资料时发现 Tauri 这个新玩意:用 Rust 写后端,前端随便你用 React/Vue/Svelte,最终打包只有几 MB。
抱着试试看的心态开干。结果惊了:
- 内存占用仅 30MB:Electron 动辄 300MB+,Tauri 直接降了一个数量级。老婆同事打开后第一句:“这真是桌面软件?怎么比浏览器还轻?”
- 安全性更高:Rust 天然内存安全,不像 Electron 那样容易被 XSS 攻击。
- 构建速度飞快:
tauri build30秒出安装包,Electron 打包经常卡在 webpack。
当然也有妥协:
- 插件生态几乎为零:想调系统托盘?自己写 Rust 代码。想读写文件?得手动配置权限。
- 学习曲线陡:得同时懂前端 + Rust 基础,对纯前端不太友好。
但瑕不掩瑜。这个项目让我在面试时多了个谈资:“我不仅会移动端,还能搞桌面端,而且用的是下一代框架。”
教训3:Tauri 不是 Electron 替代品,而是面向未来的轻量级方案。适合对性能和安全有要求的小型桌面应用。
技术分享:跨平台框架怎么选?我的决策树
经过这三个项目的折腾,我总结了一套自己的选择逻辑,分享给正在纠结的你:
第一步:问清楚业务场景
- 如果是 C 端消费级 App(社交、电商、内容)→ 优先 Flutter。性能、体验、一致性是王道。
- 如果是企业内部工具(CRM、ERP、数据看板)→ Web 技术栈 + Tauri/Electron。开发快,维护成本低。
- 如果已有 React Web 团队,且要快速出移动端 → React Native。但务必做好原生模块的预案。
第二步:评估团队能力
- 团队熟悉 JavaScript/TypeScript?→ RN 或 Tauri(前端部分)
- 团队有 iOS/Android 原生经验?→ Flutter 的 platform channel 更好驾驭
- 团队愿意学新语言?→ Tauri 的 Rust 值得投入
第三步:看长期维护成本
- RN 的“桥接”架构注定有性能天花板
- Flutter 的 Skia 渲染虽然强,但包体积和启动时间仍是痛点
- Tauri 轻量,但生态弱,可能后期要自己造轮子
我的结论:没有银弹,只有权衡。但如果你像我一样,是个 solo developer 或小团队 leader,Flutter + Tauri 组合拳可能是当前最优解——移动端用 Flutter,桌面端用 Tauri,前后端用同一套 TypeScript 逻辑(通过 shared lib),效率拉满。
重返职场:从焦虑到 offer
带着这些实战经验,我开始认真投简历。六月初,收到一家杭州本地 SaaS 公司的面试邀请。HR 问:“看你有半年空窗,担心跟不上技术节奏吗?”
我笑了笑,打开电脑,直接给她演示了那三个项目:
- “这是用 Flutter 做的物流 App,上线三个月,DAU 3000+”
- “这是 Tauri 桌面工具,内存占用只有 Electron 的 1/10”
- “至于 React Native,我踩过坑,也总结了避坑指南”
技术面聊了三个小时,从渲染原理聊到包体积优化。最后 HR 说:“我们正想从 RN 切到 Flutter,你来带队吧。” 月薪 22k,比裸辞前还高了 7k。
签 offer 那天,我和老婆去西湖边吃了顿人均200的杭帮菜。她笑着说:“看来 Gap 半年没白歇,技术反而更扎实了。” 我点点头,心里清楚:不是休息让我变强,是在焦虑中依然选择动手实践,才让我没被时代甩下。
最后一点思考
写这篇文章时,已经是七月末。窗外又是杭州熟悉的闷热,但心境完全不同。回看这段裸辞经历,我最大的感悟是:
技术人的核心竞争力,从来不是某个框架的熟练度,而是解决问题的能力和持续学习的韧性。
跨平台框架每年都在变,今天 Flutter 香,明天可能 ArkTS 突围。但只要你保持“用真实项目验证技术”的习惯,就永远不会被淘汰。
如果你也在 Gap 期,或者正纠结选哪个框架——别光看文档,去写代码。哪怕是个玩具项目,也比刷一百篇教程有用。
毕竟,程序员的世界里,跑起来的代码,才是最好的简历。
共勉。

评论 0