티스토리 뷰
Node.js 실무기초 원격 강의
JS 기본 문법
- 변수 선언
- 현재는 const를 이용해 변하지 않는 변수를 선언, let을 이용해 변할 수 있는 변수를 선언
- 과거에는 var 키워드만을 이용해서 변수 선언이 가능 했으나 hoisting 문제로 사용하지 않는 것이 바람직 → let, const 사용
- 구문 설탕(Syntax Sugar)
- 읽는 사람 또는 작성하는 사람이 편하게 디자인 된 문법
- ex) +=, -=, variable++, variable--
- 비교연산자 ==, != vs ===, !==
- ==, !=은 자동형변환이 적용되어 쉽게 버그가 발생할 수 있으니 사용하지 않는 것이 바람직 → ===, !== 사용
- 객체(Object)와 const 키워드
- const로 객체를 선언하는 경우 재할당은 불가능하지만, 속성의 변경이 가능함에 유의
- Object.freeze()는 재할당은 가능하지만, 속성의 변경을 불가능하게 하므로 const와 함께 사용하여 완전한 동결 객체를 만들어 활용할 수 있음
- 자바스크립트에서는 함수도 변수임 (1급 객체)
- 배열(Array)과 객체(Object) 자료형은 항상 Truthy한 값으로 판단됨
- 논리 연산자
- 피연산자를 자동으로 Boolean 자료형으로 형변환 하며, 반환 시에는 다시 이전 자료형으로 반환함
- AND 연산자 "||"를 사용, Chaining 하는 경우: 첫 번째 truthy를 반환, truthy가 하나도 없다면 마지막 피연산자를 반환
- OR 연산자 "&&"를 사용, Chaining 하는 경우: 첫 번째 falsy를 반환, falsy가 하나도 없다면 마지막 피연산자를 반환
- NOT 연산자 "!"는 Boolean 자료형으로 반환하며, 이를 이용해 두번 사용하면 Boolean 자료형으로 쉽게 형변환 할 수 있음 (내장 함수 Boolean()과 같은 효과)
- for ...of 문은 반복 가능한 객체의 요소를 하나씩 반복하게 해 줌, for ...in 문은 반복 가능한 객체 요소의 key를 하나씩 반복하게 해 줌
- 익명 함수
- 함수의 이름이 존재하지 않고 변수에 함수를 담아 사용하는 함수
- 재사용 되지 않는 함수에 자주 사용되며 불필요한 메모리 낭비를 줄일 수 있음
- Hoisting 적용이 안 됨
- 화살표 함수
- 익명함수로만 사용 가능하나 매우 간결한 형태의 함수
- 선언될 시점에서의 상위 스코프로 this가 바인딩 됨
- 함수는 return 키워드가 없는 경우 undefined를 return 함
- Hoisting: 선언된 변수나 함수가 스코프 최상단으로 끌어올려지는 것처럼 동작하는 것
- 동기 vs 비동기
- 동기: 먼저 실행된 코드의 결과가 나올때까지 대기하는것
- 비동기: 실행된 순서와 관계 없이 결과가 나오는것
- Blocking Model vs Non-Blocking Model
- Blocking Model: 코드의 실행이 끝나기 전까지 실행 제어권을 다른곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것
- Non-Blocking Model: 코드의 실행이 끝나지 않아도 실행 제어권을 다른곳에 넘겨 다음 코드가 실행될 수 있는것
- 자바스크립트는 Non-blocking model을 가지며 각 명령이 순서대로 실행될 수 있게 구현되어 있지만, Non-blocking model에 의해 명령이 아닌 모든 함수는 비동기적으로 실행됨
- 자바스크립트에서 비동기, 동기와 관련된 객체 유형 Promise, 함수 async function, 연산자 await
Express.js 기초
Javascript 라는 프로그래밍 언어로 코드를 짜고, Express.js 라는 웹 프레임워크를 이용하며, Node.js 라는 런타임으로 실행을 한다.
→ 웹 서버 구현!
웹 서버 구현 기본 구조
const express = require("express");
const app = express();
const port = 3000;
//미들웨어 작성(위치 유의)
app.use((req, res, next) => {
console.log("미들웨어 구현");
console.log("주소:", req.path);
if (req.path === "/test") {
res.send("테스트 주소로 왔다.")
} else {
next(); //다음 미들웨어로 넘어감
}
});
//변수에 함수를 할당하고 이를 이용한 미들웨어 작성
const requestMiddleware = (req, res, next) => {
console.log("Request URL:", req.originalUrl, " - ", new Date());
next();
};
app.use(requestMiddleware);
// 해당 경로로 get 요청이 들어오면 두 번째 인자의 함수를 호출
app.get("/", (req, res) => {
res.send("Hello World!!!")
});
//서버를 port로 키고 두 번째 인자의 함수를 호출
app.listen(port, () => {
console.log(port, "포트로 서버가 켜졌어요!");
})
'What I Learned > SpartaCodingClub' 카테고리의 다른 글
[내일배움캠프] 2022-12-14 TIL (0) | 2022.12.14 |
---|---|
[내일배움캠프] 2022-12-13 TIL (0) | 2022.12.13 |
[내일배움캠프] 2022-12-11 TIL (0) | 2022.12.11 |
[내일배움캠프] 2022.12.05. ~ 2022.12.11. WIL (0) | 2022.12.11 |
[내일배움캠프] 개발isin: KPT 회고 (0) | 2022.12.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SQL
- 백준
- 5597
- 2587
- Wil
- 24723
- 항해 플러스
- Python
- 벡준
- 13241
- 13909
- 1269
- 코육대
- programmer
- 2903
- 항해+
- 4134
- 20920
- 2738
- 25501
- 24313
- 26069
- 25192
- til
- Programmers
- 17103
- 2053
- 10807
- MySQL
- 24060
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함