๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
React (front) ์ Node (back) ์ฐ๋์ํค๊ธฐ ๋ณธ๋ฌธ
React (front) ์ Node (back) ์ฐ๋์ํค๊ธฐ
์ง์ง์ํ์นด 2023. 5. 18. 13:12<๋ณธ ๋ธ๋ก๊ทธ๋ ์ฝ๋ฉ์ ํ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> Node+Express ์๋ฒ์ React ์ฐ๋ํ๋ ค๋ฉด
๐ react์ node ์ฐ๋ํ๊ธฐ
1) react
: HTML์ ์ด์๊ฒ ๋ง๋ค์ด์ฃผ๋ ํด
- npx create-react-app react-project
- App.js ๋ง๋ค๊ณ ๊ฐ๋ฐํ๊ธฐ npm run start
- ๊ฐ๋ฐ ๋๋๋ค๋ฉด -> npm run build
- -> html ํ์ผ (main page) ์ด ์์ฑ
2) node
- server.js ๋ง๋ค๊ธฐ
- npm init -y
- npm install express nodemon cors
- server ์คํํ๊ธฐ -> nodemon server.js
3) db ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ฅผ ํตํด react๋ก ๋ณด๋ด๊ธฐ
- ๋ฐ์ ๋ฐ์ดํฐ๋ก react๊ฐ html ์์ฑํ๊ธฐ
- html ์ ์๋ฒ๊ฐ ๋ง๋ค๋ฉด server-side rendering
- htlm ์ ๋ฆฌ์กํธ๊ฐ ๋ง๋ค๋ฉด client-side rendering
- react-router-dom
โ๏ธ Server.js
const express = require("express");
const app = express();
const path = require("path");
app.listen(8080, function () {
console.log("listening on 8080");
});
// ๋ฆฌ์กํธ์ nodejs ์๋ฒ๊ฐ ajax ์์ฒญ
app.use(express.json()); // ์ ์ ๊ฐ ๋ณด๋ธ array/object ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํด๋ณด๊ธฐ ์ํด ํ์
var cors = require("cors"); // ๋ค๋ฅธ ๋๋ฉ์ธ์ฃผ์๋ผ๋ฆฌ ajax ์์ฒญ ์ฃผ๊ณ ๋ฐ์ ๋ ํ์
app.use(cors);
// static ์ ์ด์ฉํ์ฌ ํน์ ํด๋์ ํ์ผ๋ค ์ ์ก ๊ฐ๋ฅ
app.use(express.static(path.join(__dirname, "react-project/build")));
app.get("/", function (req, res) {
// res.sendFile(path.join(__dirname, "๋ฆฌ์กํธ๋ก ๋ง๋ html ํ์ผ ๊ฒฝ๋ก"));
res.sendFile(path.join(__dirname, "react-project/build/index.html"));
});
// db ๋ฐ์ดํฐ ๋ฝ์์ ๋ณด๋ด์ฃผ๋ API
// ex) db ์ ์๋ ์ํ๋ช
๋ณด์ฌ์ค๋ค๋ฉด
app.get("/product", function (req, res) {
res.json({ name: "์ํ๋ช
" });
});
// react router ์ฐ๋ ๊ฒฝ์ฐ ์ตํ๋จ์ ์ถ๊ฐ ํ๊ธฐ
app.get("*", function (req, res) {
// res.sendFile(path.join(__dirname, "๋ฆฌ์กํธ๋ก ๋ง๋ html ํ์ผ ๊ฒฝ๋ก"));
res.sendFile(path.join(__dirname, "react-project/build/index.html"));
});
โ๏ธ react-project/src/App.js
import logo from "./logo.svg";
import "./App.css";
function App() {
return (
<div className="App">
<div>๋ฆฌ์กํธ๋ก ๋ง๋ html ํ์ด์ง</div>
</div>
);
}
export default App;
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Node js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node js Project - 1] Realtime Chat With Users & Rooms (0) | 2023.06.16 |
---|---|
ํ๋ก ํธ์์ ์๋ฒ์ ๋ฐ์ดํฐ ์์ฒญํ๊ธฐ (React๋ก fetch, axios ์ฌ์ฉ) (0) | 2023.05.18 |
[E-Commerce App with Fullstack] (8) Product API (1) | 2023.05.16 |
[E-Commerce App with Fullstack] (7) Category API (0) | 2023.05.15 |
[E-Commerce App with Fullstack] (6) Client Setup (1) | 2023.05.15 |