[解決済み] React JS index.js ファイルが id 参照のために index.html に連絡する方法とは?重複
質問
最近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.js
の中のどのスクリプトタグにも
index.html
. しかし、どのようにして
root
の div 要素をどのように参照しているのでしょうか。
index.html
? 問題なく動作しているので不思議に思っています。説明お願いします。
私は以下のコマンドを実行してアプリを作成しました。
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"
バイナリに移動します
react-scripts
の下にある
node_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モジュール(
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
あなたの問題の2つのファイル。
わあああああああああああああああああああああああああああああああああああああああああああああ それはかなりの旅でした...:P
アップデート 1
- 現在のところ
[email protected]
は
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の設定を1つにまとめました。
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'),
...
};
関連
-
[解決済み】Reactコンポーネント内でswitchステートメントを使用するには?
-
[解決済み】コンポーネントの定義に表示名がない react/display-name
-
[解決済み] React.createElement: type is invalid -- expected a string.
-
[解決済み] SVGサークル内の画像にボーダーを追加する方法
-
[解決済み] ReactJsのCreateClassは関数ではない
-
[解決済み] React の open mailto E-Mail クライアントの onClick で textarea から本文を取得する。
-
[解決済み] Cross-envでyarnの実行時にenv変数が変更されない。
-
[解決済み] create-react-appビルドスクリプトを実行する際に、ビルド.env変数を設定するには?
-
[解決済み] ESLintとTSLintの違い【クローズド】について
-
[解決済み] Reactコンポーネントに条件付きで属性を追加するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jestの `beforeEach` グローバルは何のためにあるのですか?
-
[解決済み] Apolloクライアントでログアウトした後、ストアをリセットする
-
[解決済み] バベルエラーです。JSX値は、式または引用されたJSXテキストのいずれかである必要があります。
-
[解決済み] SVGサークル内の画像にボーダーを追加する方法
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] componentWillReceiveProps は名称が変更されました。
-
[解決済み] React - 予想外のトークン、予想外の;
-
[解決済み] ReactJS で inst.render が関数でないエラーが発生する
-
[解決済み] Create-React-Appアプリケーションのindex.htmlとindex.jsの接続は?