什么是“create-react-native-app myproject”和“react-native init myproject”之间的真正差异

时间:2017-08-20 13:11:48

标签: react-native react-native-android

我最近开始做出反应原生和跟随教程的指南 2选项一是通过“create-react-native-app myproject”创建项目,另一个是“react-native init myproject”。

第一个(create-react-native-app)只生成app.js而另一个生成index.android.js和index.ios.js ..

我知道他们在做同样的工作,但这里有真正的不同之处吗?我应该选择哪一个开始,哪一个更有用?

1 个答案:

答案 0 :(得分:20)

create-react-native-app(“CRNA”)CLI基于Expo构建项目模板,native APIs是第三方工具包,允许您使用仅JavaScript编写跨平台的React Native应用程序< / em>,并提供更流畅的工作流程,以使应用程序在真实设备上运行。此外,Expo可以访问大量detach,您通常需要库或自定义本机代码。

世博会很棒,在一个理想的世界里,它是大多数应用程序开发者可能更喜欢使用的东西,但是Expo的架构设置了一个不幸的限制:你不能编写自定义本机模块,或者集成依赖于自定义的第三方库未构建为Expo的本机代码。这意味着您只能访问React Native和Expo提供的本机功能,并且无法轻松扩展它。

相比之下,react-native CLI的init命令创建了一个简单的React Native应用程序模板,您可以修改本机iOS和Android项目。这种方法的缺点是您需要在计算机上设置原生iOS和Android构建链,开始开发和部署应用程序会非常麻烦。

幸运的是,Expo提供了一种通过其原生app shell handy guide CRNA应用程序的方法。这会将CRNA项目转换为类似于react-native init创建的普通项目,但可以访问所有Expo SDK功能。

在实践中,大多数初学者和新项目的最佳方法是从create-react-native-app开始,并评估您是否需要稍后分离。 Expo提供{{3}帮助做出决定。