客户端是否需要下载反应库,或者他们如何访问像反应或反应-dom这样的模块?

Is client need to download react library, or how do they access module like react or react-dom?

一个简单的问题: 当我开发时,我的库总是在我的项目文件夹中,名为 'node_modules',并且我不时使用 import React from 'react',但我的客户在他们的机器中没有这个库。

那么,客户是如何在库中找到这些代码的,我认为他们不会为了访问网站而下载整个库。

对于玩具片段以外的任何东西,开发人员通常的方法是 运行 类似 npm run build 的东西,这将 运行 构建过程 - Create React App's,或者来自像 Webpack 这样的模块打包器,或者其他一些设置。然后这将创建一个 JavaScript“包”,一个包含所有必要代码的单个文件——它将包含来自 React、React DOM 的代码,以及所有你使用过的文件,放在一起单个文件。

当你运行你的 React 应用程序在你的机器上,或者当你在其他地方托管应用程序时,你或其他客户端将下载只是那个捆绑文件,并且该应用程序将能够 运行 仅此(当然还有一个 HTML 文件)。无需下载任何其他内容。

可能改为强制客户端下载 React 和 React DOM,并让客户端编译和 运行 代码 - 就是这样Stack Snippets 在 Stack Overflow 上工作:

const App = () => {
    return <div>foo</div>;
};

ReactDOM.render(<App />, document.querySelector('.react'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div class='react'></div>

它非常适合快速演示和玩具片段。但这对于真正的应用程序来说不是一个好方法,因为它会让客户端不必要地做大量工作(在带宽和 CPU 方面)——所以通常你会想通过 NPM 创建一个包改为脚本。

这就是现在有多少框架在工作,而不仅仅是 React 的——你有一个构建过程,它获取框架代码和开发人员的代码,并将它们全部变成一个包,然后这个包包含所有需要的代码运行 应用程序。