Facebook已经表示React Native建立在学习一次,到处写的原则上,并且其目标不是编写跨平台代码。
NativeScript,与它们都使用Node.js的ReactNative非常相似,通过在使用无法共享的本机组件的文件中编写特定于平台的代码,提供了在多个平台上共享相同代码的功能。它通过简单的命名约定来实现,例如 foo.ios.js 。
由于Facebook还没有为iOS以外的其他平台发布React Native代码。这是他们将来可能支持的东西吗?
答案 0 :(得分:3)
我认为Android,iOS和Web之间存在太多差异,因此为整个项目构建通用代码库没有多大意义。 Android版本不仅有本机组件,而且应用程序屏幕和导航的逻辑也会不同(iOS / Android / Web都有完全不同的导航模式)。此外,还有许多本机组件作为iOS / Android项目的一部分,它们会影响应用程序的启动/调试等。因此,将Android和IOS部件保存为单独的项目可能要好得多。
我如何理解(并同情)Facebok模型:
每当有一个共同的功能(在javascript中)你可以分离而不依赖于react-native视图时,他们会将它作为可以在web / iOS / Android上重用的独立组件来实现。例如,他们有为Facebook建立的中继库。它抽象了对Facebook服务器上的开放图数据的访问 - 完全相同的中继库可以在任何一个环境中使用,因为它没有依赖于视图,应用程序逻辑和反应。
我非常同意这种方法 - 跨平台的最佳方式是遵循相同的做法:
因此,针对相同“项目”的Android和iOS以及基于反应的应用程序将始终是三个不同的代码库,但它们可能以重用库的形式拥有相当多的共享javascript代码。