混合JavaScript移动开发 - Apache Cordova vs Capacitor与Ionic vs NativeScript vs React Native

20
首先,希望这个问题不会太广泛。作为一个前端背景的人,我正在考虑开始学习一种与JavaScript相关的移动开发框架。第一个问题是,我应该选择Apache Cordova还是Capacitor?我在Phaser(HTML5)游戏开发业余项目中使用了第一个,但说实话,体验并不好。我可以理解为什么Apache Cordova是根据Stack Overflow年度报告中最受憎恨的技术之一。
然后来到第二个问题,我应该选择Ionic、NativeScript还是React Native?React是“三巨头”中唯一一个我感觉到目前为止不舒服的前端框架。我的Angular和Vue.js的经验都相当积极,我也想在我的移动应用程序项目中使用其中任何一个,因此我有点偏向于Ionic或NativeScript。另一方面,React Native拥有最多的GitHub星标。我认为这可能有原因。
最后一个问题是,我可以将Apache Cordova/Capacitor与Ionic/NativeScript/React Native结合使用吗?同一家公司这样做,因此我认为这应该是相对无缝的组合。

编辑:

最后一个问题 - 如果我想从同一代码库创建 PWA,我是否只能使用 Ionic?

编辑2:

由于其丰富的生态系统、稳定的发布版本、流行度和开发工具,尤其是在 Apache Cordova 中让我感到疯狂,因此选择了 React Native + Expo。


3
电容器没有完整的本地插件支持。我个人建议您尝试使用Ionic框架。您可以将Ionic与Angular、Vue甚至React一起使用。Ionic还可以为您提供来自同一代码库的PWA。但是,不可避免地需要使用Cordova(Ionic使用cordova进行本机硬件支持)。请尝试使用Ionic。祝你好运。 - Najam Us Saqib
1
Ionic 更像是一个 UI 工具包... - hsym
3个回答

10
在某种程度上,答案将取决于你个人的经验和知识、个人偏好(你如何思考和工作),以及最终用户需求的任何性能要求。像你一样,我也研究过所有这些框架,并使用了其中大部分。其中任何一个最终都可以完成任务。然而,我发现像Cordova这样运行在本地应用程序中的Web视图的框架,在进行推送时可能会有一些明显的性能问题。使用实际本地组件并编译成本地代码的框架最终将更具响应性。但即使如此,您仍然可以找到一些情况,它不能与本地编写的代码相匹配。例如,我在一年多之前参与了一个项目,我们开始使用React Native。一切都很顺利,直到我们尝试通过地理位置和用户交互进行实时地图动画时。在那时,我们开始看到延迟和卡顿,即使在全新的设备上也是如此。对于那个项目,我们最终选择了纯本地的方式重新开始。我们只是要求框架做了太多的事情。

目前,我正在使用NativeScript与Vue开展一个项目。到目前为止,我感觉非常兴奋。和你一样,我是VueJS的粉丝,主要是因为我喜欢如何处理Vuex和整体数据绑定。当然,有一些学习曲线和范例需要我去理解,但大约一周后我开始逐渐掌握了。话虽如此,我还没有真正用类似复杂动画之类的内容来推动这个框架。但这是一个成熟的框架,有很好的文档和活跃的社区(我几乎立刻就加入了Slack工作空间)。我绝对喜欢它不关心你是否或者使用了哪种框架的事实。原生JavaScript,React,Angular,Vue......它只关心你写出的代码。

如果你担心在未来将其他开发人员融入项目会有困难,那么肯定有更多人熟悉React Native。不过,任何值得称道的开发人员都应该能够在不太困难的情况下快速适应新框架。如果你正在考虑使用NativeScript,我建议看一下Playground中的一些示例并翻阅文档。我猜想这可能会吸引你或让你反感。话虽如此,我对其他任何框架都没有任何抱怨。有些框架只是更适合某种类型的应用程序。

祝好运!


2
感谢您提供出色的答案。 看起来NativeScript / React Native根本不需要使用Cordova / Capacitor,是吗? 那么拥有PWA的唯一方法就是使用Ionic了吗? 我真的很喜欢NativeScript的想法,只是我担心它可能是一些非常临时的东西。 - Daniel Danielecki

8

我也在这方面苦恼,我的回答如下:

  1. 毫无疑问是电容器。
  2. NativeScript是最优秀的选择。纯本地代码允许您在Angular网页和移动端之间共享代码。这是我的选择。
  3. 你可以,但这取决于具体情况。对于通用目的(表单),任何一个都可以。我建议选择一个并尽量坚持使用它。
  4. 你可以使用NativeScript与Angular(效果非常好!)和电容器共享代码。

我认为由于我的项目性质——针对网页和移动端的简单业务应用程序,使用单一代码即可实现——我将转向使用电容器。

附注:Quasar 是解决所有这些问题的唯一选择。如果您只需要处理网页和移动端,则大多数工具都可以胜任,这取决于您的项目需求和偏好。


非常感谢您的贡献。就Quasar而言,我认为现在还为时过早。 - Daniel Danielecki

5
没错,NativeScript有自己的iOS/Android原生组件,它不是其他框架的包装器。Telerik从头开始构建了它。它是一个自包含的生态系统,目前版本为6.x。因此,它已经存在一段时间,并且正在积极开发和维护(这并不能保证它不会在某个时候消失)。
对于类似PWA的东西,Ionic或Flutter是选项。今天早上我通过StackShare偶然发现了一个新的叫做Quasar的工具,看起来很有趣 (https://quasar.dev/)。但是你实际上可以从用于构建移动应用程序的同一NativeScript代码库构建PWA (https://www.nativescript.org/blog/how-to-build-a-pwa-an-ios-app-and-an-android-app-from-one-codebase)。因此,工具似乎没有短缺,这很好,因为它给了你基于你喜欢的工作方式选择的选项。

1
我大约2-3个月前听说过Quasar,但在我看来,现在使用它还为时过早/冒险。我将等待看看社区/市场是否会接受它。感谢所有的答复。 - Daniel Danielecki
4
为什么你会回答相同的问题两次? 顺便说一下,quasar使用cordova或capacitor来构建混合应用程序。https://quasar.dev/quasar-cli/developing-mobile-apps - jcesarmobile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接