我试图了解React-Native的开发过程,所以我找到了有关Metro的信息,然后阅读了此Metro视频):
Metro是React Native的开发平台,它通过 公开 HTTP服务器,以便客户端(在这种情况下,模拟器)可以 与之通信,它还公开了一个 Websocket服务器,因此它可以 将更新推送到客户端。
文档讨论了运行在端口8081上的“ React Native Packager”(根据视频,现在称为Metro),因此,例如,当我们键入react-native run-android时,HTTP服务器会启动吗? / p>
关于Websocket,我仍然需要read more。
文档显示我们在两种环境中运行JavaScript代码,这取决于我们是否处于调试模式。但这article使我有些困惑,说:
否。 4您的代码无法在Node.JS上运行:您拥有的JavaScript运行时是以太JavaScriptCore(非调试)或V8(调试)。甚至 尽管您可以使用NPM并且节点服务器在后台运行, 您的代码实际上不在Node.JS上运行。所以你将无法 使用Node.JS包。一个典型的例子是jsonwebtoken 使用NodeJS的加密模块。
然后,我读到以下内容:
React Native使用JavaScript运行时Node.js来构建您的 JavaScript代码。
Node.js是一个服务器端JavaScript运行时环境。反应 带有为Node.js编写的一些工具的原生飞船。
Node.js是基于Chrome的JavaScript构建的开源平台 运行;它提供了一种轻松构建快速,可扩展的方法 程式。 Node.js允许您在终端中运行JavaScript,并有助于 创建模块。
在此article中,它说:
从nodejs.org下载node.js。此JavaScript运行时为您提供 访问npm,这是由node.js创建的便捷工具 可用于管理开源软件包的项目。确保 您下载了最新的LTS(长期支持)版本的 node.js。 此下载文件中还包括一个开发服务器 称为Metro捆绑器,可在调试时提供实时更新。
所以:
答案 0 :(得分:3)
您将在当今的环境中编写四种JavaScript:
1)客户端浏览器JavaScript:
这就是当网络浏览器访问您的网页时发送给他们的信息,然后在客户端的浏览器中执行。当您希望JS快速加载并在各种浏览器上运行时,通常会使用编译器将编写的现代ESnext转换为具有更好支持的缩小版本。
2)客户端本地JavaScript:
大多数设备确实具有本机JS运行时,因此您可以将JS文件与Android / iOS /桌面应用程序一起发送,然后在此处启动它们。这些引擎还支持将JavaScript的钩子添加到您的本机代码中,这就是React Native确实提供其API的方式。
3)服务器端NodeJS JavaScript:
NodeJS是用于运行服务器的运行时。
4)在NodeJS上运行的构建脚本:
您可以使用JavaScript生成JavaScript文件。这样便可以捆绑(1)和(2)(也许还有(3))的文件。
现在metro
是一个服务器端构建脚本(在NodeJS上),您可以用来:a)启动将JS作为网页(1、3)提供服务的服务器,或b)将JS捆绑在一个服务器中您可以在设备上安装的本机应用程序(2)。
Node.js在RN中的作用是仅访问npm并管理软件包?
不。 metro
本身就是一个包,然后您可以在NodeJS上运行它。