Mercurial > cgi-bin > hgwebdir.cgi > POP > oldRepo
diff 1__Development/6__Website/POPExpressServer/POPServer.js @ 5:e73fbbcb5fd2
Persisting basic graph works, starting to add persist of view hierarchy too
| author | Sean Halle <seanhalle@yahoo.com> |
|---|---|
| date | Sun, 03 Aug 2014 23:38:15 -0700 |
| parents | |
| children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/1__Development/6__Website/POPExpressServer/POPServer.js Sun Aug 03 23:38:15 2014 -0700 1.3 @@ -0,0 +1,72 @@ 1.4 +var express = require('express'); 1.5 +var http = require('http'); 1.6 +var path = require('path'); 1.7 +var favicon = require('static-favicon'); 1.8 +var logger = require('morgan'); 1.9 +var cookieParser = require('cookie-parser'); 1.10 +var bodyParser = require('body-parser'); 1.11 + 1.12 +//The express package returned a raw function to the express variable, 1.13 +// so it can be invoked directly, which runs the express code: 1.14 +var server = express(); 1.15 + 1.16 +// view engine setup -- inside the handlers, the "render" function takes 1.17 +// the name of one of the views set up here: 1.18 +server.set('views', path.join(__dirname, 'views')); 1.19 +server.set('view engine', 'jade'); 1.20 + 1.21 +server.use(favicon()); 1.22 +server.use(logger('dev')); 1.23 +server.use(bodyParser.json()); 1.24 +server.use(bodyParser.urlencoded()); 1.25 +server.use(cookieParser()); 1.26 +server.use(express.static(path.join(__dirname, 'public'))); 1.27 +server.use(server.router); 1.28 + 1.29 +//Load in functions that will be used to handle particular URLs 1.30 +//In routeFns.js, have "exports.<fn_name>", and after the require, 1.31 +// that fn is accessed as "routes.<fn_name>" 1.32 +var routes = require('./routes/routeHdlrs'); 1.33 +var users = require('./routes/user'); 1.34 + 1.35 +//Here is where URLs are associated to the handler functions (loaded above) 1.36 +server.get('/', routes.index); //associates base URL to routes.index fn 1.37 +server.get('/users', users.list); 1.38 +server.get('/foobar', routes.foobar); 1.39 +server.get('/savejson', routes.saveJSON); 1.40 + 1.41 +/// catch 404 and forwarding to error handler 1.42 +server.use(function(req, res, next) { 1.43 + var err = new Error('Not Found'); 1.44 + err.status = 404; 1.45 + next(err); 1.46 +}); 1.47 + 1.48 +/// error handlers 1.49 + 1.50 +// development error handler 1.51 +// will print stacktrace 1.52 +if (server.get('env') === 'development') { 1.53 + server.use(function(err, req, res, next) { 1.54 + res.render('error', { 1.55 + message: err.message, 1.56 + error: err 1.57 + }); 1.58 + }); 1.59 +} 1.60 + 1.61 +// production error handler 1.62 +// no stacktraces leaked to user 1.63 +server.use(function(err, req, res, next) { 1.64 + res.render('error', { 1.65 + message: err.message, 1.66 + error: {} 1.67 + }); 1.68 +}); 1.69 + 1.70 + 1.71 +//in case this code is imported into a higher level project: 1.72 +module.exports = server; 1.73 + 1.74 +//start the server listening and handling requests: 1.75 +server.listen(3000, function(){console.log("server listening on port 3000");});
