wle*_*300 41 android reactjs react-native
我正在考虑将React Native用于新的Web应用程序.是否可以使用它发布iOS和Android应用程序?
我知道它在路线图上,但我不清楚它是否会是一个单独的开源项目(例如,React Android vs React Native),或者只是一个(例如,React Native).
noo*_*oob 51
TLDR:你很有可能.但这取决于您的使用案例.
您可以瞄准大约80~99 +%的代码重用(取决于您使用的Android/iOS本机视图/模块的数量,例如.您是否拥有自定义图形代码或低级TCP网络代码;这些代码只能在本机代码中完成;并将API公开为您的JS代码.平台特定JS代码的数量实际上是最小的.另外,您也可以使用平台检查if (Platform.OS === 'android'){}解决那个代码重用问题,非常好.Dropbox和其他公司已经完成了类似的项目:使用c ++在iOS和Android项目之间构建"共享"组件,同时在本机iOS(Objective-c或swift)和Android(java)中实现大部分UI代码.但是现在你正在使用Java和ObjectiveC或Swift进行C++,需要掌握更多语言,更复杂,更多脑汁流失.它可能需要一些超级强硬的体操动作才能在iOS和Android上使用不同的本机代码,再加上调试...
React Native只是使用JavaScript编写几乎所有东西变得容易多了.但是有一个问题,只有大约80%的JS代码可以共享.在可预见的未来,您仍然需要为Android和iOS版本编写"特定于平台"的JS代码.
这就是为什么FB说他们的目标是"一次学习,随处编码",而不是到处都是"跑步".
但是除了代码重用之外它还是非常好的(与维护2个完全不同的版本相比,80%代码重用仍然是一个很大的改进:Android和iOS是什么?)
用于刷新应用程序的Cmd + R对于开发速度来说是一个很大的提升.等待一个大项目进行编译只会让你觉得你在死里面..
由于使用React,您可以免费获得声明性UI.这是另一个很好的加分!因为您不需要经常"挖掘"您的特定UI代码.数据变了?只需'刷新'它,UI就会相应更新.没有脑汁浪费.
我刚刚将我不那么复杂的Android React Native App移植到iOS.我花了3天时间.应用程序和iOS版本的请求是一个相当突然和无计划的举动.如果我用iOS计划构建Android,那么肯定会更快.巨大的胜利:)
另一个很大的好处是能够在不经历地狱般的1周应用商店审核流程的情况下进行热门代码推送.所以没有了,"我们的应用程序已被批准.让我们发布.哦,Shiiit.严重错误和我们的应用程序不断崩溃(这将在你的修复程序上线之前至少持续一周发生).而你必须乞求苹果加速这个过程".这是可能的,因为代码库的主要部分将使用JS和AppHub或CodePush等工具编写,您几乎可以立即将代码部署到用户.这是Apple 有条件允许的.
3.3.2应用程序不得下载或安装可执行代码.如果所有脚本,代码和解释器都打包在应用程序中而未下载,则解释的代码只能在应用程序中使用.上述唯一的例外是Apple内置的WebKit框架下载和运行的脚本和代码,前提是这些脚本和代码不会通过提供与预期和广告目的不一致的特性或功能来改变应用程序的主要目的提交给App Store的应用程序.
最后,作为一个开源项目,项目的长寿往往是一个问题.不是React Native的问题.Facebook内部使用(FB广告管理器)并由FB(十几个FB工程师?)支持,有近500名贡献者和25k星,React Native充满了活力.眼见为实:)(https://github.com/facebook/react-native)
编辑1
我意识到我显然有点偏颇,只谈到了关于React Native 的好东西.所以请查看https://productpains.com/product/react-native/和Github问题以获得完整的图片.这绝对不是银弹.话虽这么说,它满足了我的大多数用例,我看不到我很快就会使用原生iOS或Android.
编辑2 Facebook的Facebook F8会议应用程序(duh ..)是100%开源的,他们有一个非常好的教程,向您展示如何同时拥有iOS和Android本机体验(90%与本机相同?),同时,实现了85%的代码重用.检查出来 - > https://makeitopen.com
编辑3 你可能还想检查Flutter及其利弊:)
Col*_*say 20
如果您想要真正的原生体验,拥有单一代码库是没有意义的.目前我们在React Native中有一些像NavigatorIOS这样的东西,它提供了一个iOS风格的用户界面,可以在应用程序屏幕之间导航,但是如果我们刚开始在Android上使用它,它就不会像真正的Android应用程序那样.
因此,我希望在时机成熟时看到NavigatorAndroid组件或类似组件,并且在平台之间表现不同的各种其他组件也是如此.
您将获得的一个好处是,任何应用程序逻辑 - 可能是商店或您的后端交互 - 都可以用JavaScript文件编写,然后由iOS和Android包含.
因此,虽然您不会从React Native获得一次性写入 - 无处不在的开发人员体验,但我希望看到一种解决方案,它可以在两个平台上提供一流的UI,同时鼓励尽可能多地重用.我个人也希望看到强大的构建工具来帮助开发和发布多个平台.
| 归档时间: |
|
| 查看次数: |
5750 次 |
| 最近记录: |