๋ชฉ๋ก์ ์ฒด ๊ธ (1005)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
=> Mern stack Ecommerce App Lets Build And Deploy Mern Stack Project full-stack development โ๏ธ Login API ์๋ฒ๊ฐ ๋ก๊ทธ์ธ์ ์๋ฃํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธํด์ฃผ๋ ๊ธด ๋ฌธ์์ด ์ฌ์ฉ์์ ์ธ์ฆ/์ธ๊ฐ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ npm install jsonwebtoken ๐ controllers/authController.js import JWT from "jsonwebtoken"; import { comparePassword, hashPassword } from "../helpers/authHelper.js"; import User from "../models/User.js"; // POST REGISTER export const registerC..
=> Mern stack Ecommerce App Lets Build And Deploy Mern Stack Project full-stack development โ๏ธ MongoDB Setup ๐ config/db.js import mongoose from "mongoose"; import colors from "colors"; const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGODB_URI); console.log( `Connected To Mongodb Database ${conn.connection.host}`.bgMagenta.white ); } catch (error) { consol..
=> Mern stack Ecommerce App Lets Build And Deploy Mern Stack Project full-stack development โ๏ธ Project Setup ๐ ๋ฒ์ ํ์ธ ๐ npm init -y ๐ npm i express colors nodemon dotenv โ๏ธ Server Setup ๐ ์ด๊ธฐ server.js const express = require("express"); // rest object const app = express(); // rest api app.get("/", (req, res) => { res.send({ message: "Welcome to ecommerce app", }); }); // PORT const PORT = proces..
๐ Router ๊ฐ์ฒด ์ฌ์ฉํ๊ธฐ ๐ index ์ user ๋ถ๋ฆฌํ๊ธฐ ๐ routes/user.js const express = require("express"); const router = express.Router(); // GET / ๋ผ์ฐํฐ router.get("/", (req, res) => { res.send("Hello, Express"); }); module.exports = router; ๐ routes/user.js const express = require("express"); const router = express.Router(); // GET / user ๋ผ์ฐํฐ router.get("/", (req, res) => { res.send("Hello, User"); }); module.e..
๐ ๋ค์ํ ๋ฏธ๋ค์จ์ด ๐ dotenv : .env ํ์ผ์ ์ฝ์ด์ process.env๋ก ๋ง๋ ๋ค ๐ morgan : ๋ก๊ทธ ์ถ๋ ฅ ex) combined, common, short, tiny // dev [HTTP ๋ฉ์๋] [์ฃผ์] [HTTP ์ํ ์ฝ๋] [์๋ต ์๋]-[์๋ต ๋ฐ์ดํธ] ๐ static : ์ ์ ์ธ ํ์ผ๋ค์ ์ ๊ณตํ๋ ๋ผ์ฐํฐ ์ญํ : ํจ์์ ์ธ์๋ก ์ ์ ํ์ผ๋ค์ด ๋ด๊ฒจ ์๋ ํด๋๋ฅผ ์ง์ ํ๋ค ๐ body-parser : ์์ฒญ์ ๋ณธ๋ฌธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํด์ํด์ req.body ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฏธ๋ค์จ์ด : ํผ ๋ฐ์ดํฐ๋ AJAX ๋ฐ์ดํฐ ์ฒ๋ฆฌ // ์์ฒญ์ ๋ณธ๋ฌธ์ด ๋ฒํผ ๋ฐ์ดํฐ ์ผ ๋ app.use(bodyParser.raw()); // ํ ์คํธ ๋ฐ์ดํฐ์ผ ๋ ํด์ app.use(bodyParser.text()); /..
๐ express ๋ชจ๋๋ก ์๋ฒ ๊ตฌ์ถํ๊ธฐ ๐ app.js // express : http ๋ชจ๋ ๋ด์ฅ๋์ด์ ์๋ฒ์ ์ญํ const express = require("express"); const app = express(); require("dotenv").config(); // ์๋ฒ๊ฐ ์คํ๋ ํฌํธ // app.set("ํค, ๊ฐ") : ๋ฐ์ดํฐ ์ ์ฅ app.set("port", process.env.PORT || 3000); // app.get("์ฃผ์, ๋ผ์ฐํฐ") : ์ฃผ์์ ๋ํ GET ์์ฒญ์ด ์ฌ ๋ ์ด๋ค ๋์ ํ ์ง ์ ๊ธฐ app.get("/", (req, res) => { res.send("Hello express"); }); // HTTP ์น ์๋ฒ์ ๋์ผ app.listen(app.get("port"), (..
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ํ์คํ ๋ฆฌ ์ปดํฌ๋ํธ ๋๋ฐ์ด์ค ๋ฆฌ์คํธ ์กฐํ -> ๋๋ฐ์ด์ค, ๋ ์ง ์ ํ -> ๋๋ฐ์ด์ค ๋ฐ์ดํฐ ์กฐํ -> ์ฐจํธ ์ถ๋ ฅ ๐ฅ ๋ฐ์ด์ค ์ ์ด ์ปดํฌ๋ํธ ๋๋ฐ์ด์ค ๋ฆฌ์คํธ ์กฐํ -> ๋๋ฐ์ด์ค ์ ํ -> ํํ ๋์ -> ํํ ์ค์ง ๐ ๋์ ์์ฒญ ํ๋ก์ธ์ค ํด๋ผ์ด์ธํธ -> API ์๋ฒ -> MQTT ๋ธ๋ก์ปค -> ๋๋ฐ์ด์ค : ํด๋ผ์ด์ธํธ์์ ๋๋ฐ์ด์ค ์ ํ ํ REST API ๋ก ๋์/์ ์ง ์์ฒญ : ์์ฒญ์ ๋ฐ์ API ์๋ฒ์์ MQTT ๋ธ๋ก์ปค๋ฅผ ํตํด ๋ช ๋ น ๋ฉ์์ง ๋ฐํ : ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋๋ฐ์ด์ค๊ฐ ๋ช ๋ น์ ์ํ ๐ฅ React ํ๋ก์ ํธ ๋ฐฐํฌ React ํ๋ก์ ํธ ๋ฐฐํฌ ๊ณํ -> React ํ๋ก์ ํธ ๋น๋ (webpack ์ค์น, ์ค์ ํ์ผ, build ์ถ๊ฐ) -> React ํ๋ก์ ํธ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ ํ์ธ )p..
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ํ๋ก ํธ์๋ ์ค๊ณ ํ๋ก์ ํธ ๊ธฐํ : ๋์์ธ๊ณผ ๊ฐ๋ฐ์ ๊ธฐ์ค ์ค์ ์น/์ฑ ์ค๊ณ : ๋์์ธ๊ณผ ๊ฐ๋ฐ์ ์ํ ๊ตฌ์ฒด์ ์ธ ์ค๊ณ ๋์์ธ : ๊ธฐํ/์ค๊ณ ๊ธฐ๋ฐ ๋์์ธ ์์ ๋ฐ ๋ฆฌ์์ค ์ ์ ๊ฐ๋ฐ : ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ๋ฐฐํฌ/์ด์ ํ๊ฒฝ ๊ตฌ์ถ ๐ํ๋ก์ ํธ ํ์ ํด : ์ํต ๋ฐ ๊ธฐ๋ก์ ์ํ ๋ค์ํ ํด : ํ๋ฉด, ํ๋ฆ, ํน์ ํฌ์ธํธ์์ ๊ธฐ๋ฅ๊ณผ ์ ์ฑ ์ ๋ณด๋ค ์ฝ๊ฒ ์ ๋ฌ EX) ํผ๊ทธ๋ง, Adobe XD, ์ค์ผ์น, ๋ฏธ๋ก, ๋ ธ์ ๐ฅ ๋ ์ด์์ ์ค๊ณ : ๊ทธ๋ฆผ์ด๋ ๊ธ์ ์ ํ๋ ๊ณต๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฆฌํ๊ณ ๋ฐฐ์น : ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ ๋ ์ด์ด๋ฅผ ๋ฐฐ์น : MUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ปดํฌ๋ํธ๋ฅผ ์ต๋ํ ํ์ฉ ํ์คํ ๋ฆฌ ์ปดํฌ๋ํธ : ๋๋ฐ์ด์ค ์กฐํ ํ ๋๋กญ๋ค์ด ๋ฉ๋ด ์์ฑ : ๋ ์ง ์ ํ ์ํ ๊ด๋ฆฌ ๐ฅ ์ปดํฌ๋ํธ ์ค๊ณ ๋๋ฐ์ด..