설명

nodejs는 모듈 단위로 기능을 분리해서 개발을 할 수 있음. 또한 분리된 기능들을 조립해서 새로운 기능을 만들 수 있다. 모듈은 module.exports 또는 exports 를 통해 외부로 공개할 수 있다.

 

 

변수, 함수를 활용한 예제

 

module.export를 통해 변수와 함수를 선언하고, 다른 js에서 require를 통해 해당 변수와 함수를 불러올 수 있다.

 

 

 

폴더를 사용한 예제

 

폴더 안의 것들을 불러올 수 있는데, 이 경우 해당 폴더에 js를 통합해서 보내는 index.js 파일을 만들고 그 안에 폴더 안의 js 함수들을 넣고 module.exports로 보낸다.

그리고 폴더 밖에서 해당 모듈을 불러올 경우 해당 폴더 경로를 require한 후 변수를 선언하고, 그 변수를 통해 함수를 불러오면 된다.

 

 

 

Core Module

 

nodejs에 기본적으로 포함되어 있는 모듈이다.

 

 

 

 

 

외부 Module (NPM)

https://www.npmjs.com/package/

 

express

Fast, unopinionated, minimalist web framework. Latest version: 4.18.3, last published: 12 days ago. Start using express in your project by running `npm i express`. There are 77336 other projects in the npm registry using express.

www.npmjs.com

 

npm에서 설치한 외부 모듈들을 검색해서 쓸 수 있다.

일단 express라는 nodejs에서 서버를 개발할 때 유용한 모듈이 있는데 그걸 검색해서 써보기로 했다.

 

 

 

 

터미널에서 해당 명령어로 express를 다운로드 한다.

 

 

 

 

해당 예제를 복붙해서 가져왔다. 터미널에서 실행 후 로컬호스트에서 3000번째 주소로 가면 보낸 메세지인 "Hello World"가 떠 있는 것을 확인할 수 있다.

 

 

 

정의

Node.js는 Chrome V8JavaScript 엔진으로 빌드된 JavaScript 런타임
Node.js는 웹 서버의 개념이 아닌 javascript로 서버를 구축하고 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)

웹 서버(web server)란?
- HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)를 전송해주는 서비스 프로그램

런타임(runtime)이란?
- 프로그래밍 언어는 주로 고급 언어로, 기계(컴퓨터)가 바로 이해할 수 없기에 고급 언어로 작성된 소스 코드를 기계어로 변환하는 과정

자바스크립트 런타임(javascript runtime)이란?
- 프로그래밍 언어로 작성된 javascript 언어를 컴퓨터가 이해할 수 있는 기계어로 변환시켜주는 역할

 

 

 

Node.js의 장점

Javascript 언어로 프론트엔드 뿐만 아니라 백엔드 개발 환경을 구성할 수 있고, 다양한 패키지 매니저(npm)을 기반으로 다양한 모듈을 제공하며 필요 라이브러리에 대해 설치하고 사용할 수 있기에 효율성이 좋다. 빠르게 환경 구성을 하여 개발을 해야하는 경우에 유용하고 배동기 방식에 어울리는 서비스(네트워크 스트리밍 서비스, 채팅 서비스 등)에 유용하다.

 

 

 

설치법

https://nodejs.org/en/download

 

Node.js — Download

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

LTS 윈도우 버전으로 설치한다. 추가적인 요소들을 설치할 것이냐고 물을 경우 체크를 하고 다운로드 한다.

 

 

 

명령 프롬프트에 가서 node.js가 제대로 설치되어 있는지 확인하면 된다.

일단 로그인을 만들었다. 로그인창에서 db에 있는 데이터값을 넣고 로그인을 누르면 해당 홈페이지로 이동하게끔 하도록 했다. 하지만 그건 로그인 된 것이 아니다. 다시 로그인 창으로 이동해서 다른 데이터 값을 넣어도 해당 홈페이지로 이동한다. 그렇다. 세션을 통해 로그인 정보를 기억하게끔 해야 로그인 상태를 유지할 수 있다.

 

 

 

먼저 로그인 서비스로 가서 메서드에 파라미터 값으로 불러온 로그인 유저(내가 보낸 정보)에 setter로 db에서 불러온 해당 유저의 정보들을 전부 넣고, 컨트롤러에 전달한다.

 

 

 

 

먼저 컨트롤러에 가서 로그인 서버에 파라미터로 HttpSession 을 추가하고, 만약 로그인이 성공적으로 끝났다면 setAttribute로 해당 로그인 유저의 정보들을 넣고, "user"라는 이름으로 명명한다. 그리고 홈페이지로 리다이렉트 하도록 하였다.

 

 

 

 

html로 가서 만약 'user'라는 이름의 해당 세션이 null 값이 아닐 경우(로그인 되어있는 경우) 이미 로그인 되어있다는 메시지창과 함께, 홈페이지로 넘어가게끔 하였다.

 

 

 

 

홈 페이지로 가면 해당 세션의 유저 객체가 null이 아닐경우 해당 유저의 닉네임을 화면에 보여지도록 하였다.

 

 

 

 

그 결과 비로그인 유저라면 홈페이지를 접속했을 시, 위 화면이 뜨고 /user/login에 접속해서 로그인 하고 홈페이지에 접속했을 시 화면에 로그인 유저의 닉네임이 뜨도록 되어 있다.

 

 

 

 

만약 로그인 되어 있는데도 /user/login 에 접속했다면 위 메세지가 뜨면서 자동으로 홈페이지로 가게 되어있다.

 

 

 

 

 

 

로그아웃을 구현하는건 간단하다. HttpSession을 불러와서 setAttribute로 이미 만들어진 "user"라는 이름의 세션에 null 값을 넣어주면 로그인이 풀리게 된다. 그리고 /user/login 주소로 리다이렉트 하게끔 하였다.

 

 

 

 

+ Recent posts