我已经使用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。
谢谢。
答案 0 :(得分:2)
大概了解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应用。
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 docs react-native-cli
将在node_modules
中调用本地安装的CLI版本。