// 모듈이란?
// 모듈은 분리된 자바스크림트 파일이고 각 파일은 특정한 기능을 가진 여러 개의 함수와
// 변수들의 집합
// 모듈을 만들게 되면 다른 프로그램에서 해당 모듈을 재사용할 수 있음.
// 모듈은 자체로도 하나의 프로그램이 되며 다른 프로그램의 부품으로도 사용할 수 있음.
// 보통 하나의 파일이 하나의 모듈이 됨.
// export 함수 앞에 붙이면 이게 붙은 함수 하나하나를 외부로 가져갈 수 있으며, 함수가 아닌
// 모듈 그자체에 export를 붙이면 그 모듈 그대로 외부로 가져갈 수 있다.
// import,require 명령어는 외부에 있는 모듈을 가져와 사용할 수 있다.
const express = require('express');
const app = express();
const port = 3000;
const goodsRouter = require('./routes/good.js');
// goodsRouter가 이제 good.js 19줄에 있는 모듈을 가져오게함
app.use(express.json());
// 리퀘스트.바디를 쓰기위해선 이걸 먼저 작성해야한다.
// 전역 미들웨어에 적용하겠다.
app.post("/",(req,res) =>{
console.log(req.body)
res.send('기본 url에 post 메소드가 정상적으로 실행되었습니다.')
})
app.get('/', (req,res) => {
console.log(req.query)
// res.send('정상적으로 반환?')
const a = {
"name":"하누즈호",
"age":50,
}
res.json(a);
// res.status(400).json(a); // 이렇게 쓰면 에러난것처럼 400코드로 날라감
})
app.get('/:id', (req,res) =>{
// 콜론뒤는 /뒤에 뭘쓰던, 그 값은 id에 저장이 된다는 뜻.
console.log(req.params)
res.send('id url에 정상적으로 반환?')
})
// app.get('/', (req, res) => {
// res.send('Hello World!');
// });
app.use('/api', goodsRouter);
// api 경로가 추가된 경우에는 모두 goodsRouter를 통해서 가라 라는 뜻.
// 전역 미들웨어
// 괄호안의 goodsRouter 말고 다른 라우터가 들어올수도 있기에 배열로써 집어넣어도 된다.
// ex) [goodsRouter,usersRouter,postRouter .. 등]
app.listen(port, () => {
console.log(port, '3000 포트로 서버가 열렸어요!');
});
const express = require("express");
const router = express.Router();
// 익스프레스 라이브러리안에 있는 라우터()의 함수를 실행하여 그 함수의 결괏값을 router라는 변수에 집어넣을 것이다.
// // 반환받은 router라는 변수를 이용해서 get 메소드를 통해 어떤 위채? '/' 기본 위치에 들어왔었을때
// // 해당하는 코드를 실행할 것이다. 어떤코드? response 즉 반환을 할건데 문자열을 반환할 것이다.
// router.get('/',(req,res) => {
// res.send("default url for goods.js GET Method"); // res가 반환. 즉 반환할것이다 무엇을? send안에 있는 값을
// });
// // '/about' 이라는 경로에 get 메소드가 들어왔을 때 실행할거다. 어떤것을? res를.. 즉 반환할 거다.
// // 저 문자열을 반환할거다.
// router.get('/about',(req,res) => {
// res.send("goods.js about PATH");
// });
// module.exports = router;
// // router를 밖으로 내줘야함
// // router는 module.exports를 통해 밖으로 연결시킬 수 있음
// // 자, 이렇게 밖으래 뺐으면 이제 app.js에서 가지고 와야함!
// /routes/goods.js
const goods = [
{
goodsId: 4,
name: "상품 4",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/02/11/frogs-1650657_1280.jpg",
category: "drink",
price: 0.1,
},
{
goodsId: 3,
name: "상품 3",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/02/12/frogs-1650658_1280.jpg",
category: "drink",
price: 2.2,
},
{
goodsId: 2,
name: "상품 2",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2014/08/26/19/19/wine-428316_1280.jpg",
category: "drink",
price: 0.11,
},
{
goodsId: 1,
name: "상품 1",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/19/54/wines-1652455_1280.jpg",
category: "drink",
price: 6.2,
},
];
// 상품 전체 보기
router.get("/goods", (req,res)=> {
res.status(200).json({"상품":goods}) // "상품"(키)값을 없애고 밸류값인 goods만 써도됨
})
// 특정 상품 보기
router.get("/goods/:goodsID",(req,res)=> {
const {goodsID} = req.params;
let result = null; // 임시로 리절트 값에 아무것도 없는 널을 할당.
for(const good of goods){ // 반복문을 돌면서 good 이라는 임시 변수에 goods의 배열에 있던 요소 하나하나씩 대입.
if(Number(goodsID) === good.goodsId) // 만약 71번째에 정의했던 goodsID의 값이 반복문 변수 good의 goodsId의 값이 일치한다면?
result = good; // 리절트 값은 해당 good으로 변환.
}
// const [result] = goods.filter((good) => Number(goodsID) === good.goodsId)
// 이 위의 코드는 73번째줄~77번째줄과 동일함.
res.status(200).json({"디테일":result});
})
module.exports = router;
function add(a,b){
return a+b;
}
module.exports = add;
// 위는 모듈 자체를 익스포트로 한번에 꺼낸것
// 이때 함수 그 자체를 내보낼 수 있음
// 아래는 함수에만 익스포트로 함수 하나만 꺼낸것. 이때 함수는 익명 함수로
// 또한 내보낼땐 함수 그자체가 아닌 객체로 내보내짐
// exports.add = function(a,b) {
// return a+b;
// }
// 아래엔 네가지 방법이 있다.
// 모듈을 호출했을 때, add 키 값에는 add 변수 함수가 가지고 있는 값이 할당된다.
// const add = (a,b) => {
// return a+b;
// }
// 모듈을 호출했을 때, add 키 값에는 (a,b){return a+b;} 익명함수가 할당되는 방법이다.
// exports.add = function(a,b){
// return a+b;
// }
// 모듈을 호출했을 때, add 키 값에는 add 함수가 들어가는 방법이다.
// module.exports = {add : add};
// 모들 그 자체를 바로 add 함수를 할당한다.
// module.exports = add;'[내배캠] TIL, WIL > TIL' 카테고리의 다른 글
| 자바 스크립트 (0) | 2022.12.19 |
|---|---|
| 알고리즘 (0) | 2022.12.19 |
| 자바 스크립트 (0) | 2022.12.16 |
| 자바 스크립트 및 좋은 개발자가 되는 방법. (0) | 2022.12.15 |
| 자바 스크립트 (0) | 2022.12.12 |