跨平台应用开发的现状

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 免费试用 200 美元!

我不太跟踪这些东西,但我明白了。 如果你想要一个适用于 Android 和 iOS 的原生应用,那么只需要编写一次而不是两次 *非常* 不同的语言,这将非常棒。 在不加倍工作量的情况下,将覆盖范围增加一倍。 越来越多的此类东西也正在扩展到桌面,这意味着一个目标可以覆盖三个平台。

类似 PhoneGap 的东西就浮现在脑海。 他们说:“重用现有的 Web 开发技能,快速构建使用 HTML、CSS 和 JavaScript 构建的混合应用。” 对于只需要学习很少新东西的 Web 开发人员来说,这显然很有吸引力。 我的大脑更倾向于,“好吧,如果我要用 HTML、CSS 和 JavaScript 编写这个东西,为什么不坚持这样做呢?” 渐进式 Web 应用正在做很棒的事情。 尽管如此,我还是很好奇 PhoneGap 的旗舰应用是什么。 我是否使用了任何很棒的应用,却不自知?

如果您要叠加一个框架,但仍停留在 JavaScript 领域,我认为最大的玩家是 React Native。 我听说它现在几乎总是与 Expo 一起使用,后者似乎有一个功能可以帮助 React Native 在 Web 上运行。 此外,还有专门用于 Web 的 React Native for Web

在 React 领域,还有一个新的玩家:Ionic React。 它一开始就针对所有三个平台(iOS、Android 和桌面)。 Ionic 并不新鲜——它一直是一个使用 JavaScript(或者在 Angular 中可选)执行此操作的框架,并且似乎很快就会支持 Vue。 很吸引人。 Nader Dabit 有 一篇关于第一印象的博客文章,写得相当不错。

这一切开始让我感到困惑,因为似乎 Ionic 最终在幕后使用的是 Cordova……就像 PhoneGap 一样? 还是什么? 但现在 Ionic 正 转向自己的东西? 我想,有一些低级解释器可以将 Web 原语转换为原生原语,人们可以在此基础上构建开发工具,这是有道理的。

谷歌也参与了这场游戏,推出了 Flutter。 Flutter 旨在覆盖所有三个目标,并帮助您构建 UI。 Material Design、动画和性能都是一等公民。 不过,它都是用 Dart 编写的。 Dart *可以* 编译成 JavaScript(因此可以用于 Web 内容),但它也可以编译成机器代码。 我想,当 Flutter 应用成为原生应用时,它们以这种方式编译是为了获得额外的性能。 我不太了解 Dart 的流行程度,但我想,如果能够在所有三个平台上获得出色的性能,Web 开发人员真的不会在意他们用什么语言编写。

在我能力范围之外的是 Xamarin,这是微软对统一多个平台上的开发的看法。 此处涉及的语言是 .NET 和 C#。 它具有与其他所有东西相同的承诺:用它构建,它可以在任何地方运行! 这是为了方便开发者! 它速度很快,您将用它创造出惊人的东西!

我总是对所有这些东西持两种心态。 我的一部分羡慕着真正漂亮的原生应用。 我手机上最喜欢的应用大多感觉非常原生,尽管我不确定自己是否能分辨出是哪个框架创建了它们,如果有的话。 例如,我手机上有一个 Dribbble 应用,我非常喜欢它。 它简单而美观。 我打开它,就已经登录了,而当我打开 Web 应用时,通常并非如此。 它感觉很快,并且具有您期望从原生应用获得的所有页面内动画内容。 我真的希望我们为 CodePen 也有这样的应用。 也许如果我们今天从头开始,我们会用一些跨平台框架来编写它,该框架可以针对所有三个平台,并可能为我们带来一些酷炫的竞争优势。 我的一部分则像,哦,我故意成为一个 Web 开发者。 我认为开放的原生 Web 是最佳去处,并且具有最长的寿命。 一个能够很好地服务于此目的代码库,将是随着时间的推移最不后悔的。