본문 바로가기
자바스크립트와 캔버스

Node.js - Part 11-5. 스크립트의 이해

자, 이제 4줄짜리 express 기본 소스가 어떤 구조인지 살펴 보도록 하겠습니다.

Node.js 스크립트는 항상 첫 줄부터 순차진행됩니다. 첫째 줄 스크립트는 아래와 같은데요.

const express=require('express');

답습하는 의미에서 다시 살펴보겠습니다.

const 는 한번 대입하면 변하지 않는 상수를 정의하는 선언문이고
const express상수의 이름express 로 지어주겠다는 의미이며,

그리고 express = require('express');는 express 모듈을 불러와 express 에 넣어주겠다는 의미입니다.
등호기호 = 는 동일하다는 의미가 아니라 오른쪽을 복사해서 왼쪽에 넣는 의미였지요.

express 도 결국은 모듈이기 때문에 이와 같은 방법을 사용한다고 이해하시면 되는데요.
이 한 줄이 실행되면 express 라는 상수에 express 프레임워크라는 모듈이 대입되어 사용할 수 있는 단계가 됩니다. express 라는 상수는 결국 커다란 기능 덩어리가 되는 것이지요.

다음으로 실행되는 스크립트입니다.

const app=express();

express 프레임워크에는 createApplication() 이라는 함수가 들어 있는데요,
이 함수를 실행해 주어야 하나의 웹서비스가 마련되고 그 것을 이라 부릅니다.
express()는 바로 createApplication() 함수를 시작하는 명령입니다.
그리고 생성된 웹서비스를 반환해 app 이라는 상수에 대입해주는 부분인데요.
간단히 말하자면 홈페이지 서비스 1개가 app에 대입되었다고 생각하시면 됩니다.

여기서 왜 두 번의 과정을 거치도록 했는가 불편하다는 생각을 제기하실 수도 있는데요,
그것은 Node.js 에서는 하나의 서비스로 2개 이상 홈페이지를 동시 작동하는 것도 가능하기 때문입니다.

아래 스크립트는 express()를 2회 실행, 각각의 웹서비스를 app. app2 에 넣고,
8080 포트와 8081 포트를 동시에 서비스하는 스크립트 예시입니다. 그냥 참고만 해 주세요.

const express=require('express');
 
const app=express();
app.use(express.static('public'));
app.listen(8080, function() {});
 
const app2=express();
app2.use(express.static('public2'));
app2.listen(8081, function() {});

다음 스크립트입니다.

app.use(express.static('public'));

이 스크립트는 public 폴더정적 웹사이트로 만들어줍니다.

웹 브라우저에서 퍼블릭IP/puppy.html URL로 접속하면
/home/nodejs2 폴더가 아니라

/home/nodejs2/public 폴더의 파일을 접근하게 하는 규칙인데요.
거의 변함 없으니 그대로 사용하시면 됩니다.

이렇게 별도 폴더를 정하는 이유는 바로 해킹 때문입니다.
만일 아래처럼 스크립트를 구성하면 현재 폴더, /home/nodejs2 폴더가 정적 폴더가 되는데요.

app.use(express.static('.'));

이 경우 해커가 main.js 라는 스크립트명을 유추, 웹페이지를 띄우면 바로 주요 소스를 볼 수 있습니다.
그러니 위험하겠지요?

헉!

그러니 public 폴더를 정적 폴더로 정하고 기능 없는 안전한 파일만 넣는게 관리가 편합니다.

마지막 스크립트입니다.

app.listen(8080, function() {});

이 스크립트는 8080 포트로 웹서비스를 시작하는 부분인데요.
역시 고정으로 사용한다 생각하시면 됩니다. 변경되는 부분은 서비스할 포트번호 8080뿐입니다.

콜백함수(function…) 부분은 신경 쓰지 않으셔도 됩니다. express 에서는 거의 사용하지 않으며
마운트(mount)와 라우터(route)라는 매우 편리한 기능이 있기 때문에 차후에 살펴보도록 하겠습니다.


방문해주시는 모든 분들께 늘 감사드립니다.

도움이 되셨다면 공감 한방, 댓글은 굿잡!
감사합니다~


다음이야기 : https://itadventure.tistory.com/514

 

Node.js - Part 11-6. 그림파일도 문제 없어요

처음부터 시작하는 AWS와 Node.js 책자 본문 일부입니다. https://itadventure.tistory.com/493 [전자책 출간!] 처음부터 시작하는 AWS와 Node.js ( express ) 65 페이지 분량의 미리보기 책을 무료로 제공해드립..

itadventure.tistory.com