原生开发才是王道

以前不少朋友问我这么一个问题,说刚作 Android 开发不久,可是市面上被 H5,React Native 等这些移动趋势冲击的不得不考虑要不要转头学习 H5 或者 RN ,跟上时代之后才能有更好的发展,今天我就写篇文章给你们详细解惑下,而且说下个人见解。javascript

Native App

Native 开发也即原生开发,若是你是作 Android 开发,那么大部分都是用 Java 语言来编写的,若是你是作 iOS 开发,则是使用 Objecttive C 或者 Swift 来进行编写的,这些都是官方的标准,好处显而易见,利用官方提供的 api ,开发的 app 有更好的性能,能够实现各类酷炫的效果,有更好的兼容性,对用户来讲体验更好。前端

可是有没有坏处呢?有,好比你要开发一个 app ,必定是要 Android 端开发一个,iOS 端开发一个,从开发成原本说有点大,并且咱们知道一旦程序出现 bug ,咱们通常就只有从新发布一个版原本进行更新,对于 Android 端还好,对于须要漫长审核的 iOS 来讲简直是噩梦。因此为了解决这个问题,涌现了各类热修复框架,可是毕竟都不是官方的,并且不免会有学习门槛,并且不可避免的是这类为修复 bug 而生的热修复框架自己也有 bug 风险。vue

H5 App

H5 全称是 HTML5 ,是 HTML 最新的标准,咱们一开始常常看到的微信朋友圈广告,一些推广连接等大都是 H5 实现的,因此 H5 最近比较火,不过所谓 H5 实现通常都包含有 javascript ,这都是 web 前端工程师的基本技能,这也导致 web 前端工程师职位较火。java

不过若是开发一个 H5 应用的话,那很简单,你只须要在外面包裹一个壳就行了。拿 Android 来讲,最简单的直接包个 WebView 处理下就能够算是一个简单的 H5 应用了,其余的交给 web 前端工程师就行了。react

H5 应用的好处也是显而易见,跨平台,由于只须要在 Android 和 iOS 直接写个壳就行了,大大减少了开发成本,并且 web 是实时渲染的,即便有 bug ,能够直接发布就行了,也解决了热修复的问题。git

可是缺点很大:首先就是性能体验太差,跟原生 App 的体验简直不能比,iOS 相对好些,Android 上的体验简直使人发指,并且 Android 自己版本的碎片化严重,再加上国内各大手机厂商所谓的「定制」,体验根本不能看,并且会遇到各类兼容性问题,远的不说,我在开发 Android 的过程当中,就遇到很多适配的坑,有些你甚至都无法解决,只能眼看着。github

React Native

原生 App 体验最好,可是不能跨平台,H5 应用能够跨平台,可是体验太差。有没有一种介于二者之间的解决方案呢? React Native 横空出世。web

React Native 是 Facebook 工程师开源的一个框架,项目开源地址在这里:react-native

github.com/facebook/re…api

它的设计基于 React.js ,经过编写 javascript 代码,中间作了一层解释器,把相关的 js 解释成原生组件,最终达到跟原生 App 差很少的体验。注意,React Native 最终运行的不是 web ,这点咱们团队的小伙伴一开始也搞错了,它最终运行在机器上的是原生的组件。

这解决方案是否是很完美?利用 js 的跨平台特性,能够达到原生的性能与体验,听起来就帅爆了,加上又是 FB 巨头提出来的方案,因此该项目一经开源,在移动圈就引发了热烈反响。

可是现在一两年的时间过去了,看看市面上有多少 App 是彻底使用 React Native 来进行开发的,我想缘由有下:

  • 虽然说性能与体验比纯 web 好多了,可是不论是 js 的执行仍是多一层 js 到原生组件的解析渲染,因此性能上确定是不如原生

  • React Native 是一种解决方案,可是该方案还不成熟,据我所知还有很多坑,去该 GitHub 项目主页看下有多少 issue 就知道了,并且国内环境更复杂,大家懂得。

  • React Native 有很多限制,虽然说它是一层 js 到原生组件的映射,可是并非全部的组件,全部的组件的 api 都支持的,若是你亲身之间,你会发现,不少产品经理的需求很难实现,此次真不是产品经理的需求太复杂,而是 RN 的限制确实很多。

因此,RN 是一种解决方案,是一种技术趋势,可是彻底不成熟,不建议在商业项目采用,但咱们能够关注下,能够在业余时间学习实践下。

顺便多说句,阿里不是前段时间也开源了一个框架 Weex 么,能够说从新发明了相似 RN 的轮子,只不过它是基于 vue.js ,前几天宣布 vue.js 的做者以技术顾问的形式加入该项目组,可是我依然不看好该项目,一方面该项目会遇到 RN 上面的一些问题,另外一方面阿里的项目大可能是为本身的业务服务的,因此 Weex 应该有很多是跟本身的业务绑定紧密的,不必定适合大部分中小公司,我没有亲自实践过,不过以上就是我我的的一些见解。

总结

因此综上,我以为咱们时刻保持对技术的敏感性挺好的,可是不要过于杞人忧天,并且国内不少媒体言过其实,稍有点风吹草动,就会被吹的上天了,因此咱们要有本身的判断与实践。我一直认为原生开发才是王道,不管到何时,除非你不作 App 开发,或者说之后 App 死了,微信崛起了,不过起码目前还看不到苗头,也别相信什么 App 已死的鬼话,那么何时 App 开始没落呢?我也不知道,给你们一个我本身认为的指标作参考吧,何时 QQ、微信、支付宝等推出新的使用方式的时候,可能表明 App 已死,仔细想一想,咱们从 PC 时代过渡到手机 App 时代,是否是基本上从手Q、支付宝推出移动应用开始的,只不过 App 时代造就了微信,这些巨头的敏感性总归要比我的要强吧。

对了,前段时间微信朋友圈推出了原生广告,微信第一次把广告体验提高到了一个新高度,我想某种意义上是否是说明了什么?

因此,建议你们不用再过分担心了,能够时刻保持着对新技术的敏感性,只要你目前还在作移动应用开发,现阶段你依然须要提高你本身原生开发的能力,把重心放在原生开发上!

推荐关注个人微信公众号 AndroidDeveloper「googdev」,第一时间获取博客更新!

相关文章
相关标签/搜索