谈React Native在移动互联网中的技术应用

Posted 天外野草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈React Native在移动互联网中的技术应用相关的知识,希望对你有一定的参考价值。


前 言

论江湖往事,看今朝是是非非,谈笑间亦是有”天下英雄出我辈,一入江湖岁月催。皇图霸业笑谈见,不胜人生一场醉”的感慨,华山论剑是江湖,职场人生是江湖,互联网的发展亦是江湖。

题外话

话说移动联网现现如今已有10年历史之多,平台的更新,系统的迭代,框架的不断演变,让身处其中的每个技术开发者着实有些心力交瘁,力不从心,一切来得太快了,笔者到今年2019年为止从事互联网技术行业已经有8年之多,从最初android 2.3系统开始,一路走来,见证了4.4、6.0、9.0这些不同版本之间的巨大变化,也目睹了iphone 4 、5 、6、7、8、X发生的一些列变革,更实践了Android + Java, Android + Kotlin, ios + Objective-C, IOS + Swift, Hybrid应用技术(Cordova + Angular1.0、Cordova + Angular 2.0 +、Cordova + React, Weex, React Native、Flutter)等等技术,迄今为止,最流行切应用最多的技术莫过于React Native,接下来就一起聊一下,这几年RN在市场应用中的实践体验。

React Native的发展历史

存在即是理由,存在亦是道理,RN的诞生不是RN是Facebook公司推出的跨平台移动应用框架,是React开源JS框架衍生出来的产物,并与2015年4月发布开源版本,支持IOS和Android两大平台,主要使用JS+JSX+CSS进行研发,目前最新版本1.60,现如今标准API已经覆盖绝大多数应用控件,几乎满足大部分功能开发,版本相对稳定(和其他跨平台技术框架相比)。

React Native的技术特色

其实Hybrid应用技术并不是新兴的产物,早在html5标准诞生开始,就暗示着移动WEB应用会伴随移动互联网一起前进,那么WEB APP的形式在性能以及体验上还是有些逊色,毕竟技术技术局限性,与此同时一个新的技术领域诞生”驱动原生技术“,顾名思义就是用JS脚本编写,用原生组件渲染展示,听起来的确很牛掰,着实颠覆了Web内核渲染的机制,极大程度提升了用户体验。

RN的强大更是封装了一些类原生组件,兼容两大平台,能够帮助开发者快速组合开发一个款移动应用,并提供了自定义组件功能,方便特殊的需求用户能够自己定义插件接口,免除了功能的限制,Github的开源生态系统提供丰富的开源项目,比如支付,各种特效,几乎保罗万象,拿来即用,虽然部分比较老旧,缺乏维护(毕竟开发吗,可以立即),但是懂行的都明白,稍加改动即可,大大的节省了时间,受益颇丰。

React Native的生态系统

说道生态,这里问一个问题,”为什么你会选择跨平台技术?“,你的回答无非是,”能快速开发迭代!!!低成本维护啊!!!“, 除了框架本身,附加生态无疑是决定性因素,试想一下,如果你想开发一个瀑布流效果,这个控件在标准API并不存在,怎么办?难道你要自己写?哈哈,这个可以复杂了!还有,如果你想开发支付宝支付,并且兼容IOS + Android平台,RN可没提供这个组件,怎么办?难道你自己写?你要知道自己写可以更多的工作量,你不仅要编写底层代码(OC + JAVA)还编写对应的接口,更加复杂了,试想此时有其他人已经写好了这个类库,你直接npm 或者 yarn安装即可,是不是很方便呢,安装即用,不需要额外任何编写,是不是很酷,这就是生态,有更多的人去贡献,这样会有越来越多的开源组件,方便我们快速集成,同样也推进了框架的推广,所以一个好的生态,对框架技术的推广,也是至关重要的作用,就好比没有应用市场的系统,谁还会用呢?你懂得!

React Native的应用场景

先说一下,为什么要谈这个话题,因为总有人咨询我说,这个技术是否适用于我们的业务场景?的确,技术选型确实要看具体的业务场景以及需求来定,比如你要开发复杂而且时效性很强的游戏应用,你选择开发WEB APP技术肯定是不行的,如果要求极致体验,无可非议原生开发是最好的方案了,但是成本相对较高,那么什么应用场景适合用RN呢?

  1. 对启动速度,交互体验没有极致的要求
  2. 没有极其复杂的计算量。
  3. 想快速适应市场,快速迭代版本,同时拥有相对较好的用户体验。

React Native的技术瓶颈

目前RN并非万能,不是所有效果都处理的非常完美,笔者总结了一下几点:

  1. 针对更多平台的适配,比如WEB 应用,MAC OS以及Windows系统应用,无法 实现多平台适配。
  2. Android平台动画性能瓶颈
  3. Android碎片化适配问题,这里包括UI以及权限处理等底层api,目前仍存在bug
  4. 标准控件不利于拓展,模式相对固定。

React Native的应用体会

目前,笔者已经在社交领域,企业EPR应用领域,教育领域等等开发诸多个RN应用,并且上线过各大平台,苹果审核以及运行没有相对的约束条件,各方面反馈相对较好, 升级维护成本比较低,不需要同时维护多个平台,整体时间以及人工成本降低了很多,丰富且功能的动画插件(Animated)能否完成大部分复杂的动画以及手势操作,虽然性能上稍逊于原生API,但是整体运行能够符合要求,丰富的功能组件,诸多开源的生态,造就了RN能够快速适应以及迭代的根本。

最 后

任何一项技术都是经过无数人努力的结果,不能全盘否定,亦不能全盘肯定,孰好孰坏,还要细细品味,百般滋味只有适合你的才是最好的,RN作为目前跨屏技术热度不减,越来越多的开源项目扑面而来,不断注入新鲜血液,团队也是在不断升级迭代以适应未来的生态系统,终究相信,RN能够赢得更多开发者的青睐,不断向前,创造无限价值!

以上是关于谈React Native在移动互联网中的技术应用的主要内容,如果未能解决你的问题,请参考以下文章

浅谈移动应用的跨平台开发工具(Xamarin和React Native)

如何在 react-native 中定位移动应用的用户?

360度全方位观测:React Native与Flutter的跨平台王位之争

React Native 中的 Internet 推送通知

如何在 React Native 项目中使用 MQTT

全方位观测:Flutter与React Native的跨平台王位之争