gpt4 book ai didi

reactjs - React JS index.js 文件如何联系 index.html 获取 id 引用?

转载 作者:行者123 更新时间:2023-12-03 12:54:31 27 4
gpt4 key购买 nike

我最近开始使用 React。

我的index.html包含

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<title>React App</title>
</head>
<body>
<div id="root"></div>
</body>
</html>

index.js包含

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';

ReactDOM.render(
<App />,
document.getElementById('root')
);

我的疑问是我没有提到index.jsindex.html 中的任何脚本标记中。但它是如何引用 root index.html 中的 div 元素?我想知道它工作正常。请解释一下。

我已经运行这些命令来创建应用程序

npm install -g create-react-app
create-react-app hello-world
cd hello-world
npm start

最佳答案

Create-React-App 有一个非常有趣的设置。

我开始挖掘 package.json npm 脚本 start

"start": "react-scripts start"

这将我带到 node_modules/.bin
下的二进制 react-scripts我将在这里发布相关内容。

switch (script) {
case 'build':
case 'eject':
case 'start':
case 'test': {
const result = spawn.sync(
'node',
[require.resolve('../scripts/' + script)].concat(args),
{ stdio: 'inherit' }
);

所以这告诉我他们正在 ../scripts/ 文件夹中寻找脚本。

所以我转到react-scripts npm模块(node_modules/react-scripts)并打开node_modules/react-scripts/scripts/start.js文件因为我正在执行 npm start

现在我在这里找到了我正在寻找的 webpack 配置。
他们特别指的是node_modules/react-scripts/config/webpack.config.dev.js。我将在这里发布相关内容。

entry: [
// Finally, this is your app's code:
paths.appIndexJs,
],
plugins: [
// Generates an `index.html` file with the <script> injected.
new HtmlWebpackPlugin({
inject: true,
template: paths.appHtml,
}),

所以paths.appIndexJs引用的文件是webpack配置中的入口文件。

他们正在使用 HtmlWebpackPlugin在路径 paths.appHtml 处加载 html。

最后一个难题是将其链接回您发布的文件。从 paths.js

发布相关内容
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
module.exports = {
...
appHtml: resolveApp('public/index.html'),
appIndexJs: resolveApp('src/index.js'),
...
}

所以在你的应用程序目录中,
appHtml 是文件 public/index.html
appIndexJs 是文件 src/index.js

您的两个有问题的文件。
哇!那是一次相当长的旅程..:P

<小时/>

更新 1 - 自 react-scripts@3.x

node_modules/.bin 下的 react-scripts 二进制文件已更改逻辑,如下所示。本质上做同样的事情。

if (['build', 'eject', 'start', 'test'].includes(script)) {
const result = spawn.sync(
'node',
nodeArgs
.concat(require.resolve('../scripts/' + script))
.concat(args.slice(scriptIndex + 1)),
{ stdio: 'inherit' }
);

开发和生产的 webpack 配置已合并为一个。
const configFactory = require('../config/webpack.config');

HTMLWebpackPlugin 配置看起来像这样 - 这是因为他们必须有条件地在此基础上添加生产配置

plugins: [
// Generates an `index.html` file with the <script> injected.
new HtmlWebpackPlugin(
Object.assign(
{},
{
inject: true,
template: paths.appHtml,
},

路径文件代码有一些更新

module.exports = {
...
appHtml: resolveApp('public/index.html'),
appIndexJs: resolveModule(resolveApp, 'src/index'),
...
};

关于reactjs - React JS index.js 文件如何联系 index.html 获取 id 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738421/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com