Skip to content

Instantly share code, notes, and snippets.

@iwillwen
Last active December 30, 2015 19:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iwillwen/7871716 to your computer and use it in GitHub Desktop.
Save iwillwen/7871716 to your computer and use it in GitHub Desktop.
webjs example
var web = require('webjs');
var redis = require('redis');
var client = redis.createClient();
// webjs style
web.run(process.argv[2] || 8080)
.config({
'views': __dirname + '/views',
'view engine': 'ejs', // jade, etc.
'foo': 'bar',
'redisClient': client,
'readonly': false
})
.use(
// Faster Middleware
'/static', web.static(__dirname + '/assets'),
// Normal Middlewares
web.query(),
web.cookieParser('webjs'),
web.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }),
web.compiler({ enable: [ 'less' ] }),
web.compress(),
function(req, res, next) {
// Response Pipeline
var startTime = process.hrtime();
res.on('pipelining', function() {
var diff = process.hrtime(startTime);
console.log(
'%s %s - %d %s',
req.method.toUpperCase(), req.url, res.statusCode, (diff[0] * 1e9 + diff[1]) / 1e6 + 'ms'
);
});
next();
}
)
.get({
'/': function(req, res) {
res.send('Hello World!');
},
'/echo/:msg': function(req, res) {
res.send(req.params.msg);
},
'/view/:view': function(req, res) {
res.render(req.params.view, {
view: req.params.view
});
// /view/foo => render /views/foo.ejs
},
'/ping': function(req, res) {
res.long();
(function loop(arr) {
if (arr.length > 0) {
res.send(arr.shift());
setTimeout(function() {
loop(arr);
}, 500);
} else {
res.end();
}
})(['p', 'o', 'n', 'g', '!']);
},
'/get/:key': function(req, res) {
web.meta('redisClient').get(req.params.key, function(err, value) {
if (err) {
return res.sendError(err);
}
value = value || 'no such key';
res.send(value);
});
}
})
.put('/set/:key', function(req, res) {
web.meta('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
if (err) {
return res.sendError(err);
}
res.send('OK');
});
})
.post({
'/incr/:key': function(req, res) {
web.meta('redisClient').incr(req.params.key, function(err, currValue) {
if (err) {
return res.sendError(err);
}
res.send(currValue);
});
},
'/append/:key': function(req, res) {
web.meta('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
if (err) {
return res.sendError(err);
}
res.send(length);
});
}
});
var web = require('webjs');
var redis = require('redis');
var client = redis.createClient();
// express style
var app = web.create();
app
.config({
'views': __dirname + '/views',
'view engine': 'ejs', // jade, etc.
'foo': 'bar',
'redisClient': client,
'readonly': false
})
.use(
// Faster Middleware
'/static', web.static(__dirname + '/assets'),
// Normal Middlewares
web.query(),
web.cookieParser('webjs'),
web.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }),
web.compiler({ enable: [ 'less' ] }),
// web.compress(),
function(req, res, next) {
// Response Pipeline
var startTime = process.hrtime();
res.on('pipelining', function() {
var diff = process.hrtime(startTime);
console.log(
'%s %s - %d %s',
req.method.toUpperCase(), req.url, res.statusCode, (diff[0] * 1e9 + diff[1]) / 1e6 + 'ms'
);
});
next();
}
)
.get({
'/': function(req, res) {
res.send('Hello World!');
},
'/echo/:msg': function(req, res) {
res.send(req.params.msg);
},
'/view/:view': function(req, res) {
res.render(req.params.view, {
view: req.params.view
});
// /view/foo => render /views/foo.ejs
},
'/ping': function(req, res) {
res.long();
(function loop(arr) {
if (arr.length > 0) {
res.send(arr.shift());
setTimeout(function() {
loop(arr);
}, 500);
} else {
res.end();
}
})(['p', 'o', 'n', 'g', '!']);
},
'/get/:key': function(req, res) {
web.meta('redisClient').get(req.params.key, function(err, value) {
if (err) {
return res.sendError(err);
}
value = value || 'no such key';
res.send(value);
});
}
})
.put('/set/:key', function(req, res) {
web.meta('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
if (err) {
return res.sendError(err);
}
res.send('OK');
});
})
.post({
'/incr/:key': function(req, res) {
web.meta('redisClient').incr(req.params.key, function(err, currValue) {
if (err) {
return res.sendError(err);
}
res.send(currValue);
});
},
'/append/:key': function(req, res) {
web.meta('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
if (err) {
return res.sendError(err);
}
res.send(length);
});
}
})
.listen(8080);
var express = require('express');
var redis = require('redis');
var getRawBody = require('raw-body')
var client = redis.createClient();
// express style
var app = express.create();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('foo', 'bar');
app.set('redisClient', client);
app.use('/static', express.static(__dirname + '/assets'));
app.use(express.query());
app.use(express.cookieParser('webjs'));
app.use(express.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }));
app.use(express.compiler({ enable: [ 'less' ] }));
app.use(express.compress());
app.use(function(req, res, next) {
getRawBody(req, {
length: req.headers['content-length'],
limit: '1mb',
encoding: 'utf8'
}, function (err, string) {
if (err)
return next(err)
req.body = string
next()
})
})
app.get('/', function(req, res) {
res.send('Hello World!');
});
app.get('/echo/:msg', function(req, res) {
res.send(req.params.msg);
});
app.get('/view/:view', function(req, res) {
res.render(req.params.view, {
view: req.params.view
});
// /view/foo => render /views/foo.ejs
});
app.get('/get/:key': function(req, res, next) {
app.get('redisClient').get(req.params.key, function(err, value) {
if (err) {
return next(err);
}
value = value || 'no such key';
res.send(value);
});
}
});
app.put('/set/:key', function(req, res, next) {
app.get('redisClient').set(req.params.key, req.body, function(err) {
if (err) {
return next(err);
}
res.send('OK');
});
});
app.post('/incr/:key', function(req, res, next) {
app.get('redisClient').incr(req.params.key, function(err, currValue) {
if (err) {
return next(err);
}
res.send(currValue);
});
})
app.post('/append/:key', function(req, res, next) {
app.get('redisClient').append(req.params.key, req.body, function(err, length) {
if (err) {
return next(err);
}
res.send(length);
});
});
app.listen(8080);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment