这些 React Native 启动命令有啥区别?

Posted

技术标签:

【中文标题】这些 React Native 启动命令有啥区别?【英文标题】:What are the difference between these React Native start commands?这些 React Native 启动命令有什么区别? 【发布时间】:2019-05-18 09:38:00 【问题描述】:

我已经使用 react native 几个月了。但是,我真的不知道启动命令之间的区别。目前,我在我的项目中使用 npm。但是,我知道可以使用纱线。这些是我真的不明白它们的区别的命令:

exp 启动,exp ios,exp android

react-native run-ios、react-native run-android

npm 启动、npm ios、npm 安卓

在什么情况下哪个更好,为什么?目前,我使用的是 exp,但其他人使用的是 react-native run-ios。我以前用npm ios。

提前谢谢你。

【问题讨论】:

【参考方案1】:

了解React Native architecture 的概况可能会有所帮助。

在 react native 中,当您编写 <View/> 时,它会通过桥发送到本机代码并动态转换为 iOS 上的 UIView 或 Android 上的 android.view.Viewreact-native 包中的每个基本组件都是以这种方式实现的。如果您想在这两个平台上添加额外的原生功能,比如使用原生地图组件的库,您最终将不得不将原生库分别包含到您的 Android build.gradle 和 iOS .xcodeproj 中。

exp CLI 用于启动使用Expo SDK 构建的应用程序。 Expo 本质上是一个预构建的应用程序,为了方便起见,已经包含了一组本地组件;你提供的只是你的 JSX;因此,如果您需要使用任何其他库,建议“弹出”到常规反应本机应用程序。

react-native run-iosrun-android 使用 iOS 或 Android 工具链构建本机 .app.apk,启动 Metro Bundler,它会在调试时将 JSX 和其他资产(例如图像)压缩并提供给您的设备模式(您可能会看到类似 Loading from localhost:8081 的内容)。

在 Android 上,如果您启用了 USB 调试,它会启动 adb 服务器以将包含所有本机库的 APK 推送到您的设备上。 run-ios.app 做同样的事情;如果您安装到模拟器,它会自动配置 AppDelegate.mlocalhost:8081 通信,而通过 USB 实时重新加载必须在物理设备上手动配置。

react-native start 只需启动 Metro 捆绑器,如果您已经安装了该应用程序,这将非常有用。

npm 开头的命令在package.json 文件中定义为脚本。从 RN 0.57 开始,npm start 只需调用 node node_modules/react-native/local-cli/cli.js start;这与运行react-native start 相同;单独安装according to the docsreact-native-cli会调用node_modules中本地安装的CLI版本。

【讨论】:

“yarn android”呢?

以上是关于这些 React Native 启动命令有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

React Native 中的 alignItems 和 alignSelf 有啥区别?

弹出 React Native 项目时,Bare 和 ExpoKit 有啥区别?

React Native 中 textBreakStrategy 属性的简单、高质量、平衡有啥区别?

npm install -g react-native-cli 与使用 npx react-native init <project name> 有啥区别?

SafeAreaView的不同实现有啥区别?

React Native:build.gradle 文件中的 Android Gradle Plugin 和 Android Studio 有啥区别?