我试图了解React Native的开发过程,因此我找到了有关Metro的信息,然后我阅读/观看了这Metro个视频):

Metro是React Native的开发平台,它通过

文档中提到了运行在8081端口上的"React Native Packager"(根据视频,现在称为Metro),所以这就是我们键入React Native run android时启动的HTTP服务器?

关于Websocket,我还需要read more个.

文档中说我们在两个环境中运行JavaScript代码,这取决于我们是否处于调试模式,我理解这一点.但这article个让我有点困惑,他说:

No. 4 You Code Does Not Run on Node.JS:您得到的JavaScript运行时是JavaScriptCore(非调试)或V8(调试).即使

然后,我读到了如下内容:

React Native使用 node .js,一个JavaScript运行时,用于构建

node .js是一个服务器端JavaScript运行时环境.react

node .js是一个基于Chrome的JavaScript构建的开源平台

在这article条中,它说:

下载 node .来自nodejs的js.组织.这个JavaScript运行时为您提供

所以:

  • node 的角色.RN中的js只访问npm并管理包吗?而is Metro包含在 node 中.js?我是不是遗漏了什么?非常感谢.

推荐答案

在当今的环境中,您将编写四种类型的JavaScript:

1) 客户端浏览器JavaScript:

这就是当网络浏览器访问你的网页时发送给他们的信息,然后在客户端的浏览器中执行.由于您希望JS快速加载并在各种浏览器上运行,因此通常使用Transpiler将您编写的现代ESnext转换为支持更好的小型版本.

2) 客户端本地JavaScript:

大多数设备都有一个原生JS运行时,因此您可以将JS文件与Android/iOS/桌面应用程序一起发送,然后在那里启动它们.这些引擎还支持将JavaScript中的钩子添加到本机代码中,这就是React native提供API的方式.

3) 服务器端 node JS JavaScript:

NodeJS是一个用于运行服务器的运行时.

4) 在NodeJ上运行的构建脚本:

可以使用JavaScript生成JavaScript文件.这就是打包(1)和(2)的文件的方式(也可能是(3)).

现在metro是一个服务器端构建脚本(在NodeJS上),你可以使用它来a)启动一个服务器,将你的JS作为一个网页(1和3),或者b)将你的JSBundle 到一个本地应用中,你可以在你的设备上安装(2).

node 的角色.RN中的js只访问npm并管理包吗?

No.metro本身就是一个包,然后在NodeJ上运行.

React-native相关问答推荐

无法解析 com.google.gms:google-services:4.3.15

未执行迁移?

axios 在react native 中给出 [AxiosError: Network Error]

React Native Navigation const { navigate } = this.props.navigation;

Android Studio 为构建设置 node 目录(Cause: error=2, No such file or directory)

React Native 上传到 S3 存储空间

设置 rootView.appProperties 不会重新渲染根组件

如何清除react-native webview cookie?

将 svg 转换为 react-native-svg

在本react-native中具有异步和等待的箭头函数

react-native createbottomtabnavigator 隐藏标签栏标签

如何在 Expo 和 React Native 中使用绝对路径导入?

react-navigation模式高度

Tools > Android 菜单在 Android Studio 中不存在

在react-native中调试应用程序崩溃

手动调用 React.PropTypes 验证 React native "^0.30.0"

在 React Native 中将props传递给外部样式表?

React 在任何根目录中都找不到入口文件

如何从 react-native-fbsdk 获取用户信息(邮箱、姓名等)?

将现有的 React Native 项目转换为 Expo