자바스크립트 기반으로 서버사이드 개발에 사용되는 Javascript 런타임
이벤트 기반, Non-Bloking I/O 모델 사용하여 가볍고 효율적
프로그래밍 언어가 구동되는 환경, javascript를 서버사이드 언어로 활용하기 위해 나온것이 Node.js
노드 패키지를 관리해주는 틀
의존관계의 패키지들을 문제가 발생하지 않기 위해 관리해줌, 프로젝트에 대한 정보와 사용중인 배키지 이름 및 버전정보 담겨있음
사용자가 직접 제어할 수 있는 스레드는 하나(싱글 스레드)
Non-blocking I/O 기능으로 일부 기능은 백그라운드에서 실행 가능
이벤트가 발생할 때 미리 지정해둔 작업을 수행(클릭, 네트워크 요청, 타이머 등)
특정한 기능을 하는 함수, 변수들의 집합
//하나의 모듈 파일에 여러개
const a = 'a 변수';
const b = 'b 변수';
module.exports = { a, b};
//하나의 모듈 파일에 하나
function connect() {
return a + b;
}
modyle.exports = connect;
//모듈 가져오기
const {a, b} = require(...);
const returnString = require(...);
const a = 'a 변수';
const b = 'b 변수';
export {a, b};
function connect() {
return a + b;
}
export default connect;
//모듈 가져오기
import {a, b} from '...';
import returnString from '...';
http 모듈 : 웹 서버 구동하기 위한 node 내장 모듈
const http = require('http');
const server = http.createServer((req, res)=> {
res.writeHead(200); //응답 헤더
res.write(...); //응답 본문
res.end(...); 응답 본문 작성후 종료
});
server.listen(8000, ()=> { //첫번째 매개변수 포트번호, 두번째 callback
...
}
웹 서버 생성과 관련된 기능을 담당하는 프레임워크, 각종 메서드와 미들웨어 내장
http모듈의 가독성과 확장성을 보완한 프레임워크
npm install express
node_modules가 생성, package_json의 dependencies에 의존성 추가
express()
- Express 모듈을 불러오는 최상위 함수
app
- Express() 호출함으로써 만들어진 애플리케이션
ejs - 자바스크립트 내장되어 있는 html파일
npm install ejs
app.set('view engine', 'ejs');
app.use('/views', express.static(__dirname + '/views')); //경로와 이름지정
<% %>
- js 코드가 들어가고, 줄바꿈 필요할 시 새로운 <% %> 이용
<%= %>
- 값을 출력할 때 사용
<%- include('view의 상대주소') %>
- 다른 view파일 불러올 때 사용