오늘 노드에서 웹 서버 구축을 위한 Express 프레임워크를 배웠다.
// 포트 연결
// index.js
const express = require('express')
const app = express()
const port = 3000
*라우트를 통해서 값이 들어올 때 선처리, 또는 유효값에 따라 분기처리를 원하는 등 부가적인 기능을 더하고 싶을 때 일관되게 처리할 수 있게 정의하는 곳
// 데이터 가공 용도 미들웨어
app.use(express.urlencoded({extended: false}))
// json형태로 값을 전달받을 때 사용하기 쉽게 가공해준다.
app.use(express.json())
// 이미지 동영상 등 정적파일을 제공해주는 미들웨어
app.use(express.static('public'))
app.use((req, res, next) => {
console.log(req);
// 미들웨어 종료
next();
});
router이전에 middleware가 선언되어 있어야한다. 안그러면 router가 제대로 작동을 안하더라..
// 메인 스크립트에서 실행
// index.js
app.get('/list', (req, res) => {
res.render('list')
})
// 1. 비슷한 라우터들끼리 모아서 정리해놓고
// ./routers/goods.js
router.get("/detail", async (req, res) => {
res.render('detail');
});
// 2. 메인 스크립트에서 호출이 가능하다.
// index.js
const goodsRouter = require("./routers/goods");
// schemas 폴더에 구현해 놓은
// 몽고DB 연동 정보를 index.js에서 호출한다.
// index.js
const connect = require('./schemas')
connect()
// 디비 관련 정보들 구현해놓기
// ./schemas/index.js
const mongoose = require("mongoose");
const connect = () => {
mongoose
.connect("mongodb://localhost:27017/voyage", {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
ignoreUndefined: true
})
.catch(err => console.log(err));
};
mongoose.connection.on("error", err => {
console.error("몽고디비 연결 에러", err);
});
module.exports = connect;
자바스크립트는 싱글 스레드 언어이므로 다른 언어들과 달리 동시작업이 어렵고 한가지 기능을 순착적으로만
진행할 수 있다고 한다. 렇기 때문에 비동기 프로그래밍을 구현하는 것이 중요한데,
비동기 프로그래밍이란 특정 작업을 시작하고 다 처리하기 전에 실행 흐름이 바로 다음 코드로 넘어간 후 나중에 콜백이 실행되는 것을 뜻한다.
동기 실행에 비해 동일한 작업을 더 빠른 시간 내에 처리할 수 있는 장점이 있다.
console.log('Start!');
fetch('https://www.google.com')
.then((response) => response.text())
.then((result) => { console.log(result); });
console.log('End');
비동기 실행를 위와 같이 한다면,
드디어 Node.js 강의가 열렸다. 설레임 반 걱정 반으로 시작을 했는데,
세상에나..아직 첫날이라 그런지 이해 안 가는 부분들이 너무 많았다.
이것이 과연 내가 아는 자바스크립트가 맞을까 싶을 정도로..ㅠㅠ
정말 나는 단순한 문법들만 알고 있었지 JS가 싱글스레드 언어이며
그걸로 인해 어떠한 기능들이 구현되고 흐름이 어떻게 되는지는 전혀 모르고 있었다..
결과적으로 오늘 강의는 혼란의 연속이었지만 반대로 나의 부족함을 깨닫을 수 있는 소중한 시간이였다..(아야..)
주특기 주차가 시작되기전에 나름 알아본다고 알아봤는데 충분하지 않았던 거 같다..
미리 기초 지식을 탄탄히 쌓지 못한게 아쉬울 뿐이다..
비동기와 promise chain에 대해 배웠는데 좀 더 확실히 이해가 되서 블로그에 올릴 수 있는 날이 오면 좋겠다.