Kết nối giữa index.html và index.js trong ứng dụng Create-React-App ở đâu?


82

Tôi đang bắt đầu chơi với Ứng dụng Create React, nhưng tôi không thể hiểu cách index.jstải bên trong index.html. Đây là mã 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">
    <!--
      Notice the use of %PUBLIC_URL% in the tag above.
      It will be replaced with the URL of the `public` folder during the build.
      Only files inside the `public` folder can be referenced from the HTML.

      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
      work correctly both with client-side routing and a non-root public URL.
      Learn how to configure a non-root public URL by running `npm run build`.
    -->
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
    <!--
      This HTML file is a template.
      If you open it directly in the browser, you will see an empty page.

      You can add webfonts, meta tags, or analytics to this file.
      The build step will place the bundled scripts into the <body> tag.

      To begin the development, run `npm start`.
      To create a production bundle, use `npm run build`.
    -->
  </body>
</html>

Nhưng tôi không thể thấy bất kỳ nơi nào nhập khẩu index.js. Kết nối ở đâu? Tôi đang thiếu gì?


Làm thế nào để bạn phục vụ nội dung của bạn?
Nicklas Pouey-Winger

Tôi chưa thay đổi bất kỳ thứ gì mặc định, tôi chỉ làm điều này: create-react-app my-appvà tôi mở dự án bằng cách sử dụng webstorm, sau đó tôi bắt đầu npm, nhưng câu hỏi của tôi là làm thế nào index.html biết rằng phải tải index.js? viết ở đâu?
Piero

6
webpack.github.io/docs/webpack-dev-server.html Webpack-dev-server xử lý vấn đề này cho bạn trong quá trình phát triển.
Nicklas Pouey-Winger

@NicklasWinger Tôi có thể tìm tệp cấu hình để hiểu cơ chế ở đâu?
Piero

4
Bạn có thể chạy npm run ejectđể kiểm soát thủ công các cấu hình. Tôi khuyên bạn nên thực hiện một thiết lập cơ bản hơn từ đầu để hiểu đầy đủ những gì đang xảy ra :)
Nicklas Pouey-Winger

Câu trả lời:


112

Về cơ bản, Tạo Ứng dụng React sử dụng Webpack với html-webpack-plugin .

Cấu hình của chúng tôi chỉ định rằng Webpack sử dụng src/index.jslàm “điểm vào” . Vì vậy, đó là mô-đun đầu tiên nó đọc, và nó theo sau từ mô-đun này đến các mô-đun khác để biên dịch chúng thành một gói duy nhất.

Khi webpack biên dịch nội dung, nó tạo ra một gói (hoặc nhiều gói nếu bạn sử dụng tách mã). Nó làm cho các đường dẫn cuối cùng của chúng có sẵn cho tất cả các plugin. Chúng tôi đang sử dụng một plugin như vậy để đưa các tập lệnh vào HTML.

Chúng tôi đã bật html-webpack-plugin để tạo tệp HTML. Trong cấu hình của chúng tôi, chúng tôi đã chỉ định rằng nó sẽ đọc public/index.htmlnhư một mẫu. Chúng tôi cũng đã đặt inject tùy chọn thành true. Với tùy chọn đó, hãy html-webpack-pluginthêm một <script>đường dẫn do Webpack cung cấp vào ngay trang HTML cuối cùng. Trang cuối cùng này là trang bạn nhận được build/index.htmlsau khi chạy npm run buildvà là trang được phục vụ /khi bạn chạy npm start.

Hi vọng điêu nay co ich! Vẻ đẹp của Create React App là bạn thực sự không cần phải nghĩ về nó.


Một câu hỏi nữa, bạn sử dụng IDE nào cho phản ứng hoặc js nói chung? Tôi đã đấu tranh trong sự lựa chọn giữa Atom và Webstorm, bạn nghĩ sao?
Piero

1
Tôi đang sử dụng Webstorm và cho đến nay tôi thực sự hài lòng với nó.
Lancelot

2
Làm cách nào để giải quyết nhiều đường dẫn để tải các trang HTML khác nhau?
quantumpotato

3
Thực ra @Dan Abramov là một thiên tài: D nhưng tôi không đồng ý với anh ấy khi anh ấy nói "bạn thực sự không cần phải nghĩ về nó" bởi vì mọi người nên hiểu mọi thứ từ dưới lên.
Seif Eddine Slimene

Hy vọng rằng điều này được tài liệu ở một nơi khác ngoài đây? Trong tài liệu CRA? Chúng tôi không cần biết việc triển khai nhưng chúng tôi cần biết mọi thứ bắt đầu với index.js và cách nó quản lý public / index.html Cảm ơn tất cả!
Ashley Aitken
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.