eclipse에서 express 프로젝트를 생성해 보았는데요.

( [node.js] eclipse에서 express를 이용한 웹 서버 테스트 )


express로 프로젝트를 만들었을 때 자동으로 생성되는 디렉토리와 파일들이 있습니다.

이걸 간단하게 설명 하면


Dir / File

 설명

 app.js

 사이트에 대한 모든 정보가 들어 있습니다.

 port : 서버를 접속하기 위한 포트
 route 정보 : 접속 url에 따른 서비스 호출

 /public

 화면을 보여주는데 필요한 리소스 들로 image, javascript, css등이 위치 합니다

 /routes

 기능 또는 서비스별 view의 위치

 /views

 view 관련 파일들


기본적으로 생성된 디렉토리 하위에 필요한 디렉토리와 파일을 생성하면 됩니다.

 

그럼 생성된 파일들의 구조를 살펴 보겠습니다.




하나씩 따라가 볼까요?


1.1) app.js 파일에서

1.2) routes = require('./routes')

-> routes ./routes 디렉토리를 대입하고

1.3) app.get('/', routes.index); 

    -> ‘/’ 로 접속하면 ./views/index.jade를 호출 하는데

1.4) layout


다음으로는


2.1) app.js 파일에서

2.2) user = require('./routes/user')

   -> user./routes/user를 대입하고

2.3) app.get('/users', user.list);

  -> ‘/users’로 접속하면 user.list를 호출하라고 합니다.

2.4) 이건 views를 호출하지 않습니다.

 

그럼 url을 하나씩 호출 해 보겠습니다.


http://localhost:3000/


viewsindex파일을 렌더링 합니다.


exports.index = function(req, res){

  res.render('index', { title: 'Express' });

};

 



http://localhost:3000/users


view 호출 없이 텍스트를 받아 왔습니다.

exports.list = function(req, res){

  res.send("respond with a resource");

};



- copy coding -



console에서 express 프로젝트를 만들어 테스트 해봤으니 이제 eclipse에서 해보겠습니다.


console mode는 아래 링크를 참조 하세요.

[node.js] express를 이용한 console 모드 웹 서버 테스트



eclipse에서 express 프로젝트 만들기는 거의 클릭만 하면 되기 때문에 상당히 쉽습니다.

 

먼저 신규 프로젝트를 만들어야 겠죠.


eclipse에서


File > New


를 선택 하면 Noje.js Express Project 가 보입니다.



안보이나요?


한번도 Express 프로젝트를 만들지 않았으면 안보일 수도 있습니다.

그때는 하단에 Other…를 선택 합니다.

 


Other… 를 선택 하면 창이 뜨는데 이곳에서 Node.js Express Project를 선택 합니다.



이것도 안보인다고요?

그럼 node.js plug-in을 설치하지 않아서 입니다.


nodejs eclipse 개발 환경 설정

링크를 선택해서 설치 방법대로 작업을 합니다.


어찌 되었든 둘중에 한가지 방법으로 Node.js Express Project를 선택하면

프로젝트 명을 입력하는 창이 나옵니다.


적당히 이름을 기입 합니다.

저는 myProject 라고 적었습니다.



[Finish] 버튼을 클릭하면 파일들이 주르륵 생기는 군요.

 


package.json 파일을 볼까요?



시작 하려면 node app.js라고 명령어를 사용 해야 하고

jadeclient 쪽을 구현 한다는 군요.

 

그럼 npm을 이용해 package.json 파일에 있는 것을 설치 해 봅니다.

 

프로젝트에 우측 마우스를 놓고 클릭 하면 중간 아래쪽에 Run As가 보입니다.

거기서 npm Install을 선택 합니다.



설치를 하면서 Console 창에 머라고 하네요.

 

. 설치를 다 했다네요.



Update도 해볼까요?

npm Install 바로 아래에 있습니다.



이번에도 Console 창에 머라 하는군요.

에러만 아니면 됩니다.



