React-Native跨平台示例编写一次并在任何地方使用或DRY?

时间:2017-08-27 20:53:57

标签: android ios facebook react-native cross-platform

我是React-Native的新手并且喜欢它到目前为止。真的很棒的技术和非常令人印象深刻的工具。我想建议在我的公司使用它。

然而......反应原生的例子演示代码共享btw Android和IOS平台根本找不到???我在3-4周后发现的所有内容都是很少见但仅 的IOS示例。下面,只是缺少这一点的文章的几个例子。虽然他们中的一些人声称他们的头衔都涵盖了两者,但他们只涉及IOS:

https://www.raywenderlich.com/165140/react-native-tutorial-building-ios-android-apps-javascript

https://mentormate.com/blog/react-native-components/

http://www.andevcon.com/news/take-a-crack-at-react-native-with-kyle-banks

https://appendto.com/2016/11/build-a-coffee-finder-app-with-react-native-and-the-yelp-api/

https://reactjs.co/react-native-convention/

https://www.lullabot.com/articles/build-native-ios-and-android-apps-with-react-native

https://code.facebook.com/posts/1189117404435352/react-native-for-android-how-we-built-the-first-cross-platform-react-native-app/

https://medium.com/@MentorMate/best-practices-for-building-an-app-with-react-native-components-7dee3b2b010f

https://code.tutsplus.com/tutorials/creating-a-dictionary-app-using-react-native-for-android--cms-24969

http://facebook.github.io/react-native/docs/tutorial.html

...,这个列表可以继续,但它应该足以证明我所讨论的缺乏良好的资源。

我理解react-native是跨平台的,你可以为Android和IOS编写代码,这一切都很清晰。

但它是否共享代码?换句话说,是干吗?从我看到的,它是为每个平台写一次,而不是为所有平台写一次。同样,我理解一些观点(但不是全部)是特定于平台的,但同样,在同一个项目中,没有任何示例可以显示Android和IOS上的内容。

非自我世界(现实生活)的例子在哪里清楚地展示和教导如何做到这一点? React native曾经在版本0.20左右使用它但是它被移除并替换为HelloWorld示例?说真的@Facebook ???

根据上面的链接,许多React-Native文章的标题都涵盖了两个平台,但之后他们只讨论IOS而不提及任何其他平台?很少谈论Android,再次,甚至没有触及同一项目中的其他平台。 ......很多都已经过时了!

我知道这项技术非常新(从目前为止我看到的非常好,我真的很喜欢它)。

但是假设我必须提出React-Native作为公司的下一代平台,我没有看到任何令人信服的跨平台,代码共享示例演示这对于Android,IOS(UWP ??)我可以帮助我学习,理解,构建和演示该提案的示例。

我不是在寻找繁琐的评论或课程链接,而是通过示例来展示如何在CRNA生成的HelloWorld应用程序中执行此操作。

1 个答案:

答案 0 :(得分:4)

在第1段中找到答案https://www.codementor.io/vijayst/build-react-native-retrofitting-ios-app-to-android-gsf5uyl1q,这正是我一直试图获得RN / Facebook的答案,但他们一直忽略了这个问题。

非常令人失望!

所以,ReactNative不是" build-once-use-everywhere-34;而是"学习 - 一次使用 - 无处不在"意思是很多代码重复。到处都是,它们主要是指Android和IOS,尽管这些例子主要是IOS。如果它们涵盖两个平台,那么几乎没有代码共享,但代码重复很多。

虽然,RN声称他们可以实现高达90%的代码共享,但我无法在任何地方找到它。文档在触摸任何内容时非常浅薄,更不用说代码共享的主题了,RN提供的教程是HelloWorld,...是的,认真的。伤心!虽然他们过去在旧版本中有更好的教程(如0.20左右)。

在向公司推荐RN作为下一代平台方面,我看到几个问题

  • 关于专利许可,没有解释,没有解释,非常模糊,并且对于考虑转向此事的公司感到担忧,我宁愿用引号说明开源。希望这会改变,因为我认为它是任何考虑采用这种技术的人的市长showstopper。 我想说这不再适用,因为FB根据https://github.com/facebook/react-native/issues/16079使用MIT进行反应本地许可

  • 非常基本的文档,没有深入解释。例如,这是反应原生站点和演示样本,以演示代码共享跨平台性质(我警告你,这是一个HelloWorld示例)https://facebook.github.io/react-native/docs/tutorial.html

  • 反应原生社区的Facebook页面,你应该找到帮助的页面,并根据本机网站提出问题只会阻止你,如果你带上这个主题并且不会让你进入
  • 即使在这样的问题上,这样的问题(经过极其彻底和耗时的研究)也只能让你降级,零答案甚至尝试
  • 示例缺乏清晰度和解释深度,似乎整个社区都遵循一种模式,复制/粘贴演示代码复制而不是代码共享
  • 大多数示例涵盖(在最基本范围内)只有IOS,尽管大多数声称Android和IOS上的跨平台性质仅在标题中提及Android且仅覆盖IOS
  • 无法在react-native网站上寻求帮助
  • 除了创建拉取请求之外,不可能在反应原生网站上建议改进。换句话说,他们希望你免费为他们工作
  • 这个框架是跨平台的,这很棒,但更多的是复制/粘贴(从IOS复制到Android,然后修改需要修改的内容)而不是代码共享策略。我能找到的每一个例子,花了我一个月的时间,都违反了DRY原则的最佳形式

虽然我在研究期间提到了最让我困扰的事情,但我不得不说,我希望这项技术能够蓬勃发展,并在未来成为明确的开源平台。我非常喜欢它,并希望@Facebook / @ReactNative的人会考虑这些建议,或者至少提供文档,示例,社区访问,提问和获取帮助的地方的改进,明确许可,......所有这些经过一个月的研究RN后,我无法得到。

也许技术还不够成熟,这是有道理的,它是非常新的。

我会推荐它吗?

  • 对开发者来说肯定是的。我自己非常喜欢它,并会花更多时间研究它。

  • 对一家公司?不是出于上述原因。

更新 - 变得更好:):

...并将我的2c添加到任何遇到相同问题并为社区做贡献的人(至少在找到谈论IOS和Android的教程方面),我会继续发布我设法找到的链接远:

本文件解释了RN的理念是“学习一次,随时随地写作”#34;而不是"写一次,在任何地方运行" http://makeitopen.com/tutorials/building-the-f8-app/design/