首页 > 解决方案 > 关于 reactJS、nodeJS 和 NPM 的一般问题

问题描述

首先,我知道的“事实”:

  1. reactJS 是前端框架,编译后会生成一堆现代浏览器可以识别的 html/js/css 文件,所以浏览器直接向 web 主机服务器请求这些静态 html 文件;
  2. nodeJS 是一个服务器端环境,或者有时人们称它为后端框架,浏览器不理解 nodeJS 但必须请求 Web 主机服务器对其进行解释并发送回 html 响应。
  3. 根据 wiki,npm 是 JavaScript 编程语言的包管理器。它是 JavaScript 运行时环境 Node.js 的默认包管理器。

我的问题是:

  1. 我的理解正确吗
  2. 为什么reactJS也使用npm并包含node_module,它与nodeJS有关吗

标签: node.jsreactjsnpm

解决方案


Javascript 是 Node.js 和浏览器中使用的编程语言,但就其相似之处而言,仅此而已。Node使用V8引擎,运行在chrome浏览器中是一样的。

即使它们使用相同的引擎,它们也完全不同。它们都有大量的 API - 最值得注意的是,浏览器有 DOM(它允许您将内容呈现到屏幕上)。在 Node.js 中,您没有 DOM,但还有其他 API,例如用于访问文件系统。

由于两者都运行 JavaScript,您可以尝试在节点和浏览器中运行相同的程序,但有时会失败。React 是一个使用 DOM 的前端框架,所以如果你尝试在 node 中运行 React,它会崩溃,因为在 Node 中没有 DOM(Node 没有要渲染的屏幕)。如果您尝试在浏览器中运行适合 Node.js 的程序,如果它使用某些特定于 Node 的 API,它将崩溃。

令人困惑的是,npm 是 JavaScript 的包管理器,不一定是 node(即使 node 在名称中......)。因此,我们也可以将 npm 用于 Web 应用程序。(如果我们这样做,我们需要使用像 webpack 这样的捆绑器)。

一些 npm 模块可能在浏览器和节点中都可以工作,但有些只能在其中一个上工作。如果 npm 模块需要一些特定于平台的 API(例如浏览器的 DOM),那么它将不适用于其他平台。

希望能解决问题!我明白这有点乱..


推荐阅读