이제 필요한건 모두 설치가 끝났고 실행을 할건데

포트가 먼지 알아야 client에서 확인을 할 수 있겠죠?


app.js를 보니 포트는 3000 이라고 적혀 있습니다.

변경하려면 숫자를 고칩니다.



지금까지 키보드로 글자를 적은건 myProject 밖에 없네요.

 

잘 되는지 확인을 해볼까요?



이번에는 Run As 에서 Node Application을 선택 합니다.

 

Console 창을 볼까요?



3000번 포트로 Express server가 대기하고 있습니다.

 

그럼 웹 브라우저를 하나 열고 http://localhost:3000/ 을 입력하고 확인 합니다.

 

잘 나옵니다.


eclipse express


이번에도 해피엔딩입니다.


- copy coding -


node에서 express를 이용해서 간단한 웹 서버 테스트를 해보겠습니다.

console 모드에서 작업하는걸 기준으로 테스트 합니다.


기존에 node.js가 설치되어 있어야 합니다.

expressnode에 기본으로 들어있지 않아 설치 해야 합니다.

local용으로 설치가 어떻게 되는지 테스트만 하기 때문에 –g 옵션은 생략 합니다.


nodejs express console

 

설치 명령은 다음과 같습니다.


>npm install express@2.5.x




설치를 하면 node_modules 디렉토리가 생성되고 하위 디렉토리는



이렇게 생성이 됩니다.



그런데 저는 2.x가 아닌 최신 버전으로 테스트 하려고 합니다.

 

동일한 명령어로 npm insall express라고하면 설치는 진행 됩니다.

 

그러나 express 4.0부터는 설치 명령어가 변경 되었습니다.

 

만약에 기존 명령어로 express 4.0이상을 설치하고 프로젝트를 생성하면

설치는 되는데 프로젝트를 생성 할 때 오류가 발생 합니다.




그럼 express 4.0이상을 설치하는 제대로 된 명령어로 설치를 해 볼까요?

버전을 적지 않았으니 최근 버전이 설치가 되겠죠.


>npm install -g express-generator


이렇게 하면 4.0 이상 최신 버전을 설치 할 수 있습니다.



4.16.0 버전이 설치 되었군요.


그리고 또 다른 변화.

생성된 디렉토리 구조도 변경이 되었습니다.


4.0이상 node_modules 디렉토리 구조를 보면



2.x 대와는 너무 많아서 일부만 가져왔습니다.

, 많은 모듈들이 4.x 대에서는 추가가 되었습니다.

 

이제는 프로젝트를 생성해 볼까요?


>express myProject


뭔가 주르륵 아무 설명도 없이 디렉토리들이 만들어 집니다.

.


고맙게도 하단에 어떻게 하면 테스트가 이루어 지는지 친절하게 설명을 해주고 있네요.


알려주는 방법 그대~로 테스트를 진행 하면 결과를 확인 할 수 있습니다.

 

우선 생성된 프로젝트의 구조와 파일들을 보면




제일 중요한 app.jspackage.json 파일이 하단에 있습니다.

 

하나씩 알려준 순서로 테스트를 진행해 보겠습니다.

 

 Project 가 생성된 directory로 이동하고


     > cd myProject

 

package.json에 있는 dependency를 설치 합니다.


     > npm install



npm install 명령을 실행하면 위에서 설명한 버전별 node_modules 디렉토리가 생성됩니다.




app.js를 이용하여 서버를 띄웁니다.


     > SET DEBUG=myproject:* & npm start



서버가 Port 3000으로 기다리고 있다네요.


지금 만나러 가볼까요?



. 해피엔딩 입니다.


- copy coding -


node 내부에는 기본적인 프로그램을 할 수 있는 기능들이 있습니다.

최초 설치시 기본적인 모듈들도 같이 설치가 되지만 좀더 풍부한 기능을 사용 하려면

외부에 있는 모듈을 추가로 설치 해야 합니다.


