Web开发

首页 » 常识 » 问答 » 我用一个跨平台Web应用替换了原生
TUhjnbcbe - 2022/6/16 1:06:00
北京中医院治疗白癜风 http://pf.39.net/bdfyy/tslf/161224/5153467.html
作者丨ChrisNielsen      译者丨明知山      策划丨邓艳琴  转自

前端之巅    不知为何,我的跨平台Web应用实际上更稳定。我想,我浪费了大量时间开发原生iOS应用。  

这一切要从我想做一款可以帮助父母们安排孩子上学的App开始。

我是一个有3个孩子的父亲。在工作中,有很多功能强大的工具可以帮我组织和管理团队,但在家里却没有任何工具可以帮我安排孩子们去上学,每次都搞得一团糟,为此我感到很恼火。于是我想,为什么不给孩子们列一个待办事项清单呢?我可以让它的使用体验看起来像游戏一样,甚至嵌入游戏化的设计元素,帮助孩子们保持专注和参与度。

所以我开发了“SchoolMorningRoutine”,效果非常棒。现在,孩子们准备上学的时间缩短为原来的30%,我们唠叨的时间也减少了95%(是的,我算过了)。

但在开发过程中,我犯了一个大错误。我浪费了大量时间开发原生iOS应用。

    为什么最开始我选择了原生开发  

在年,要开始一个移动App项目,最大的问题在于有很多完全不同的技术方向可供你选择:原生应用、跨平台Web应用、ReactNative、Flutter、渐进式Web应用、Xamarin等等。

默认的方案是写3次代码,一次针对iOS,一次针对Android,一次针对Web。

但是,对我们软件开发人员来说,多次编写相同的代码是非常令人不安和不自然的。因此,这么多年来,我们已经尝试了几十种方法,试图实现“一次编写,到处运行”,但它们都涉及令人讨厌的权衡。

如果选择了跨平台Web应用,你只需要使用通用的Web技术编写代码,然后将其部署到多个平台上,只是有少量涉及iOS和Android功能的原生代码无法在浏览器中运行。

但你需要在性能方面做出权衡。

年,我尝试用IonicFramework开发一款不同的应用,然后我和大多数人都发现了统一的问题:Android和iOS运行Web应用的表现很糟糕。

它们响应慢、行为不可预测、断断续续、忽隐忽现,触屏互动体验也很古怪。

所以,我很早就确定SchoolMorningRoutine不应该是一款跨平台Web应用。这款应用将大量使用游戏风格的动画,因为它是面向儿童的,所以它需要出色的触屏互动体验。

我的跨平台Web应用实际上更稳定  

所以,我决定开发一款原生应用。原生应用通常风险最小、质量最高。当然,同样的应用做了两次,这不是什么好事,但它毕竟是一款小应用,我相信努力比魔法更重要。

首先,我做了一款漂亮的iOS应用,并与测试用户进行了多次迭代。然后我将其发布到AppStore上,并获得了一些用户反馈。除了收到五星好评,还有来自用户的电子邮件。用户在邮件里说这款应用是如何改变了他们的生活和工作。

我很高兴自己取得了一些成绩,并决定接下来要开发Web应用。我使用了React,再加上CSS动画、Framer和一些Lottie动画。在开发完成后,我花了一下午仔细调优性能,只是想确保没有做不必要的渲染。

那时,我的孩子们已经使用iOS原生版SchoolMorningRoutine好几周了。为了测试这个新的跨平台Web版本,我把它装到孩子的iPad上。他们可以用它来测试,为上学做准备。

有趣的是,我忘记告诉他们那个App已经从原生改为Web版了,但第二天早上他们却没有注意到。

他们没有注意到。

他们甚至都没有注意到。

如果你没有孩子,可能就不会意识到这个。要知道,孩子总是抱怨所有的东西。真的,所有的东西。但是,当第二天我问他们是否注意到有什么不同时,他们不仅没有抱怨那款Web版App,还感谢我,因为我在Web版中使用了不同的动画,他们当中有两个更喜欢它。

他们是对的,新版的动画流畅如*油,触屏互动体验更加精准。

我感到很震惊。也许只是因为iPad的性能好?于是,我出去买了一台低端的Android平板电脑。我选择了一款功能配置差的,即使是打开设置屏幕都很不流畅。但这也是一项重要的测试,因为对许多人来说,这是他们唯一能使用的设备。

我加载了SchoolMorningRoutine,你猜怎么着,它运行得很好。虽然不算很出色,但这只是一款低端的Android平板电脑,你还能期待什么?

于是,我走到办公桌前,删除了我的原生iOS应用,决定使用IonicCapacitor。

现在,我要开发一款可以在三个平台上运行的App。我的构建脚本中有3个命令,分别用于部署到iOS平台、Android平台或AWS的网站上。

这太酷了!

从那时起,我便在Android、iOS和Web上发布SchoolMorningRoutine。不仅我的iOS用户没有注意到,漏洞的数量也减少了。有一个麻烦的Bug与渲染表格视图有关,这个问题只发生在iOS14上,它打印出来的堆栈跟踪信息没有用……但在我的跨平台Web应用中,就不存在这个问题。

直线出现在跨平台Web应用发布之后

不知为何,我的跨平台Web应用实际上更稳定!

    这是怎么回事?  

为儿童开发的一款到处都是动画的App居然是一款Web应用,这怎么可能?

事实证明,在年,对于许多应用程序来说,编写一次就可以在任何地方运行的梦想终于实现了。

对于跨平台Web应用来说,成本和收益之间的权衡总是以较差的性能换取较短的开发时间。对于年的大多数应用来说,这是一个糟糕的权衡。但在过去的8年里,很多事情都发生了变化。浏览器性能在稳步提升:

图片来源:

1
查看完整版本: 我用一个跨平台Web应用替换了原生