Tag: Native App开发

React Native为何如此原生?

在深入研究React Native池之前,我很好奇这件事到底是如何工作的。 毕竟,开发人员无法忍受任何黑匣子,而通过任何抽象透视都是他们最喜欢的部分。 在使用任何React Native组件之前,我都仔细阅读了文档,讲座和会议。 在这个博客中,我将与您分享我的学习,希望您喜欢它。 我将使用两个领域来说明React Native的神奇之处- 原生球体 这是开发人员在iOS中使用Objective C / Swift和在Android中使用Java / Kotlin的地方。 React Native使用相同的球体来渲染其所有视图,并在主线程上完成。 这个范围使本机感觉保持完整,因此很难分辨应用程序是用本机语言还是React Native编写的。 JavaScript领域 它包含在单独线程上运行的JavaScript代码。 该领域中的代码由Javascript Engine执行。 React Native在这里放置了应用程序的业务逻辑和视图样式。 此处包含的任何代码均不会阻止UI,因此用户体验不会受到困扰。 两个球体都以闪电般的速度发挥作用。 然后,React Native设计了“桥梁”来连接这两个代码容器,并为开发人员提供了超能力: “编写一次,在任何地方运行并保持其本机状态” 你们一定在想:“ 这座桥有什么特别之处? ” 好吧,让我们看一下这个设计合理的组件如何工作- 任何用户交互/事件都会在Native Sphere中检测到,并立即通过桥接传递给JavaScript Sphere进行处理。 JavaScript执行所需的计算,设置状态和属性(与其他编程语言中的参数相同)。但是在React Native中,它称为属性。 完成后,它会序列化数据,并通过网桥将其发送回本机球体以进行视图渲染。 桥接上的任何传递(从Native到Java或从Javascript到Native的调用)都会降低性能图。 这就是为什么要付出很多努力才能使此桥无缝运行的原因。 它支持: 异步执行 – JavaScript代码保持执行状态,而无需等待本机调用完成。 正如我之前提到的,JavaScript领域中的任何活动都不会妨碍用户体验,异步调用使React Native应用程序具有很高的性能。 序列化-通过网桥进行的任何通信都包括可序列化消息的交换。 为什么出现问题,为什么React Native不让两个领域共享数据? 让我们讨论这种方法的局限性。 两个领域中的代码执行都是相互独立的。 如果数据是共享的,则很难确定何时释放分配的内存。 最终将导致内存泄漏。 […]