这些React Native启动命令之间有什么区别?

时间:2018-12-18 01:11:18

标签: react-native

我已经使用React native几个月了。但是,我真的不知道启动命令之间的区别。目前,我在项目上使用npm。但是,我知道可以使用纱线。这些是我真的不理解的命令:

exp start,exp ios,exp android

react-native run-ios,react-native run-android

npm start,npm ios,npm android

在哪些情况下,哪个更好?为什么?目前,我正在使用exp,但其他人则使用react-native run-ios。我曾经使用npm ios。

谢谢。

1 个答案:

答案 0 :(得分:2)

大概了解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应用。

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 docs react-native-cli将在node_modules中调用本地安装的CLI版本。