Web Development #2
- Refactor views
- Sessions
- File uploads
- To the cloud (and beyond)
But first...
let's recap
Connect middleware
var connect = require('connect');
var colors = require('colors');
var server = connect();
var authcheck = function(req, res, next){
console.log("Performing difficult auth checks".grey);
next();
}
var myServer = function(req, res, next){
console.log("Serving ".green + req.url.green)
res.writeHead(200);
res.end("You are at " + req.url);
}
server.use('/admin', authcheck);
server.use(myServer);
server.listen(3000);Functions that run for each request. Except for those with mounted routes.
Express framework
var express = require('express');
var router = express.Router();
var app = express();
router.get('/', function(req, res) {
res.send('index page');
});
router.get('/users', function(req, res) {
res.send('users page');
});
app.use(router);
app.listen(3000);Web application framework for node
Refactor Views
EJS
<% include another_file %>
Code
Add Sessions
Sessions?
- How do they work?
- What is the 'secret' stuff?
Code
...note to self, next part
Data: querystring, body & files!
- Middleware parses the request (show raw request)
- Which middleware does what?
- Files are different, they come as events afterwards..!
Querystring
var connect = require('connect');
var querystring = require('qs');
var server = connect();
server.use(function(req, res){
var query = querystring.parse(req._parsedUrl.query);
console.log(req);
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(JSON.stringify(query));
});
server.listen(3000);req._parsedUrl
Body of data
var connect = require('connect');
var bodyParser = require('body-parser');
var server = connect();
server.use(bodyParser.urlencoded({ extended: false }));
server.use(function(req, res){
console.log(req.body);
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(
"<form method='post'>"+
"<input name='myText' type='text'/>"+
"<input name='myButton' type='submit' />"+
"</form>");
});
server.listen(3000);req.body
How about files?!
They come afterwards!
var connect = require('connect');
var app = connect();
app.use(function(req, res){
req.setEncoding('utf8');
req.on('data', function(data){
console.log(data);
});
req.on('end', function(){
console.log("done");
});
res.end("<html><form method='post' enctype='multipart/form-data'>"+
"<input type='text' name='file_caption' />"+
"<input type='file' name='file_file' />"+
"<input type='submit' />"+
"</form></html>");
});
app.listen(3000);events!
req is an IncomingMessage which implements the Readable Stream
Add Item
Code
Heroku!
Heroku
https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction
Git
http://git-scm.com/
- Starta lokal git
- Skapa heroku-app
- Koppla heroku-app till lokal git
- Lägg node_modules i .gitignore
- Pusha!
Heroku + git
Next time...
MongoDB
Test
Node.JS #3
By Gustav Jorlöv
Node.JS #3
- 471