学习 React Native 7

JSX 和 React Native

 

React Native 中,我们就同在 React 中一样,使用JSX来写视图控件, 混合着标记代码和脚本文件把视图控件的代码放在一个单独的文件中。 在React 刚开始研发之时,JSX机制遭到强烈的抵制。对于大部分的网页开发人员来说,每个独立的文件都是基于所使用的不同的技术:大部分程序员都会把 CSS, HTML 以及 JS文件放在不同的文件结构中去。 这种把标记语言,控制逻辑甚至是样式文件都放在统一的一种语言中做开发很容易让人搞混淆。

 

当然,使用JSX的理由就是他已经能够在不同的技术层面上为各种不同的关注排列优先级。 在React Native中,这个策略更为增强了。 换句话说,无须借助浏览器,React Native 都能够更好的在同一个文件中协调处理每一个控件的样式,标记语言以及他的行为。因此,在React Native 中,您的.js 文件实际上就是JSX 文件。当您在使用React 做网站开发时,使用的是Vanilla Javascript, 那么您得把JSX 语法转换到您的React Native 项目中去。

 

考虑宿主平台的API.

 

也许React React Native 之间最大的区别在于我们考虑宿主平台的API的方式并不相同。 在网站上, 要处理这些问题基本上都是碎片化的,不边续的标准方式; 仍然,大部分浏览器还是支持共享的功能的核心基础。 然而,在使用 React Native 时,在创建优秀的,自然流畅感觉的用户体验时,平台规范的API 则扮演的重要的角色。 这里仍然还有很多选项需要考虑。 移动 API 包括了从数据储存,到位置服务,到硬件访问,比方使用相机功能等一切功能。 由于 React Native 的主要目的就是为了向其它更多的平台扩展,所以我们也可以预见这里有各种各样不同的APIs;  那么举例来说,对于这些处于React Native 以及虚拟现实的耳机之间的接口应该是什么样呢?

 

默认的, iOS版本的 React Native 包括支持了绝大多数的正在使用的iOS 的功能,同时,React Native 也能支持任何一个异步原生的 API. 在本书中我们会学习大部分的 API. 如果您以前是做网页版本的开发工程师,那么这些数组的选项会一开始会让您不太适应。 幸福的是,  React Native 让我们使用宿主平台的API变得直接且简单了, 您可以自由的去感受下。确保对于您的目标平台来说,考虑他们正确的感觉,在脑海中利用自然交互去设计您的程序。

 

不可避免的是,React Native 的桥接口并不能完全对接上所有的宿主平台的全部功能。 如果您发现了一个您要使用的不被支持的功能,您可以选择自己来编写代码来处理。 另外,也存在极大的可能就是别人已经把这工作做了。所以时不时去查查社区里的相关信息,看看有人是否已经或者快要发布您想要的功能接口了。

 

还有一个特别值得关注的点就是使用宿主平台的API 也暗示着要好好利用下代码复用。需要平台规范的功能的那些 React 组件也一定是很符合平台规范的。 分离并封装这些组件将为您的应用程序带来很大的灵活性。 当然这些也可以应用在一般网页上:如果您打算在React React Native 之间共用代码,一定要记住,象文档对象模式这一类的东西其实在React Native 中是不存在的。

 

总结

 

React Native 提供了一种新的让人着迷的方式,在目标平台上使用 JavaScript语言。 对于那些熟悉React 的网站开发工程师, React Native 诱惑着他们这个新的机会可以快速的开发他们的移动应用程序,而无须投入太多经费。 其实现在已经存在了很多和React Native 一样的解决方案了,就如同那未知的世界等我们去探索。

 

为了能更充分的发挥React Native的长处, 您需要了解一些相关的知识。 好消息是您以往的React 的相关工作经验可以为您奠定一个坚实的基础,帮助您成功的使用 React Native.  下一个章节我们就会开始真正的写一个在iOS上运行的 React Native 的应用程序了,我想您一定会对这种在家里就可以完成全部的移动开发任务而感到吃惊了。我们将从最基础的知识开始,带您站起来,最后能完全跑起来,同时也会指导如何调整您已经具备的关于React 的知识,以便于您能快速的掌握React Native在移动应用上的开发。到了最后一章,您就完全可以把一个很强壮的应用布署到苹果的应用商店了。

不深思则不能造于道。不深思而得者,其得易失。

名人名言- 曾国藩
  • By 优联实达
  • 2015-11-19
  • 1823
  • 公司新闻,网站开发,网站设计,UI