省流

Data_Saver

React Native 一点也不好用, 请用 Capacitor + Vue 谢谢喵。

Tip: 本人大部分博客文章都会有省流部分。如果你的时间非常宝贵, 我希望你能尽快找到问题的解决办法。不过如果没有那么着急的话... 也可以来听听我的故事...? 我会很感激的。(>∀<☆)


引子

书接上回, 关于移动端 APP 开发, 其实我一开始首选的是 React Native (Java / Kotlin 完全不会 TwT), 创建项目时只知道这么一个框架能用 JS 写原生应用 (当时 Lynx 也还没发布...), 所以就用了。

因为我之前一直用的是 Vue, React 没太碰过, 于是速通了一下, 感觉「React 好像也没那么难嘛...」。殊不知, 这只是灾难的开始。

后来才发现, RN 里很多原生 CSS 的特性都是缺失的。写动画还要用 React Native (Re)Animated。本来这就已经很痛苦了, React 的 useRefuseState 更让我彻底晕了。(×﹏×) (抱歉这个是本人问题, 和 React 没有关系) RN 开发的生命周期还和 Expo 强耦合, 而 Expo 的 EAS 构建系统配置起来超级麻烦...

写多了之后, 感觉 RN 越写越难受。好在项目还没写多少功能, 及时止损还来得及, 于是我就开始看 RN 的替代品...

Lynx?

前段时间, 字节跳动刚出了一个叫 Lynx 的应用开发框架。据说比 RN 性能强很多, 而且能用原生 CSS。不过我一看它的文档: ( ´・ω・) (图 2-1-1)

20250330_Capacitor_is_Good#Lynx_Docs.png

△ 图 2-1-1 Lynx 的文档

好吧... 现在用 Lynx 可能还有点太早了 ( – ‸ – )。咱还是看看别的吧...

Webview 方案? Capacitor?

项目一开始, 我就没有考虑过 Webview 方案。在我的印象里, Webview 代表着性能不友好、包体大 (参考 Electron 的打包完整 Chromium 行为)、原生功能调用困难。

但是后来 Claude 告诉了我有 Capacitor 这种东西, 我的观念就改变了。

传统方案

问题

新框架

解决方案

纯 Webview

🟡 内嵌 Webview 造成安装包体积过大

Capacitor

🟢 直接调用系统 Webview

🔴 原生功能无法调用

🟢 通过 Capacitor Plugin 轻松创建 / 调用原生功能

我上手尝试了一下, 开发过程愉快多了 (´ ∀ ` *)。由于用上了 Vue, 终于不用被 React 追着打了, 开发效率 +++

简单来看个 RN 和 Capacitor 的对比吧。

项目

React Native

Capacitor

支持的技术栈

⚠️ 仅 React

✅ React / Vue / Angular / 任何其他网页技术栈

包体体积

❌ 一个简单的 Expo 应用:

生产构建 20MB+

开发构建 95MB+

✅ 一个 Vue 3 + Vite + Ionic 应用:

开发构建 4.2MB (安装后体积)

前台 RAM 占用

🟠 150MB ~ 180MB

🟢 110MB ~ 140MB

首屏时间

🟡 1.05s

🟢 0.8s

构建系统

❌ Expo EAS 强耦合, 在线构建优先

✅ 完善的 Capacitor 本地构建工具

生态与维护

❌ 有部分组件常年未更新

✅ 积极维护中

Capacitor 完胜! 连 RAM 占用都比 RN 要少...

总结

在各类编程语言飞速发展的今天, Web (泛 HTML + CSS + JS) 这种开发成本低、极其易用、「以开发者为中心」的语言将会成为未来。现在设备性能也日渐强大, Web 让开发者能更加专注于功能的实现与用户体验的增强, 而不是把时间都花在解决 "指针"、"内存管理"、"所有权" 等复杂的概念上。

诚然, Web 的性能和原生相差甚远, 但我们不妨看一个简单的问题吧:

在完全不使用第三方库的情况下, 用 C 和 HTML 实现一个基础 UI, 实现标题文本从下向上滑入的动效。

当一名 C 的开发者还在埋头尝试适配各种不同桌面平台时, Web 开发者早已实现了一整个精美的首页 —— 这不是「不文明」, 也不是「丢垃圾」, 而是生态链的力量。

Web 能让我们以前所未有的速度, 实现完全理想化的 UI / UX 目标和应用功能。QQ、Discord、微信、VSCode、网易云音乐, 越来越多的主流应用, 都在转向通过 Web 开发桌面应用。所以, 有什么理由不选择 Web 呢? | ω・)

请和我一起加入 Web 教吧。关注 Capacitor 谢谢喵, 关注 ECMAScript 谢谢喵, 关注 Vue 谢谢喵。

Ad astra per aspera