当前位置: 首页 > 面试题库 >

React JS index.js文件如何联系index.html以获取ID引用?

雷逸仙
2023-03-14
问题内容

我最近开始做出反应。

我的 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.js在中的任何脚本标签中提及index.html。但是它如何引用rootin中的div元素index.html?我想知道它工作正常。请给我解释一下。

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

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

问题答案:

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

我开始挖掘package.jsonnpm脚本start

“ start”:“反应脚本开始”

这将带我进入他们的二进制文件react-scriptsnode_modules/.bin
我将在此处发布相关内容。

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 module(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在路径上加载html paths.appHtml

最后一个难题是将其链接回您发布的文件。从发布相关内容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

下面的react-scripts二进制文件node_modules/.bin更改了以下逻辑。本质上是在做同样的事情。

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' }
  );

用于dev&prod的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'),
  ...
};


 类似资料:
  • 问题内容: 我正在使用一个简单的短信应用程序,正在使用以下代码在加载线程列表时获取线程ID,但是我不知道如何使用线程ID获取联系人ID。我是root用户,并且使用root资源管理器,我可以在数据库中看到一个带有以下各列的联系人表 因此,由于我具有线程ID,因此我应该能够获取联系人ID,但我还需要确保该方法在所有设备上均有效。我的应用不是root用户 获取线程ID的代码 问题答案: 我恢复所有联系人

  • 问题内容: 是否可以在一个查询中完成? 据我所知sim联系人的内容uri是 问题答案: 这很容易!:)

  • 问题内容: 我的脚本当前如下所示: 日期“ x”和事件“ x”是一系列html标签。页面加载(onload)时运行此功能。我的目标是仅从本地.json文件而不是上面获得的硬代码执行同一操作。我已经签出了http://api.jquery.com/jQuery.getJSON/。 本地.json文件如下所示: 有什么建议? 问题答案: 假设您说.json文件的意思是“本地文件系统上的文件”。 您需要

  • 问题内容: 返回一个对象,该对象的方法返回一个没有方法的。 虽然我能够“看到”“ Gid”,但无法以编程方式访问“ Gid”。 如何在此处检索文件的“ Gid”? 印刷品: 注意:我不需要可移植的解决方案,它只需要在Linux上工作即可(值得注意的是,由于众所周知的问题)。 问题答案: 该模块显示的return 的数据类型为,因此这似乎可以将文件的Gid作为字符串获取: 如果有更好的方法,请告诉我

  • 什么是 Bundle ID Bundle ID是第三方应用的唯一识别码,在iOS应用市场被称为Bundle ID,在Android应用市场被称为Application ID。 1. 如何获取iOS Bundle identifier? 1.1 开发者获取 使用Xcode,并切换至Info下,查看Bundle identifier,其中,黑色和灰色的文字都要复制下来。 1.2 运营者获取 登录iOS

  • 问题内容: 我的Android应用程序中有以下字符串: 我需要操纵字符串并为该输出分割字符串: 我需要始终取字符串的最后一个元素。 如何在Java中输出此内容? 我非常感谢您在解决此问题方面可以给我的任何帮助。 问题答案: 另一种可能性: