Created
April 1, 2014 12:28
-
-
Save marcusoftnet/9912981 to your computer and use it in GitHub Desktop.
Blog site Koa
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Module dependencies. | |
*/ | |
var render = require('./lib/render'); | |
var logger = require('koa-logger'); | |
var route = require('koa-route'); | |
var views = require('co-views'); | |
var parse = require('co-body'); | |
var koa = require('koa'); | |
var app = koa(); | |
// "database" | |
var posts = []; | |
// middleware | |
app.use(logger()); | |
// route middleware | |
app.use(route.get('/', list)); | |
app.use(route.get('/post/new', add)); | |
app.use(route.get('/post/:id', show)); | |
app.use(route.post('/post', create)); | |
// route definitions | |
/** | |
* Post listing. | |
*/ | |
function *list() { | |
this.body = yield render('list', { posts: posts }); | |
} | |
/** | |
* Show creation form. | |
*/ | |
function *add() { | |
this.body = yield render('new'); | |
} | |
/** | |
* Show post :id. | |
*/ | |
function *show(id) { | |
var post = posts[id]; | |
if (!post) this.throw(404, 'invalid post id'); | |
this.body = yield render('show', { post: post }); | |
} | |
/** | |
* Create a post. | |
*/ | |
function *create() { | |
var post = yield parse(this); | |
var id = posts.push(post) - 1; | |
post.created_at = new Date; | |
post.id = id; | |
this.redirect('/'); | |
} | |
// listen | |
app.listen(3000); | |
console.log('listening on port 3000'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment