Node.js在React-Native中的作用是什么?

时间:2019-03-17 12:10:42

标签: javascript react-native

我试图了解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捆绑器,可在调试时提供实时更新。

所以:

  • Node.js在RN中的作用是仅访问npm并管理软件包? Metro是否包含在Node.js中?我在想什么吗?谢谢。

1 个答案:

答案 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上运行它。