choo: add server rendering

This commit is contained in:
Yoshua Wuyts
2016-05-22 02:06:46 +09:00
parent ffca94d59a
commit 4084775c8c
6 changed files with 150 additions and 5 deletions
+16
View File
@@ -0,0 +1,16 @@
const choo = require('../../')
const mainView = require('./views/main')
const app = choo()
app.router((route) => [
route('/', mainView)
])
if (module.parent) {
module.exports = app
} else {
const tree = app.start()
document.body.appendChild(tree)
}
+13
View File
@@ -0,0 +1,13 @@
{
"name": "http",
"private": true,
"main": "client.js",
"scripts": {
"start": "NODE_ENV=development node server.js"
},
"dependencies": {
"bankai": "^2.0.2",
"browserify": "^13.0.1",
"server-router": "^2.1.0"
}
}
+22
View File
@@ -0,0 +1,22 @@
const serverRouter = require('server-router')
const http = require('http')
const PORT = 8080
const client = require('./client')
const server = http.createServer(createRouter())
server.listen(PORT, () => console.log(`listening on port ${PORT}`))
function createRouter () {
const router = serverRouter('/404')
router.on('/404', (req, res) => res.end('not found'))
router.on('/', function (req, res, params) {
const html = client.toString('/', { message: 'hello server!' })
res.setHeader('Content-Type', 'text/html; charset=utf-8')
res.end(html)
})
return router
}
+10
View File
@@ -0,0 +1,10 @@
const choo = require('../../../')
module.exports = function (params, state, send) {
const message = state.message
return choo.view`
<section>
<h1>${message}</h1>
</section>
`
}