Express framework은 Express 모듈로 만든 framework다. 프로젝트를 손쉽게 만들어주고 기본적인 뷰와 세션을 지원한다.
1. 설치
* 4. x 설치 명령어
baesunghan:~/Documents/workspace/nodejs$sudo npm install -g express-generator
Password:
/usr/local/bin/express -> /usr/local/lib/node_modules/express-generator/bin/express express-generator@4.12.1 /usr/local/lib/node_modules/express-generator ├── sorted-object@1.0.0 ├── commander@2.6.0 └── mkdirp@0.5.0 (minimist@0.0.8)
baesunghan:~/Documents/workspace/nodejs$
|
2. HelloExpress Project 생성
현재 디렉토리에 HelloExpress 가 만들어지고 아래와 같이 구성된다.
baesunghan:~/Documents/workspace/nodejs$express HelloExpress
create : HelloExpress create : HelloExpress/package.json create : HelloExpress/app.js create : HelloExpress/public create : HelloExpress/public/javascripts create : HelloExpress/public/images create : HelloExpress/public/stylesheets create : HelloExpress/public/stylesheets/style.css create : HelloExpress/routes create : HelloExpress/routes/index.js create : HelloExpress/routes/users.js create : HelloExpress/views create : HelloExpress/views/index.jade create : HelloExpress/views/layout.jade create : HelloExpress/views/error.jade create : HelloExpress/bin create : HelloExpress/bin/www install dependencies: $ cd HelloExpress && npm install run the app: $ DEBUG=HelloExpress:* ./bin/www
baesunghan:~/Documents/workspace/nodejs$
|
3. Dependency를 가진 모듈 설치를 위해서 명령실행
baesunghan:~/Documents/workspace/nodejs$cd HelloExpress && npm install
|
4. 생성된 HelloExpress 실행
baesunghan:~/Documents/workspace/nodejs/HelloExpress$DEBUG=HelloExpress:* ./bin/www
|
or
baesunghan:~/Documents/workspace/nodejs/HelloExpress$npm start
|
5. 페이지 렌더링
jade, ejs 방식으로 페이지를 작성해서 표현할 수 있다.
- app.js : jade로 페이지를 렌드링 하도록 설정
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
|
- index.js : index.jade 파일을 읽어서 페이지를 렌드링한다. 이때 파라메타로 title과 query로 조회된 list를 rows변수로 넘겨준다.
var express = require('express');
var router = express.Router();
// load MySql
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 3,
user: 'test',
password: 'test',
database: 'test'
});
/* GET 게시판 전체 리스트. */
router.get('/', function(req, res, next) {
res.redirect('/board/list/1');
});
router.get('/list/:page', function(req, res, next) {
pool.getConnection(function(err, conn) {
var selectList = "SELECT idx, creator_id, title, date_format(modidate, '%Y-%m-%d %H:%i:%s') modidate, hit from board";
conn.query(selectList, function(err, rows) {
if (err) console.error("err : " + err);
console.log("rows : " + JSON.stringify(rows));
res.render('index', {title: '게시판 전체 글 조회', rows:rows});
conn.release();
});
});
});
|
- index.jade : jade 문법과 index.js에서 넘겨준 파라메타 값을 렌드링시에 출력한다. 참고로 extends layout 을 통해서 layout.jade 를 같이 렌드링해서 페이지를 만든다.
extends layout
block content
h1= title
a(href="/board/write") 글쓰기로 이동
br
br
table(border="1")
tr
td 번호
td 작성자
td 제목
td 조회수
td 변경일
- for item in rows
tr
td= item.idx
td= item.creator_id
td
a(href="/board/read/#{item.idx}")= item.title
td= item.hit
td= item.modidate
|
- layout.jade
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
script(src="/javascripts/jquery-1.11.2.min.js")
body
block content
|
<수행 결과>
이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
댓글 없음:
댓글 쓰기