React Native跨平台代码库

时间:2015-06-28 13:17:14

标签: reactjs react-native

Facebook已经表示React Native建立在学习一次,到处写的原则上,并且其目标不是编写跨平台代码。

NativeScript,与它们都使用Node.js的ReactNative非常相似,通过在使用无法共享的本机组件的文件中编写特定于平台的代码,提供了在多个平台上共享相同代码的功能。它通过简单的命名约定来实现,例如 foo.ios.js

由于Facebook还没有为iOS以外的其他平台发布React Native代码。这是他们将来可能支持的东西吗?

1 个答案:

答案 0 :(得分:3)

我认为Android,iOS和Web之间存在太多差异,因此为整个项目构建通用代码库没有多大意义。 Android版本不仅有本机组件,而且应用程序屏幕和导航的逻辑也会不同(iOS / Android / Web都有完全不同的导航模式)。此外,还有许多本机组件作为iOS / Android项目的一部分,它们会影响应用程序的启动/调试等。因此,将Android和IOS部件保存为单独的项目可能要好得多。

我如何理解(并同情)Facebok模型:

每当有一个共同的功能(在javascript中)你可以分离而不依赖于react-native视图时,他们会将它作为可以在web / iOS / Android上重用的独立组件来实现。例如,他们有为Facebook建立的中继库。它抽象了对Facebook服务器上的开放图数据的访问 - 完全相同的中继库可以在任何一个环境中使用,因为它没有依赖于视图,应用程序逻辑和反应。

我非常同意这种方法 - 跨平台的最佳方式是遵循相同的做法:

  1. 在某个环境中使某些东西工作
  2. 使其成为独立的,单一用途的库,不依赖于反应,视图,导航逻辑。
  3. 在其他地方使用图书馆
  4. 因此,针对相同“项目”的Android和iOS以及基于反应的应用程序将始终是三个不同的代码库,但它们可能以重用库的形式拥有相当多的共享javascript代码。