서버를 띄우기 위해 작성할 기본 템플릿
* express 라이브러리 사용법
(server.js 파일)
const express = require('express');
const app = express();
app.listen(8080, function() {
console.log('listening on 8080')
})
* 첫 두줄은 express 라이브러리 첨부와 사용
밑에 app.listen()은 원하는 포트에 서버를 오픈하는 문법이라고 보시면 됩니다.
* listen() 함수 안엔 두개의 파라미터가 필요합니다.
listen(서버를 오픈할 포트번호, function(){ 서버 오픈시 실행할 코드 })
* 터미널을 켜서 node server.js를 입력하면 서버 실행된다.
브라우저에서 localhost:8080 이라고 접속하면 확인가능
Port(포트)란??
컴퓨터는 항상 외부 컴퓨터와 통신할 수 있게 설계되어있습니다.
랜선을 꽂거나 와이파이를 켜거나 하시면 다른 사람이 여러분 컴퓨터로 접속을 요청할 수도 있고 그렇습니다.
컴퓨터는 외부와 통신할 수 있는 통로가 총 65536개가 존재합니다. 그리고 이걸 'Port(포트)'라고 부릅니다.
평상시엔 막혀있는데, 여러분이 외부 컴퓨터 접속을 허가하려면 포트를 열어야합니다.
우리는 무작위로 하나 고른 8080번째 포트를 사용해서 서버를 띄웠으며
이제 외부 컴퓨터가 여러분 아이피 주소:8080이라고 입력하면 여러분 컴퓨터로 들어올 수 있는 것입니다.
1) Well-Known Ports ( 잘 알려진 포트 ) : 0번 ~ 1023번
2) Registered Ports ( 등록된 포트 ) : 1024번 ~ 49151번
3) Dynamic Ports ( 동적 포트 ) : 49152번 ~ 65535번
- 사용자가 임의로 사용가능한 포트 번호
Callback function(콜백함수)에 대해
function 함수이름( ){ }
보통 이렇게 만들어서 사용합니다.
그런데 위에서 작성한 코드는 이렇게 되어있습니다.
.listen(서버를 오픈할 포트번호, function(){서버 오픈시 실행할 코드})
여기서 중요한 문법적 개념 중 하나가 바로 function(){} 부분입니다.
1. 그런데 위의 예제 코드에선 함수명을 작명하는 부분이 없고 function(){} 이렇게 사용하고 있고
2. listen()이라는 함수 안에 함수를 집어넣는 형태로 사용하고 있다.
이걸 자바스크립트에선 '콜백함수'라고 부릅니다.
정의는 함수안에 들어가는 함수입니다.
콜백함수를 왜 사용할까?
자바스크립트에서 뭔가 순차적으로 실행하고 싶을 때 사용한다.(순차적 실행이 목적)
listen() 이라는 함수를 동작시킨 다음에 function(){} 내에 있는 코드를 실행해주세요. 라는 뜻으로 사용한 것입니다.
Node.js 특성상 코드를 연달아서 2개 적는다고 그 코드가 순차적으로 실행된다는 보장이 없기 때문에 뭔가 순차적으로 실행할 때 '함수안에 함수를 집어넣는 콜백함수'를 꼭 사용합니다.
* GET 요청을 처리하는 기계
서버는 요청을 처리하는 기계이다.
그럼 요청을 어떻게 하냐면, 바로 브라우저를 켜서 주소창에 URL을 입력하시면 됩니다.
이 요청은 전문용어로 GET 요청이라고 합니다. 간단하게 주소창에 URL을 넣어 요청할 수 있는 것이다.
누군가 우리 서버의 /hello 경로로 접속하면 '안녕하세요' 라는 안내메세지를 띄워주는 서버를 만들 경우(연습)
app.get('/hello', function(req, res) {
res.send('안녕하세요')
})
이렇게 server.js 하단에 추가하면 된다.
그럼 브라우저 켜서 localhost:8080/hello 라고 접속하면 '안녕하세요'라는 멘트가 뜬다.
'Study > Node.js' 카테고리의 다른 글
[Node.js_study] 폼에 입력한 데이터를 서버에 전송하기 (POST요청) (0) | 2022.04.15 |
---|---|
[Node.js_study] 서버에서 HTML 파일전송(GET요청) (0) | 2022.04.15 |
[Node.js_study] npm과 yarn의 차이 (0) | 2022.04.15 |
[Node.js_study] Node.js와 Express 라이브러리 설치하기 (0) | 2022.04.15 |
[Node.js_study] Node.js에 대해서 (Non-blocking I/O) (0) | 2022.04.15 |