当今社会,随着智能手机的不断普及,手机应用层出不穷,方便了人们的生活。同样在企业内部能够开发应用服务于员工的工作,大大的提高员工的工作效率。相应的加大了我们对于移动端的投入,不管是原生APP开发,还是H5 APP开发,都各有利弊,如何选择一种开发APP的方式,使得既有原生出色的体验,又能够享受H5开发般的低成本、以及跨平台性,这无异于给我们的客户带来了更好的经济效益。
React Native开启了开发原生App的新方式,不仅提高了开发效率,同时提高了App的用户体验。相比Web App而言,React Native可以使用原生的组件和API,这样就可以释放Native的能力和体验;相比Native开发而言,前端开发者可以使用JavaScript开发原生应用,这样开发效率将会得到很大的提高。
做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调成 16号呗,颜色变成 #FFFF00FF,老大说这里最好改一下”,作为一名 app 的开发只能无奈但心里窃喜的告诉你,“只能等下个版本了,必须要重新发布才能改”,如果你问为什么不能改了就生效啊,那说明你对技术的理解要么真的很差,要么你就是知道这项 React-Native 新技术所爆发出来的力量。
React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,2015年9月 发布了 android 版本,又在程序员里面掀起了一波小高潮,不断有喜欢尝鲜的程序员投入到这个领域。
用大白话说,就是从此一名程序员自己就可以创业了,他只用这一门技术,就可以同时写出 androidapp,ios app,以及后台应用程序,并且,请注意这里,它可以做到实时热更新(就像网页一样,改了一个字体,随时可上线),app 也能做到随时都能更新了,第一段讲的那个需求可以分分钟秒杀解决,不用新发版本,只需在服务器改动一下代码即可。
到这里,你只需要理解一句话,就是 Facebook 提供了一套解决方案,它利用 Java 作为开发语言,可以同时来编写前端,移动终端,后台应用程序。
我们再来讲讲,为什么 React Native 受到了如此大的关注,以及它的优越性到底在什么地方。
目前,一个成熟的互联网产品基本囊括了:移动终端和网页两种主要形态。在移动终端 app 和网页的开发历程中,涉及了很多技术角色:前端开发(俗名叫做网站的),移动终端开发(android 和 ios 开发,现在满大街都是),后台开发(他们的程序大多没有界面,主要是为网页和 app 提供数据和保障服务的稳定性),每个角色各司其职,分别需要不同的技能,比如前端开发需要精通 html,css,java 这些基本的 web 语言知识。Android 开发用 Java语言编写,ios 开发用 Objective-c编写。后台开发,有的公司用 Java,有的公司用 C++,用啥的都有,能满足性能需要就可以了。
已经看崩溃了吧,对于一个非计算机专业的人,根本不会理解他妈的为什么要存在这么多语言,为什么这里要用 C 语言,那里要用 C++,有的地方要用 Python,而又有很大的一个人群对你高呼:“PHP 才是世界最好的语言”。其实他们每种语言都有不同的使用场景,有的语言效率高,有的语言语法更简洁漂亮,有的是专为后台而生,有的是特定场景下的唯一选择。你随便类比,任何一个领域,都有很多不同的工具来满足不同的场景,是需求决定了当前状态。
现在好了,React 整套解决方案完成了江湖统一,FaceBook 也号称这们技术是 “Learn Once,Write AnyWhere”,学习成本只有一次,却完成了所有开发角色的统一。
这意味着:
1.app 将来都是可像网页一样热更新,随时发布。
2.对于一名开发人员,将再也没有前端,终端,后台的区分,他所关注的就是做一整套应用程序,人力将得到最大幅度的整合与释放。
3.代码复用将会是主旋律,因为是一种语言,大家重复造轮子的成本会越来越节省。
目前,React Native 也还是有一些缺点的,比如他的 sdk 组件包 size 还比较大,crash 还比较多,在 ios 上支持的内容已经相当不错,android 还属于初级阶段,但是目前最新的版本也才是 0.16,相信再过一年, 一定会牛逼闪闪。
注: 框架介绍
开发环境以及适用的机型
● 开发环境
Android:
Node.js
Android SDK
react-native-cli 命令行工具
IOS:
Node.js
Xcode 7.0或者更高版本
react-native-cli 命令行工具
● 适用的机型
Android4.1(API16)以上(包含4.1)以及IOS7.0以上(包含7.0)的设备。
组件介绍
● 常用的组件
主要包括:引导页组件、通信组件、异常组件、进度提示组件、底部导航条、顶部导航组件、列表组件、下拉刷新组件、图表组件、Item选项组件、上传组件、下载组件、数据库组件、工具类组件、按钮组件、单选框组件、筛选组件、开关组件、进度条组件、对话框组件、日期组件、时间组件、图片轮播组件、倒计时组件、系统相册组件、二维码生成组件、二维码扫描组件、复选框组件等等
● 扩展的组件
主要包括:登录安全组件、通信安全组件、移动端本地安全组件、缓存组件、ocr组件等等
● 模版组件
主要包括:登录组件、我的界面组件、版本更新组件等等
● 兼容性解决方案
React Native开发框架开发过程中,不同操作系统的移动设备上存在兼容性的问题(在Android或者IOS手机上显示正常,但在IOS或者Android手机上显示不正常),以及相同操作系统的移动设备上不同版本也有可能会出现兼容性的问题。产品提供了兼容性check list和解决方案,避免类似的问题出现。