Hybrid app的一些思考

由于业务的需求最近在看Hybrid,只要一提到为什么需要选择Hybrid,就总会看到这样一个理由“IOS&Andriod开发一个APP似乎成本有点过高了,而H5的低成本、高效率、跨平台等特性”。看到这个我总想辩解下,看来你们根本不懂app不懂hybrid,所以才觉得app开发成本高。也许从表面上看app是需要开发2个端,一个项目至少需要2个人并行开发。而h5只要一个人开发,如果是一样的级别的人员开发一样的功能,也许app的开发成本是h5的2倍。但是你们不要忘记你要做的是hybrid app,你最终是要运行在app上的,你免不了要和原生交互。只要需要原生功能你的那2个原生开发人员就省不了,所以可以理解为你做一个hybrid app至少需要3个人?中间的沟通、调试等成本更是能把你拖死。除非你是要做一个web app 或是非常轻的hybrid(能不通信就不通信,能不用原生就不用),这种的成本可能会低些。但是这种的体验也是很差的,基本就是web app的体验了。

也许你会说hybrid app前期搭建框架阶段调试比较频繁,后面如果这个框架是成熟的,我的成本就自然下来了。对的,会下来很多,从3变成1.5左右。但是这个过程没那么快,你的业务开发人员要么是h5,要么是app小伙伴转h5.他们都有学习过程,入门简单,要深入从来都不是简单的事情。而出现问题,往往都是比较底层的,需要对3个端的技术都比较深入才能比较快速的解决。而这样的人才少之又少,大部分人一个端都没学到精通,就再学另外一种技术。一个团队能有1-2个就很难得了,这1-2就是为了专门解决各种极端情况,和前期框架搭建和设计。这也是为什么不能把3变成1的一个很重要的原因。大部分问题只要这个开发人员查些资料自己就能解决,但是这里的时间就很不可控。如果要做一个项目真正写代码的时间其实并不需要多少,技术方案、技术难点的处理从来都是最重要的环节。我们现在原生团队的开发效率为什么可以那么高,就是我们把这些不可控的环节都变成可控的,评估的开发时间可以到小时级别,基本可以等同你的编码时间。(这里就不展开了,有时间再总结)

所以从表面上看你是可以省一些人力,但是不要忘记hybrid app哪怕做的再极致,它的体验只能是堪比原生,在低配手机它和原生的差距还是有的。除非你对体验没有特别要求,只需要快速试错,占领市场,那web app和轻量级的hybrid会是你不错的选择。

那为什么那么多大型app,已经占领了市场却还在用hybrid 框架?我想至少有3个原因:1.现在都是生态型app,他们一些子业务需要快速试错。2.一些活动页更新频繁,周期短。3.方便链接外部业务  ;一个app的成熟或它想往生态型app发展,它的混合开发能力也是必不可少的。所以在我看来做hybrid框架的原因绝对不是为了减少成本,前期的成本绝对比纯原生的要高。从长远来看,它是趋势也是必经之路,最彻底的hybrid是大于小程序的。换句话讲,小程序是hybrid的一种,只是小程序比较激进的把开发语言都换了。如果你深入去了解小程序和Hybrid你就会发现,市面上所有Hybrid的技术,在小程序里面都用了,小程序里面的优化思路也同样可以用在你现在的Hybrid框架里面。也许就会疑惑既然小程序也是Hybrid技术,那为什么他要自定义语言,不直接开发一个普通h5的单页面吗?这样成本不是更低?

不是的,和hybrid app一样表面上看成本好像是低了,开发人员不需要学习新语言看上去成本是低,但事实真是如此吗?想要接近原生的体验,它和原生交互是非常频繁的,也就是会有大量的原生API供js使用。而做过hybrid app都知道,这块的调试是比较麻烦的。特别像小程序他的数据处理和网络请求都在原生开线程处理,webview只是负责渲染。所以它需要有自己的开发工具来调试,不做开发工具最差也需要一个调试工具。由于web开发语言是一种开放式语言,这样就决定他们的写法的多样性,有些用法是影响性能的,也就会影响小程序体验,所以还需要做一些阉割。开发工具也许你可以搭一个简易的调试工具来解决,但是如果要做阉割,那自定义语言就是一种很好的选择。不仅可以做阉割,还可以约束开发者的规范,包括原生的生命周期,都可以通过规范来很好的使用。对于开发者来说它不需要知道哪些API能用哪些不能用,不需要复杂的使用规则和调试方案。按照小程序API开发就可以,其他的都交给工具和框架。

直接更换开发语言自然有很多好处,但是对于大部分开发者来说门槛都是很高,而且开发工具、编译环境等的投入真的不小。所以不换语言也许会更适合大众,把能做的优化都先做了。由于我们的框架就公司内部再用,不换语言的弊端,我们可以开发一些手脚架来辅助,也可以通过review代码来规避。不像小程序有大量的外部开发人员参与,所以一切还是比较可控的。初步的Hybrid框架先出来,后面逐步优化,没必要一步到位。

以上纯属个人想法,不喜勿喷,有好的想法也可以留言,欢迎讨论。

你可能感兴趣的:(Hybrid app的一些思考)