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