First of all, I know the question is badly formulated. I can't think of any thing to describe the situation as I'm a beginner.
So when on cmd we type npx create-react-app myapp
, this sets up the react project. Then we could do npm start
and we could view the react app on localhost:3000
. I wish to know why it is so. The react app is on client side, so why does it need a server? Next, I want to set up a node js server and does it need to use the same port as the react app? My guts says no. Briefly, I wish to know why react use localhost:3000
when it is client-side.
Thanks in advance
Node is not required in order to use React. You do not need Node to run a React project. React is a client side UI library. What Node offers is a series of tools that allow you to be able to work with React more easily, such as Webpack (gathers code into a single bundle and listens for file changes to reload this bundle to show the updated code) and Babel (converts ES6 and JSX to plain JavaScript). npx itself is a Node tool which allows you to run a package, in this case with Create React App, which allows you to easily start a new React project. The server that you see is simply to allow for the reloading of the app in response to file changes in real time. The server is only for use in development.
Jorge's answer is correct, I want to simplify it and contribute. The development server is required us to use Webpack and babel, which convert the JSX codes we wrote in React into plain javascript codes, and deliver them to the browser. You can also use the development server as a proxy.
The server you mention in your question is a development server. As the name suggests it is only for use during development.
The output of your final production bundle does not bake the dev server into it at all. It is stripped away along with more verbose error/warning logging and so on.
Now, why do I need a dev server in the first place you ask?
Hot Module Replacement is the most obvious benefit but there's other stuff like narrower browser support for faster rebuilds and more verbose logging of error and warnings from React and possibly other libraries.
© 2022 - 2024 — McMap. All rights reserved.