TAT.Johnny AC2016讲师专访——石小勇 devin
In 团队 on 2016年10月19日 by view: 644
1

石小勇

讲师介绍
石小勇 devin
腾讯AlloyTeam高级工程师
做过甲方乙方,前端后台,14年正式从企业开发转型互联网,扎根前端。现致力于react、vue等热门技术在实际业务中的落地。Github地址:https://github.com/shixy

1. React Native发布1年时间了,但国内很少看到使用React Native做开发的,你觉得有哪些比较适合的应用场景?

其实还是有不少人在用ReactNative开发app的,只不过还没有一些比较出众或者典型的app让大家熟知,这部分app大多为小团队或者个人来进行开发的。像腾讯这样的大公司确实很少有全部用ReactNative来开发的app,不过一些大型app内部如手机QQ,空间等app里还是有业务采纳了ReactNative,这也从侧面反应了ReactNative存在一些问题。

我们先来看看,为什么我们要用ReactNative?我个人的理解是:

  1. 为了解决H5的痛点-体验差,H5性能差诟病已久,动画、加载速度、操作反馈、长列表等等。我们团队曾经也针对webview做了很多的优化,包含去年AC大会上cson和教授的分享,但是这些都是治标不治本。在目前的情况下,纯web的体验在一些复杂或者要求高的产品中还是难以被接受。如果能有这么一项技术能够解决这个问题,那就皆大欢喜了,而RN正是这样的一项技术。
  2. javascript开发。其实我这里的要说的是javascript开发人员,RN是用js开发,虽然它没办法做到跨平台开发,但是80%以上的逻辑代码是可以复用的,不需要大量的Android和iOS的开发人员,这对人力紧张的小团队的人力成本和学习成本都有极大的改善。

  3. 热更新机制。快速迭代,这是我们部分业务选择web而不是native的根本原因,RN在给我们享受Native体验的同时还拥有了web得高效。

这是我为什么选择RN的原因,那为什么我们不用ReactNative?

  1. 版本不稳定。到现在已经一年多了,RN版本仍然在更新,仍然没有达到1.0版本,各种bug依旧很多。这意味着我们要在生产环境应用RN,必定要承担极大的风险。在腾讯内部其实有将RN与手Q进行整合,为了性能或者其他的优化,改动了很多源码,但是RN一升级,这些改动都需要同步,各中艰辛苦不堪言。

  2. 需要Native同学重度参与,组件尚不完善。根据我们的一些实践,目前facebook官方提供的组件还是严重不足,总是有许多个性化的组件通过js无法实现,需要Native同学来协助开发,这与我们最初通过js来统治世界的初衷还是有差距的。

  3. 性能相比Native还是有差距,内存问题,crash都难以解决。配套的日志跟踪,测试,调试工具还没有跟上。App不是开发完就结束了,后续的测试、维护、跟踪更为重要,Native在这一领域已经非常的完善,RN还是个新生儿。

好了,啰嗦了一堆,回归到主题。鉴于目前RN还有上述的问题,我的答案是:

  1. 小型App,工具类、生活类、阅读类等开发起来应该不会有什么大的问题,对于大型App如手Q,微信等全部用RN就算了。不过,即便是小型App,建议开发人员也需要掌握一部分Android和iOS的知识,毕竟我们还是要做优化的不是?

  2. 大型App的非核心子业务。一般大型App都有安装包大小的限制,所以这类业务基本不可以用Native来实现,在这里进行一些RN的尝试也是有机会的。我们团队在这两个方面都有所尝试,内部也有使用RN来独立开发一些工具类App。

哨兵App

2. 你是如何看待Weex、微信小程序这些类React Native框架的?

我先简单说一下他们之间的差异吧。

    从大的架构上来看是它们是同一类东西,都是通过前端技术来进行NativeApp的开发,但还是有一些本质上的区别。

    ReactNaitve: 开源开放,大家可以作为使用者也可以作为组件提供者。你可以用RN来做一个独立的App,也可以嵌在你原有的App里运行。

    小程序/Weex: 受微信限制,运行在微信上。组件目前也只能是微信来提供,个人无法自定义Native组件,在你和Native API之间还有一层微信。

小程序原理

    RN这类框架的流行是也是时代的产物。随着智能设备的崛起,H5壮大了,但随着时间的推移以及人们对产品的高要求,H5的弊端也逐渐的凸显,RN这类框架的出现也显得理所当然。但是它还是代替不了Native,大型App的功能还是要靠Native,这就好比当年客户端游戏火了半边天比如传奇,后来出了网页版传奇,但是又出了LOL,以后可能会有网页版LOL,也会诞生出LLOLL,总有你实现不了的地方。它也代替不了H5,就目前看来,H5还是跨平台的,而且很多需要传播需要分享的应用还是只能H5。

3. 目前移动领域,Web与客户端技术的结合越来越紧密,你认为未来趋势会是怎样的呢?

这种情况应该还会持续很长一段时间,它们的结合也是为了取长补短,为了更快更好的服务于用户。

从用户的角度来看:

    目前人们的生活还是与智能手机息息相关,手机的承载量还是有限的,虽然标配从8G到16G再到32G或者更多,但还是不愿意安装太多的app,特别是一些低频或者非核心应用。目前的情形还是用web或者小程序比较合适,这也是我理解为什么服务号和小程序为什么那么火的原因。

从产品和开发者的角度来看:

    在这个人力成本和竞争越来越激烈的时代,能够跨平台和快速迭代,抢占优势地位显得更为重要。开发者也不需要兼容那么多的平台,将更多的精力投入到产品优化和性能提升上。而当前的现状是H5并不能提供那么多的能力,有了Native的帮助就如鱼得水了。RN和小程序目前还是一个不稳定的状态,随着时间的推移,它们可能会蚕食一部分H5应用,但不管怎样,它还是web开发哈,我们又可以要求涨工资了。js必将统治世界!哈哈!

装逼表情

当然,我们也不排除以后随着标准的进行,H5的性能会变得越来越好,RN、小程序甚至是Native都会被慢慢替代,成为王者。让我们一起期待这一天。

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2016/10/ac2016-shi-xiaoyong-lecturer-interview-devin/

  1. m 2016 年 10 月 21 日

    这人是我以前的同事,不是在金蝶吗?

发表评论