NodeJS Express Programming
Basic
app.js
app.js is a main code of express.
setting, middleware, route, server, error handling etc…
Start server
Please add following server start code before module
app.listen(app.get('port'), function(){ // app.get('port') : port
console.log('Express server listening on port ' + app.get('port'));
});
Start node
node app.js
Basic Route
app.js
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user');
routes : index.js, user.js
app.get('/', routes.index);
app.get('/users', user.list);
index.js
exports.index = function(req, res){
res.render('index', { title: 'Express' });
}
exports.index -> ‘/’
And layout is index.jade, pass title parameter as Express
EJS
If you want to use ejs, use following command.
express -e myapp # Use -e option
EJS is HTML like layout. All parameters or codes are between >
Example
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
<link rel='stylesheet' href='/stylesheets/style.css' />
<script src="javascripts/jquery/jquery.min.js"></script>
<script src="javascripts/index.js"></script>
</head>
<body>
<% include header %>
<div class="container">
<h3>Hello world!</h3>
</div>
<% include footer %>
</body>
</html>
Form
This is an example of form.
EJS
index.ejs
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
<link rel='stylesheet' href='/stylesheets/style.css' />
<script src="javascripts/jquery/jquery.min.js"></script>
</head>
<body>
<div class="container">
<div class="panel panel-primary pull-right login">
<div class="panel-heading">
<h1 class="panel-title">Form Example</h1>
</div>
<div class="panel-body">
<form action="/login" method="post">
<input type="text" class="form-control" name="name" placeholder="name"/><br/>
<div class="form-group">
<input id="submit" type="submit" value="Submit" class="btn btn-primary pull-right"/>
</div>
</form>
</div>
</div>
</div>
<% include footer %>
</body>
</html>
Server side get and post
index.js
var express = require('express');
var routes = express.Router();
routes.get('/', function(req, res, next) {
res.render('index', {title: 'Hello Top'}); // index.ejs
});
routes.post('/', function(req, res, next){
var name = req.params.name;
// Do something
});
module.exports = routes;
Parameters
Query style
index?id=12345
req.query.id id query string key
exports.index = function(req, res){
var id = req.query.id;
var name = req.query.name;
var msg = 'Hello!';
if ( id != undefined ) {
msg += 'ID=' + id;
}
if ( name != undefined ) {
msg += ':' + name;
}
res.render('index', { title: 'Express',
msg: msg});
};
req.query.xxx; Test : http://localhost:3000?id=123&name=taeyeon
URL style
http://localhost:3000/index/1/taro
app.js
app.get('/', routes.index);
app.get('/index', routes.index);
app.get('/index/:id', routes.index);
app.get('/index/:id/:name', routes.index);
Retrieve parameters
var id = req.params.id; var name = req.params.name;
http://localhost:3000/index/12345/tayeon
Form
You can use name attr in form
In serverside, you can get paramter as body
In detail, you can see Form
