http모듈
사용express모듈
사용http 모듈
은 기본적으로 내장되어있어 굳이 설치하거나 불러올 필요가 없다.http 모듈
만 사용해서 웹 서버를 구성하면 직접 많은 기능을 개발해야한다. 그리고 코드의 가독성이나 확장성이 떨어진다. 그래서 이러한 문제를 해결하기 위해 만들어진 것이 express
모듈 이다.express모듈
을 사용하면 http모듈
보다 간단한 코드로 웹 서버의 기능을 구현 할 수있다.💡모듈, 라이브러리, 프레임워크?
npm install express
를 입력해준다. (npm을 이용해 사용하고 싶은 모듈을 설치해주는 것이다. 모듈을 설치하게 되면 폴더가 자동 생성되고 node_modules
에 설치되게 된다.package.json
파일을 보면 dedencies에 express가 생긴걸 확인할 수 있다..gitignore
은 git 버전 관리에서 제외할 파일 목록을 지정하는 파일이다..gitignore
이라는 파일을 만들어준다. 파일 아이콘은 git아이콘이 보여지게 된다. 꼭 해당파일 저장 후 commit 해야 한다.파일명
해당 파일 무시*.txt
확장자가 txt로 끝나는 파일 모두 무시!test.txt
test.txt는 무시되지 않음.test/
test 폴더명을 가진 내부의 모든 파일을 무시/test
(현재 위치한 폴더) 내에 존재하는 폴더 내부의 모든 파일 무시 ( b.exe무시 )//'node_modules' 폴더명을 가졌다면? 그 폴더 내부의 모든 파일을 무시한다.
node_modules/
//아래 파일 무시.
package-lock.json
package.json
파일이 있으니 괜찮다! 해당 파일에 모듈에 대한 모든 정보가 작성되어있기 때문. 이 정보를 컴퓨터가 참고를 하고 필요한 것들을 다시 설치할 수 있는 셈.npm install
을 입력해준다.express
를 사용해 웹 서버의 기능을 구현 해보자.require(”모듈이름”)
; 을 통해 가져온다.▶️ 기본적으로 아래 형태로 사용한다.
app 객체
: express()
함수를 호출함으로써 만들어진 express application.express()
: express모듈이 내보내는 최상위 함수로, express application을 만든다.//express모듈을 가져온다. 노드 모듈이 없다면 당연히 불러올 수 없다.
const express = require("express");
//가져온 express모듈을 app이라는 변수에 담아 express프레임워크를 시작하겠다.
//이제 server객체를 만들 수 있다.
const app = express();
//포트번호를 지정해준다.
const PORT = 8000;
//포트번호는 1~65536까지 존재한다. 1~1023까지는 정해진 기능이 있다.
//3000,8000,8080,3010,3001등을 사용한다.
//포트가 이미 사용중인게 아니라면 어떤 포트번호든 상관은 없다.
//3306은 mysql에서 사용하기때문에 피하자.
▶️ http메소드 get
get
메소드는 웹브라우저에서 다른 링크로 이동하기 위해 주소창에 특정 url을 입력하는 경우를 예로 들 수 있다.//get메소드의 기본 형태
//app에 있는 get메소드를 실행하겠다.
app.get("/", function (req, res) {
//'/' 위치의 브라우저로 접속 요청을 받았을 시 실행할 것 작성
});
//get메소드가 받아오는 인자는 (req, res)이다.
//첫번째 매개변수는 request객체(요청) . 여기에 요청을 받을 수 있다고 하는거.
//두번째 매개변수는 response객체(응답). 서버가 응답할 수 있는 객체인것.
//여기서 슬래시('/')의 의미는?
//슬래시에 의해 브라우저에 접속하게 되는 것으로 생각하자.
//'/' 위치의 브라우저로 접속했을 시.
//포트번호를 8000으로 지정했다면
//localhost:8000/ 이렇게 입력해 웹브라우저를 들어갈 수 있다.
//'/' 작성을 안하면 서버요청에 대한 설정을 안했다는 것. 꼭 설정해줘야 한다.
//이렇게 작성!
app.get("/", function (req, res) {
res.send("hello express");
});
// '/' 위치의 브라우저로 접속했을 시.
// response객체(응답)의 send메소드를 실행. 무언가를 출력하겠다는.
// 어떤걸 전송할건지?
// "hello express" 를 브라우저 화면에 출력한다.
//위의 상황에서는 localhost:8000/ 이라는 주소로 인터넷에 접속할 수 있다.
//const PORT = 8000;으로 지정했기 때문.
//그럼 동일한 상황에서 localhost:8000/test 이 주소로 들어가고 싶다면?
app.get("/test", function (req, res) {
res.send("localhost:8000/test 로 들어왔습니다.");
});
//그리고!!!
//send 메소드에는 div나 css요소 작성해도 먹힌다!
//그런데 html의 내용이 길다면? 파일 자체를 제공하는 것이 더 좋겠다.
//이 때 sendFile메소드를 이용한다.
//상대경로로는 접근이 안되기 때문에 우선 HTML파일의 절대경로를 구해야한다.
console.log(__dirname);
//__dirname 을 사용해보자.
//현재의 파일(file)이 위치한 폴더(directory)의 절대경로(absolute path)를 알려줍니다.
res.sendFile(__dirname + "/index.html");
// 이런식으로 사용 가능!
▶️ http메소드 listen
localhost : 컴퓨터 내부 주소로 자신의 컴퓨터를 가르키는 hostname이다.
port : 서버 내에서 데이터를 주고받는 프로세스를 구분하기 위한 번호이다. 기본적으로 http서버는 80번 포트를 사용한다.
서버가 열리면?
[port의 경우]
localhost:8000 이라는 주소로 인터넷에 접속할수있게된다.
[localhost의 경우]
127.0.0.1:8000 이라는 주소로 웹브라우저에 접속할 수 있다.
//app에 있는 listen메소드를 실행하겠다.
//매개변수는 두가지를 가진다.
// 1) 어떤 포트번호로 브라우저를 열건지 (브라우저에 들어가는 하나의 이벤트 발생)
// 2) 실행한 이벤트에 대한 콜백함수 (즉 서버가 열리면 어떤 동작을 할건지)
app.listen(PORT, function () {
console.log("서버가 실행중입니다.");
});
//서버가 열리면 localhost:8000/ 이라는 주소로 인터넷에 접속할 수 있게 된다.
// 위 기본형태에서 const PORT = 8000;로 지정했기 때문.
//그리고 서버가 실행중일 동안 콘솔창에는 "서버가 실행중입니다."가 출력된다.
node 파일명
입력하면 sever open!ctrl + c
💬