这些 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。但是,我知道可以使用纱线。这些是我真的不明白它们的区别的命令:
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.View
。 react-native
包中的每个基本组件都是以这种方式实现的。如果您想在这两个平台上添加额外的原生功能,比如使用原生地图组件的库,您最终将不得不将原生库分别包含到您的 Android build.gradle
和 iOS .xcodeproj
中。
exp
CLI 用于启动使用Expo SDK 构建的应用程序。 Expo 本质上是一个预构建的应用程序,为了方便起见,已经包含了一组本地组件;你提供的只是你的 JSX;因此,如果您需要使用任何其他库,建议“弹出”到常规反应本机应用程序。
react-native run-ios
和 run-android
使用 iOS 或 Android 工具链构建本机 .app
或 .apk
,启动 Metro Bundler,它会在调试时将 JSX 和其他资产(例如图像)压缩并提供给您的设备模式(您可能会看到类似 Loading from localhost:8081
的内容)。
在 Android 上,如果您启用了 USB 调试,它会启动 adb
服务器以将包含所有本机库的 APK 推送到您的设备上。 run-ios
对 .app
做同样的事情;如果您安装到模拟器,它会自动配置 AppDelegate.m
与 localhost: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> 有啥区别?
React Native:build.gradle 文件中的 Android Gradle Plugin 和 Android Studio 有啥区别?