123 votes

Comment réagit le fichier JS index.js qui contacte index.html pour des références d’identification?

J'ai récemment commencé à réagir.

Mon index.html contient

<!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>

et index.js contient

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

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

Mon doute est que je n'ai pas mentionné index.js dans toute balise de script en index.html. Mais comment il fait référence à l' root élément div en index.html? Je me demandais comme il fonctionne très bien. Merci de m'expliquer.

J'ai eu de l'exécution de ces commandes pour créer l'application

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

216voto

Aftab Khan Points 1452

Create-React-App est très intéressant.

J'ai commencé mon creusement de l' package.json mnp script start

"démarrer": "réagir-les scripts de démarrage"

Qui m'emmène à leur binaires react-scripts sous node_modules/.bin
Je vais poster pertinentes de trucs ici.

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

Donc, cela m'indique qu'ils sont à la recherche d'un script à l'intérieur d' ../scripts/ le dossier.

Donc, je vais à la réaction des scripts mnp module(node_modules/react-scripts) et d'ouvrir l' node_modules/react-scripts/scripts/start.js fiche puisque je faisais npm start.

Maintenant, voici où j'ai trouvé le webpack config que je cherchais.
Ils ont été spécifiquement référence à l' node_modules/react-scripts/config/webpack.config.dev.js. Je vais poster pertinentes de trucs ici.

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,
  }),

Si le fichier visé par paths.appIndexJs est l'entrée de fichier dans le webpack config.

Et ils sont à l'aide de HtmlWebpackPlugin pour charger le html sur le chemin de paths.appHtml.

Dernière pièce du puzzle est un lien vers les fichiers que vous avez posté. Affichage pertinentes de la substance à partir de 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'),
  ...
}

Donc, à l'intérieur de votre répertoire d'application,
appHtml est le fichier public/index.html
appIndexJs est le fichier src/index.js

Vos deux fichiers en question.
Wow! C'était tout un voyage..:P

3voto

user3864866 Points 1
To consolidate @Aftab Khan comments 

npm start 

Below adding individual links for above commands for node @8.9.4
@node_modules/react-scripts/bin/react-scripts.js  >> line number 35
@node_modules/react-scripts/scripts/start.js  >> line number 46
@node_modules/react-scripts/config/webpack.config.dev.js >> line number 21, 102
@node_modules/react-scripts/config/paths.js >> line number 56

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X