Reactjs React本机跨平台代码库

Reactjs React本机跨平台代码库,reactjs,react-native,Reactjs,React Native,Facebook曾表示,React Native基于“一次学习,随时随地编写”的原则,其目标不是编写跨平台代码 NativeScript与ReactNative非常相似,因为它们都使用Node.js,通过在使用无法共享的本机组件的文件中编写特定于平台的代码,可以在多个平台上共享相同的代码。它通过简单的命名约定做到这一点,例如foo.ios.js 因为除了iOS平台,Facebook还没有发布他们的React Native代码。这是他们将来可能支持的吗 我认为Android、iOS和Web之间存在

Facebook曾表示,React Native基于“一次学习,随时随地编写”的原则,其目标不是编写跨平台代码


NativeScript与ReactNative非常相似,因为它们都使用Node.js,通过在使用无法共享的本机组件的文件中编写特定于平台的代码,可以在多个平台上共享相同的代码。它通过简单的命名约定做到这一点,例如foo.ios.js


因为除了iOS平台,Facebook还没有发布他们的React Native代码。这是他们将来可能支持的吗

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

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

只要有一个公共功能(在javascript中)可以分离出来,而不依赖于响应本机视图,它们就会作为单独的组件来完成,可以跨web/iOS/Android重用。例如,他们为网络Facebook建立了中继库。它将对Facebook服务器上开放图形数据的访问抽象化——完全相同的中继库可用于任何一种环境,因为它不依赖于视图、应用程序逻辑和相应的反应

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

  • 让某些东西在其中一个环境中工作
  • 使其成为独立的、单一用途的库,而不依赖于反应、视图和导航逻辑
  • 在别处使用图书馆

  • 因此,用于同一“项目”的Android、iOS和基于Web react的应用程序将始终是三个不同的代码库,但它们可能有大量以重用库形式共享的javascript代码。

    “从某种意义上说,它们都使用Node.js”-react Native不使用NodeJS@BenjaminGruenbaum例如他们把它列在,所以看起来他们确实使用了Node.js。Node.js是用于开发的,而不是实际的引擎。React Native使用JavaScriptCore,NativeScript使用JavaScriptCore for iOS和V8 for Android。请参阅这篇关于如何在React Native中跨平台共享代码的文章:看看你是否签出了NativeScript?这是一个更“哲学”的陈述,而不是特定的工具。我们为不同的平台开发了很多应用程序,虽然一些内部构件在不同的平台上非常常见,但UI和导航模式却大不相同。它们之间的差异已经足够大了,所以让单个项目生成iOS和Android是没有意义的。应用程序的主要部分-即用户看到的内容必须有所不同。所以我坚信,对于跨平台应用程序,以库的形式重用代码是最好的选择。我们以前在C语言中做过这件事,效果很好。同意Jarek的说法——跨多个平台的整个项目的通用代码库似乎与React Native的用途相反。有许多框架允许您编写一次并在任何地方运行,这会导致非常糟糕的用户体验。我已经安装了带有Android共享图标的iOS应用程序,以及带有iOS设计语言的Android应用程序,但这只是一个糟糕的体验。仅仅因为你可以做一些事情并不意味着你应该做。我相信这也是Xamarin解决方案的工作原理:不同的UI但通用的逻辑。如果react native不能很好地支持跨平台,为什么我要使用它而不是像Java、Swift这样的本机开发呢?