1. nodejs 및 npm 설치 여부

1
2
3
4
5
[root@localhost ~]# node -v
v6.17.1
[root@localhost ~]# npm -v
3.10.10
 

- 설치가 안되어 있다면

1
[root@localhost ~]# yum install npm nodejs
 

2. express 설치

1
[root@localhost ~]# npm install -g express-generator
 
1
2
3
4
[root@localhost ~]# express -e 프로젝트 폴더명
[root@localhost ~]# cd 프로젝트 폴더명
[root@localhost ~]# npm install
[root@localhost ~]# npm init
 

-필자는 프로젝트 폴더명을 'myapp'이라고 했음...

npm init 명령어 이후  ls 명령어로 하위 폴더을 살펴보면 다음과 같이 생성되어 있는것을 볼 수 있다.

1
2
[root@localhost myapp]# ls
app.js  bin  node_modules  package.json  public  routes  views
 

방화벽 오픈(nodejs express 서버의 포트 번호는 3000번이므로...)

1
2
[root@localhost myapp]# firewall-cmd --permanent --zone=public --add-port=3000/tcp
[root@localhost myapp]# firewall-cmd --reload
 

mysql 모듈 추가 명령어는

1
npm install mysql
 

session 모듈 추가는

1
npm install --save express-session
 

[app.js]

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
 
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var paintingRouter = require('./routes/painting');
 
var app = express();
 
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine''ejs');                
app.engine('html', require('ejs').renderFile);
 
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
 
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/painting', paintingRouter);
 
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next();
});
 
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env'=== 'development' ? err : {};
 
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
 
module.exports = app;
 

[routers/users.js]

1. GET방식

1
2
3
4
5
6
7
8
9
10
var express = require('express');
var router = express.Router();
var db = require('../connectDB');
 
/* GET users listing. */
router.get('/'function(req, res, next) {
  db.query('SELECT * FROM ProductTable WHERE prCode=?',req.query.num,(err, rows, fields) => {
    res.send(rows);
  });
});
 
 

2. POST방식

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function sendPost(number){
    fetch(
        `/users`,        // URL
        {
            method: 'post',         // method
            body: JSON.stringify({    // URL로 보낼 데이터
                num: number        
            }),
            headers:{        // json data를 보내기 위한 
                'Content-Type''application/json'
            }}
        ).then(function(response){
            return response.json();
        }).then(function(json){
            console.log(json);
        });
}
 
 

[routers/users.js]

1
2
3
4
5
6
7
8
9
10
11
12
var express = require('express');
var router = express.Router();
var db = require('../connectDB');
 
/* POST users listing. */
router.post('/'function(req, res, next) {
  var number = req.body.num;
  db.query('SELECT * FROM ProductTable WHERE prCode=?',req.body.num,(err, rows, fields) => {
    res.send(rows); 
  });
});
module.exports = router;
 

우선 connectDB.js파일을 만듭니다.

1
2
3
4
5
6
7
8
9
10
11
12
var mysql = require('mysql');
 
const connection = mysql.createConnection({
    host: 'ip주소',
    user: 'mysql 유저명',
    password: 'mysql 비번',
    port: 'mysql 포트번호',
    database: '접속할 디비명' 
});
connection.connect();
 
module.exports = connection;
 
 

connectDB.js파일에 위와 같은 구문의 MYSQL 접속 정보를 입력하고 저장합니다.

참고로 mysql 모듈이 없으면 에러가 발생합니다. 그러므로 아래와 같음 명령어로 mysql 모듈을 설치해 줍니다.

1
npm install mysql
 

사용법

app.js이든 router 이든 아래와 같이 connectDB.js를 임포트 하여 

1
2
// connectDB.js 임포트
var db = require('../connectDB');
 

다음과 같이 db에 쿼리문을 날릴수 있다.

1
2
3
db.query('쿼리문',(err, rows, fields) => {
  res.send(rows);
});
 
 

 

아래와 같은 구문은 뷰엔진으로 확장자가 jade인 파일을 보여주겠다는 의미입니다.

[app.js]

1
2
app.set('views', path.join(__dirname, 'views'));
app.set('view engine''jade');
 

저는 jade의 들여쓰기가 너무 어이가 없어서 저에게 편한 html파일을 사용하려 합니다.

express에서 html를 사용하려면 ejs라는 모듈이 필요합니다. 바로 설치 해줍니다.

1
npm install ejs
 

설치를 하고 뷰 엔진을 ejs로 바꾸어 줍니다.

1
2
3
app.set('views', path.join(__dirname, 'views'));
app.set('view engine''ejs');
app.engine('html', require('ejs').renderFile);
 

이렇게 하면 라우터에서 아래와 같은 구문으로 index.html로 넘어갑니다.

1
2
3
router.get('/'function(req, res, next) {
  res.render('index.html');
});
 
 

 

express js는 nodejs의 프레임워크 중 하나이므로 nodejs가 설치 되어있어야 합니다.

1,3번째 줄의 코드는 nodejs와 npm 버전 확인...

1
2
3
4
node --version
v10.16.3
npm --version
6.9.0
cs

nodejs와 npm이 설치가 되어 있다면 원하는 경로로 들어가서 아래의 명령어 입력

1
npm install express -g
 

이후 express myapp 명령어를 입력하면 해당 경로에 'myapp'이라는 폴더가 만들어 지며

1
express myapp
 

myapp 폴더안에는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/myapp
  ⌊ /bin
      ⌊ www
  ⌊ /public
      ⌊ /images
      ⌊ /javascripts
      ⌊ /stylesheets
  ⌊ /routes
      ⌊ index.js
      ⌊ users.js
  ⌊ /views
      ⌊ index.jade
  ⌊ app.js
  ⌊ package.json
 

와 같은 구조로 파일들이 생성되어있는것을 보게될것입니다.

 

잘 설치가 되었는지 구동을 해보자면

1
2
npm install
npm start
 

위와 같은 명령어를 실행 하고

url에 localhost:3000을 입력하면 제대로 작동되는 것을 확인할 수 있습니다.

+ Recent posts