发布于 2026-01-05 10 阅读
0

为什么不选择 React Native?为什么不选择 Flutter?为什么不选择 Meteor?为什么不选择 NativeScript?DEV iOS 💖 状态:设计理念 贡献内联 Android 和 iOS WebView #730 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

为什么不选择 React Native?为什么不选择 Flutter?为什么不选择 Meteor?为什么不选择 NativeScript?

iOS开发者💖

地位:

设计理念

贡献

Android 和 iOS WebView 内联 #730

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

我们前段时间开始开发一款 iOS 应用,昨天刚刚发布了一个基本功能尚不完善但可用的 Beta 版应用。

这是一个开源社区项目。我早期起到了一定的引领作用,提供了一些初步方向,但后来我们让比我更优秀的人来负责这个项目。

但我确实提供了高层技术方向。如果我对采用何种技术和架构没有自己的想法,这一切根本不可能发生。我们最终采用了我称之为“Basecamp 方法”的方案:在 Web 视图之上构建原生 shell。

我在我们的代码库中添加了来自 Basecamp 的资源链接:

GitHub 标志 forem / DEV-ios

DEV 社区 iOS 应用

构建状态 GitHub 许可证 语言 可维护性 测试覆盖率

iOS开发者💖

这是dev.to iOS 应用的仓库

地位:

已发布第一个版本,更多信息:https://twitter.com/bendhalpern/status/1061323718058786822

设计理念

我们会逐步增加原生代码的使用,但目前我们采用的是原生 shell/Web 视图的方式。这种方式在 iOS 早期并不流行,但我认为如今它仍然是一种非常有效的方法。它的灵感来源于 Basecamp 的做法。我们的技术栈略有不同,但理念是一致的。

https://m.signalvnoise.com/basecamp-3-for-ios-hybrid-architecture-afc071589c25

https://signalvnoise.com/posts/3743-hybrid-sweet-spot-native-navigation-web-content

https://signalvnoise.com/posts/3766-hybrid-how-we-took-basecamp-multi-platform-with-a-tiny-team

https://www.youtube.com/watch?v=SWEts0rlezA

我相信,只要充分利用wkwebviews现有资源,我们就能把这一切做得非常出色,并与我们的 Web 开发工作无缝衔接。在合适的地方,我们可以完全用原生方式重新实现某些功能,或者构建完全原生的功能。人生是一段旅程,而非终点。

贡献

  1. fork 并克隆该项目。
  2. 在 Xcode 中构建并运行项目。

但为什么?

React Native、Flutter 等都是不错的选择。但我感觉,即使这些平台拥有跨平台视图创建的优势,我们仍然需要在原生端重新实现 Web 端的工作,并且每次更改都必须严格同步。我们可以通过大量的努力和精心的编排来克服这个问题,但这始终是一场艰苦的战斗。

为了继续利用网络的最佳优势,保持较高的构建速度,并最终保持更多的选择,我们采取了这样的方法。

我用过 React Native 和 Flutter,觉得它们很适合很多类型的项目,但这个项目真的不适合。每次讨论到这个话题,几乎都会有人问我“为什么不用原生框架”。所以答案是:我们是在功能强大且不断改进的 Web 应用之上构建一个非常简单的原生封装层。手机速度越来越快,网络也越来越强大。这是一个不错的选择。任何缺点都是必要的权衡。

我不知道未来会怎样,但在充满不确定性的领域,我觉得我们目前的处境已经相当稳妥了。

文章来源:https://dev.to/devteam/why-not-react-native-why-not-flutter-why-not-meteor-why-not-nativescript-573h