React Native是使用JavaScript库构建跨平台移动应用的框架, 反应它于2015年由Facebook公开发布,此后便广受欢迎。
我已经担任高级开发人员多年,并且从2015年末开始与React Native一起工作。那时,我已经使用该技术构建了多个应用程序,并确定了我将在下面阐述的许多优点和缺点。这样,您就可以决定该框架是否适合您和您的组织。
JavaScript输入,本机应用输出
好吧,差不多...
React Native使用React库使用JavaScript构建移动用户界面。在构建移动应用程序时,还可以使用JavaScript构建业务逻辑,而无需编写任何ObjectiveC,Swift或Java。 React Native的主要功能–与其他框架的不同之处在于,它可以使用Web技术构建应用程序,这是您最终获得了真正的本机体验。诸如Cordova和PhoneGap之类的框架产生的内容实质上就是移动应用程序中包含的网页。
听起来很棒吗?对于了解JavaScript和React的开发人员而言,您无需学习新的编程语言就可以构建真正的移动应用程序!但是,有一些限制。
从历史上看,React Native应用的初始化速度很慢。当React Native应用启动时,它将加载您的JavaScript并将其转换为本地用户界面。 React Native社区最近做了很多工作来加快速度,并且启动时间也在缩短,但是由于框架的性质,情况总是如此。
然后,您可能会需要React Native不支持的本机功能。好消息是您可以构建自己的与应用程序的JavaScript端进行交互的本机模块。坏消息是您需要编写一些ObjectiveC和Java。幸运的是,React Native具有强大的开源社区,因此您可能会发现所需的本机功能已经为其构建了模块。
一个代码库,两个以上平台
正式而言,React Native支持iOS和Android设备。但是,存在第三方集成为其他平台提供支持。例如,Microsoft已发布了一个框架,该框架为Windows 10设备提供支持。
在绝大多数情况下,我发现我从事过的React Native应用程序共享了很高比例的代码,当然可以共享所有业务逻辑。但是,您可能会发现Android和iOS用户对UI的期望有所不同。例如,某些表格输入(例如日期控件)在iOS和Android之间有所不同。幸运的是,React Native具有内置的平台选择实用程序,可让您更改每个平台的单个组件的样式,甚至可以在iOS和Android之间使用完全不同版本的组件。
没有DOM
熟悉HTML的开发人员可能会了解`div`和`span`标签。如果您已经为网络开发了一个React应用程序,那么您很有可能会使用这些标签以及更多标签来构建React组件。由于React Native是一个框架,并且无法呈现到网络浏览器,因此它提供了一组基本组件,可用来构建您自己的更高级的组件。出来是`div`,进来是`View`。想要一个“按钮”吗?您需要使用“ TouchableOpacity”或“ TouchableHighlight”自己构建它。
它并不仅限于此,如果您之前构建过具有任何交互功能的网络应用,那么您可能对`form`s很熟悉。 React Native没有`form`的概念,这让我很沮丧!您可以创建按钮和输入,但不能创建表单。幸运的是,通过使用React,您已经内置了对应用程序状态和上下文的支持。因此,您可以构建自己的表单组件,也可以使用第三方程序包。我更喜欢一个名为Formik的程序包,因为它对移动设备和Web使用相同的API,从而促进了我的应用之间的一致性。
在Web和移动应用程序之间共享代码
由于React Native使用JavaScript和React,因此可以共享代码–甚至整个应用–在您的网络和移动客户端之间。例如,如果适合您的用例,则可以在移动设备和Web之间共享数据存储和API客户端等业务逻辑。还有一个名为React Native Web的框架,可将React Native组件呈现到Web浏览器。
更快的发展
React Native支持开箱即用的热重装。当您在编辑器中点击``保存''时,此功能仅重新加载应用程序的更改部分;也就是说,您无需重新启动应用程序,重新登录,导航至您正在使用的屏幕,并检查刚刚更新的标签是否确实可以更改颜色。
您还只需要在发生某些变化(例如对React Native的更新或第三方本机软件包的安装)发生变化时重新编译应用程序的本机部分。对于日常开发,您可以启动JavaScript捆绑器,并在模拟器或设备上打开应用程序,一切顺利。与Android和iOS编译器相比,JavaScript捆绑器的运行速度非常快,从而使体验类似于Web开发。
React Native适合您吗?
如果您是想从Web开发过渡到移动开发的Web开发人员,或者如果您已有使用React或JavaScript的现有Web应用程序,并且想要将功能移植到iOS和Windows上,则React Native是一个不错的选择。安卓使用React Native的工具,您会感到宾至如归,并享受构建真正的本地移动应用程序的速度。
但是,由于它的工作原理,它确实会遭受性能损失。如果您的应用严重依赖本机平台功能和API,或者具有大量动画和过渡效果,则可能会发现它不符合您的需求。在这种情况下,您可能会发现构建真正的本机应用程序对您而言会更好。
React Native的独特功能之一就是能够将其嵌入到您现有的移动应用程序中。因此,如果您认为框架的性能对应用程序的某些部分来说不够,而对其他应用程序来说还不错,那么始终可以选择使用框架来构建应用程序的各个部分。
如果您想进一步了解React Native是否适合您的业务需求,请随时与我们的CTO联系 奥德兰·麦康奈尔 或我们之一 导演.
文化,技能和能力//如何成为数据驱动型组织
在我们的白皮书“如何成为一个由数据驱动的组织中”,我们写了一个组织需要采取的五个步骤,它们是:成果:定义目标和指标以确保获得清晰和可衡量的结果分析:实施和共享分析,以改善数据驱动型决策创新:通过假设测试和学习来测试假设数据平台:获得新见解