티스토리 뷰
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 이벤트기반 JavaScript 런타임 환경이다.
- 작성 언어: 자바스크립트를 활용
- 논블로킹 I/O와 단일 스레드 이벤트 루프를 통한 높은 Request 처리 성능을 가지고 있다.
- 모든 API가 비동기 방식으로 동작
- 단일 스레드 이벤트 루프 모델을 사용함으로써 보다 가벼운 환경에서도 높은 요청 처리 성능을 보여준다.
- 데이터를 실시간 처리하는 SPA에 적합하다.
- 단, CPU 사용률이 높은 어플리케이션에서는 권장하지 않는다.
- Socket.io라는 실시간 통신 라이브러리를 사용하여 대량의 처리와 실시간 통신 모두 구현할 수 있다.
- Node.js는 http서버 모듈을 내장하고 있어서 아파치와 같은 별도의 웹서버를 설치할 필요가 없다.
런타임
: 컴퓨터 언어 안에 쓰인 프로그램을 관리하기 위해 특정한 컴파일러나 가상 머신이 사용하는 기본 코드의 라이브러리나 프로그램을 가리키는 런타임 라이브러리라고도 일컫는다.
런타임환경
: 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태이다. 운영체제에 속하는 경우도 있고 운영체제에서 작동하는 소프트웨어를 뜻할 수도 있다.
*VSCode 터미널 띄우기 단축키: ctrl + `(백틱)
-사용 shell: (git) bash
- bash에 명령어: node 파일명.js 를 통해 자바스크립트 파일 실행
//웹 서버 만들어보기
//package-lock.json파일에 들어가보면 nodemailer 외에도 여러가지가 추가된 것을 볼 수 있다.
// express 하위 목록을 보면 해당 모듈을 만들기 위해 사용된 여러가지 npm모듈들을 볼 수 있다.
/*
Express 공홈에 가면 상세 설명이 있으니 참고
원하는 경로에 Express를 설치한 후 종속 항목 목록에 저장하려면 아래와 같이 입력
익스프레스 설치하기 명령어: npm install express --save 임시로 설치하고 종속 항목 목록에
추가하지 않으려면, --save 옵션을 생략하면 된다.
[ --save 옵션을 통해 설치된 Node 모듈은 package.json
파일 내의 dependencies 목록에 추가됩니다.
이후 app 디렉토리에서 npm install을 실행하면
종속 항목 목록 내의 모듈이 자동으로 설치됩니다. ]
*/
//1.설치한 모듈 가져오기
const express = require('express');
const app = express();
const server = app.listen(3000, () => {
console.log('Start Server : localhost: 3000');
});
// 위 상태에서 서버 실행해보기 ->명령어: node server.js
// 정상 실행된 것을 확인하고 웹에 localhost:3000 을 해보면
// Cannot GET/ 이라는 문구를 표시하는 화면이 출력된다.
//-> 해당 화면의 의미는 웹서버는 정상실행됐다라는 것입니다. 연결이 안된다면
// "사이트에 연결할 수 없음" 이라고 뜹니다.
//화면에 내용을 표시하기 위해서 라우터를 통해
/*app.get(라우터 또는 루트URL(/), (req, res)=> {
//서버에서 전달해줄 내용
res.send('화면에 표시할 내용');
});*/
//앱은 서버를 시작하며 3000번 포트에서 연결을 청취한다. 앱은 루트 URL(/) 또는 라우트에 대한 요청에 응답한다.
// 다른 경로에 대해서는 404 Not Found로 응답한다.
// req(요청) 및 res(응답)은 Node가 제공하는 동일한 obj이다. 관련 메소드를 사용할 수 있음
//아래 render()를 하기 위한 셋팅 .set()
//__dirname은 현재 디렉토리를 뜻한다.
// ejs는 JSP랑 비슷한 개념, html안에서 자바스크립트를 쓸 수 있게해주는 템플릿(즉, npm을 통해 설치해야 됨)
// 명령어: npm i ejs --save를 통해 설치한다.
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
app.get('/', (req, res) => {
res.render('index.html');
});
/* app.get('/about', function (req, res) {
res.send('about page');
});
*/
//위의 코드를 아래처럼 변경하면 ejs를 사용하여 렌더할 수 있습니다.
app.get('/about', function (req, res) {
res.render('about.html');
});
//주의) 코드의 내용을 변경했다면 새로고침한다고 바로 재반영되지 않습니다.
//다시 서버를 재실행시켜줘야 변경된 내용 확인가능
// DB랑 연결해보기(찍먹)
// maria DB사용, (mysql에서 나온 거라서 mysql 모듈을 다운하면 호환된다.)
// npm install mysql --save
//결론 express모듈을 통해 웹서버 구축, mysql모듈을 통해 데이터베이스 연결
- 위의 예시 코드에서는 DB 관련 코드는 적용하지 않았습니다.
- ejs는 Embedded JavaScript 의 약자로 쉽게 말하면 자바스크립트가 내장되어 있는 html 파일이다. ejs 템플릿을 npm을 통해 설치하고 사용하면 html의 태그처럼 자바스크립트 내용을 삽입할 수 있다. -> 이를 통해 페이지를 동적으로 짜는 것이 수월해진다. (기존에 html파일과 script 태그를 이용해 분리시키는 것에서 ejs는 지정된 태그를 통해 스크립트 내용을 하나의 요소처럼 사용할 수 있게 해준다. 또한, 서버에서 보낸 변수를 가져와 사용할 수 있다. )
+ 찍먹 개념으로 공부한 것, 차후에 추가로 정리하겠음
'코딩테스트 > 연습문제' 카테고리의 다른 글
[프로그래머스 | 0단계] 배열의 유사도, 옷가게 할인받기, 중앙값 구하기 (0) | 2023.01.19 |
---|---|
[수학문제] 100! 의 끝에 0의 개수는 몇이나 있을까? (0) | 2022.11.03 |
[백준 | node.js] 백준문제 2588번 (JS 자동 형변환) (0) | 2022.04.25 |
[Node.js] readline 모듈을 사용하여 표준 입력 받기 (0) | 2022.04.22 |
[Node.js] fs모듈, readFile() readFileSync() (0) | 2022.04.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nvm 설치순서
- text input pattern
- reactAPI
- && 셸 명령어
- Prittier
- 프리렌더링확인법
- 타입스크립트 DT
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- 원티드 FE 프리온보딩 챌린지
- 항해99추천비추천
- 프리온보딩 프론트엔드 챌린지 3월
- D 플래그
- 타입스크립트 장점
- aspect-ratio
- getServerSideProps
- 항해99프론트
- tilde caret
- 부트캠프항해
- nvm경로 오류
- is()
- 형제 요소 선택자
- 원티드 3월 프론트엔드 챌린지
- grid flex
- fs모듈 넥스트
- getStaticPaths
- 원티드 프리온보딩 FE 챌린지
- ~ ^
- 항해99프론트후기
- float 레이아웃
- 틸드와 캐럿
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함