사용되는 모듈이 많아지면 하나씩 수작업으로 관리하기가 어려워집니다.

만약에 버전도 관리를 해야 한다면 상당히 귀찮아 질 수 있는데

node.js에는 이런 걱정을 덜 수 있는 npm(Node Package Manager)이라는 툴이 있습니다.


npmpackage.json라는 파일을 이용하여 프로젝트에 필요한 모듈들을 관리 합니다.

java에서 maven으로 프로젝트를 관리할 때 pom.xml 파일을 작성하는 것과 비슷합니다.


nodejs npm


npm을 사용하는 명령어 몇개를 보면


- 모듈 설치 방법


>npm install [패키지명]

>npm install [패키지명]@[버전]

>npm install [패키지명]@”<2.1”   -- 버전이 2.1 보다 작은 것

 

- 모듈 제거 방법


>npm uninstall [패키지명]

 

- 모듈 업데이트 방법


>npm update [패키지명]


 

이런식으로 작업을 합니다.

만약 프로젝트에 설치할 모듈이 많아지면 수작업으로 하기는 어렵겠죠?

그래서 package.json 이라는 파일을 이용해 관리를 하면 편리 합니다.


{
  "name": "Test",
	"version": "0.0.1",
	"dependencies": {
	   “express” : “4.16.4”
	   “jade” : “*”
	}
}

이렇게 package.json 파일의 dependencies 내부에 필요한 모듈을 작성한 후


>npm install


>npm update


하기만 하면 명시된 모듈들이 모두 인스톨 되거나 업데이트가 됩니다.

 

간단하게 테스트를 해보겠습니다.

물론 위에서 처럼 수작업을 하지는 않고 eclipse에서 작업을 합니다.


파일을 하나 만들고 실행을 해봅니다.




var express = require('express');

 

express 라는 모듈이 최초 node 설치파일에 포함되지 않아 오류가 발생하는군요.

 

npm을 초기화 해보도록 하겠습니다.



프로젝트(Test)에서 마우스 우측 버튼을 클릭 > New > Other…



npm Init



[Next] 버튼을 누릅니다.



[Finish]버튼을 누릅니다.

 

그러면 좌측에 못보던  package.json 이라는 파일이 생겼네요.



프로젝트에 대한 전반적인 환경을 포함하고 있는 파일입니다.


이제 설치할 모듈을 추가할 수 있게 되었습니다.


package.json 파일에 express와 버전을 기입 합니다.


"dependencies": {

    "express": "4.16.3"

}




npm을 이용하여 패키지를 추가해 줍니다.



 

디렉토리에는 어떤 변화가 있을까요?

 

npm Install을 하기 전 모습



npm Install을 실행 후 모습



node_modules 디렉토리가 새로 생성 되었습니다.

 

node_modules 디렉토리 구조를 볼까요?



너무 많아 일부만 담았습니다.

 

node_modules 하위에 무척 많은 디렉토리가 생성이 되었습니다.

 

express 4.x 버전부터 변화가 생겼습니다.

 

4.x 버전 이전의 node_modules 하위 디렉토리 구조는

 



이렇게 몇 개 되지 않았는데 좀더 많은 기능들이 추가 되었습니다.


이제 프로그램을 실행 합니다.



잘 실행이 되고 있군요.


서버가 기동하고 Client의 접속을 기다리고 있습니다.


웹브라우저를 하나 열어 접속을 시도해 봅니다.


http://localhost:8181/



성공입니다.



이것도 동일한 결과죠.


 


몇줄 되지 않지만 웹서버의 역할을 하고 있습니다.

서버는 계속 대기상태에 있습니다.


만일 동일한 포트를 사용하거나 수정을 하고 다시 테스트를 하는 경우에는

기존 웹서버를 내리고(프로세스 종료) 테스트 합니다.



기존 서버가 살아있으면 포트를 사용할 수 없어 오류가 발생 합니다.


- copy coding -


12

+ Recent posts