質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3434閲覧

Reactでlocalhost:3000を表示したときの呼び出されるファイルの流れが知りたい

k499778

総合スコア599

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/03/19 13:43

前提・実現したいこと

現在Reactを勉強しています。
結論から言うと、Reactでlocalhost:3000を表示したときの呼び出されるファイルの流れが知りたいです。

index.htmlが呼び出されそうですが、そうではなく、index.jsが呼び出されるのでしょうか。
Reactをはじめる#index を詳しくみる
上記でもindex.jsがエントリーポイントと書いてありますもんね。

index.htmlはテンプレートファイルのようなもので、index.jsから呼び出されているのでしょうか。

通常のHTMLではindex.htmlからindex.jsを呼び出す記述を書いて、index.jsの処理が実行されるので、いまいちしっくりしていません。逆といいますか、index.jsがエントリポイントで、そこからindex.htmlが呼び出されているのでしょうか。
だとしたらimport文にindex.htmlが書いていてほしいような気がしますが、それもありません。

▼index.js

js

1import React from 'react'; 2import ReactDOM from 'react-dom'; 3import './index.css'; 4import App from './App'; 5import reportWebVitals from './reportWebVitals'; 6 7ReactDOM.render( 8 <React.StrictMode> 9 <App /> 10 </React.StrictMode>, 11 document.getElementById('root') 12); 13 14// If you want to start measuring performance in your app, pass a function 15// to log results (for example: reportWebVitals(console.log)) 16// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17reportWebVitals(); 18

私の認識・予想は以下です。
・index.html,index.js,App.jsが主要な3ファイル
・index.jsが呼び出され、その中のdocument.getElementById('root')で、index.htmlのid属性rootにindex.js内で構成した内容をレンダリング(反映)している?(←ここが知りたい。index.jsからindex.htmlを呼び出している?流れや仕組みが知りたい
・index.jsではApp.jsの内容をインポートして(import App from './App';)、<App />の部分で反映している
・基本index.htmlは修正しない。index.jsもだろうか。基本App.jsを編集したり、新たにComponentを作ってApp.jsから呼び出す。

少し記事を読んでもしっくり来ていないし、あくまで予想になっているので、有権者の方にお聞きさせていただきたいです。

試したこと

・「react index.js どうやって読み込まれてる?」などで検索
・「react 仕組み」などで検索
・表示された記事を参照

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/03/19 14:08

localhost:3000 にアクセスした時に最初に呼ばれるのはもちろん index.html ですが、public/index.html そのままではなく、<script src="bundle.js"> みたいなのが挿入されたものが返ります。 で、bundle.js がアクセスされると、webpack が index.js や App.js などのソースをすべて読み込んで、ライブラリもまとめて一つの大きな JS ファイルにしたものが返ります。
k499778

2021/03/19 14:13

すごくわかりやすいです。ありがとうございます。しっくりきます
guest

回答1

0

ベストアンサー

そもそも、上に書かれたコードはクライアントサイドのコードで、localhost:3000に応答するのはサーバサイドの処理です。

サーバサイドはcreate-react-appがReactの開発用に便利なものを用意してあって、index.htmlに「コードを挿入して、ブラウザーで実行できるように」するなどの処理をしています。

投稿2021/03/19 13:49

編集2021/03/19 13:50
maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2021/03/19 14:00

ありがとうございます。 たしかにサーバーサイドへまずはアクセスしますよね。 create-react-appがサーバーサイドは補填してくれて、その後の呼び出す流れはindex.htmlではなくindex.jsで合っていますでしょうか。 index.jsがindex.htmlを呼び出す?利用?したり、しているイメージでしょうか。大雑把に言うと。
maisumakun

2021/03/19 14:06 編集

違います。上に書いた(そして元の記事にもある)ようにサーバサイドではindex.htmlにindex.jsを埋め込んで返しています。ブラウザはJavaScript入りのHTMLを通常通りに解釈して実行します。
k499778

2021/03/19 14:06

少しindex.jsとindex.htmlがどのように紐付いているかが把握しきれていないです。 静的ページのような基本的なhtml、jsであれば、html内でscriptタグによって、jsが呼び出されているので紐付き方が理解できますが、 Reactではそこが明確になっていないです。index.jsとindex.htmlは明示的な読み込みの記述がなくとも、紐付いていると思っておけばいいのでしょうか。裏でやっているというか、仕組みが担保してくれているといいますか。
k499778

2021/03/19 14:06

あ,入れ違いになってしまいました。確認にします
maisumakun

2021/03/19 14:08 編集

> 裏でやっているというか、仕組みが担保してくれているといいますか。 はい。 あくまでcreate-react-appは開発用の仮環境なので、この仕組を深く掘り下げても実運用するサイトとは何ら関係しません。
k499778

2021/03/19 14:11

>サーバサイドではindex.htmlにindex.jsを埋め込んで返しています。ブラウザはJavaScript入りのHTMLを通常通りに解釈して実行します。 なるほどですね、少ししっくり来たような気がします。index.jsが読み込まれる方法は通常のhtml,jsと一緒なのですね。もちろんですが。Reactの仕様でなにか全く新しいことをしてるのかもとも思いましたが、裏側でやっていることは基本的にhtml,jsの基本的な仕組みで理解できるとわかって安心しました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問