Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mikeal/tako

Functional web framework.
https://github.com/mikeal/tako

Last synced: 28 days ago
JSON representation

Functional web framework.

Awesome Lists containing this project

README

        

# tako -- Functional web framework.

## Install


npm install tako

## Add Sockets


npm install socket.io

Or from source:


git clone git://github.com/mikeal/tako.git
cd tako
npm link

## Usage

```javascript
var tako = require('tako')
, request = require('request')
, path = require('path')
, app = tako()
;

app.route('/static/*').files(path.join(__dirname, 'static'))

app.route('/proxypass', function (req, resp) {
req.pipe(request("http://otherserver.com"+req.url).pipe(resp))
})

app.route('/hello.json').json({msg:'hello!'})

app.route('/plaintext').text('I like text/plain')

app.route('/')
.html(function (req, resp) {
request('http://me.iriscouch.com/db', {json:true}, function (e, r) {
if (e) return resp.error(e)
if (r.statusCode !== 200) return resp.error(r)
resp.end('cool'+r.body.index+'')
})
})
.methods('GET')
;

// Ported example from socket.io docs to show integration
app.sockets.on('connection', function (socket) {
app.sockets.emit('news', { will: 'be received by everyone'});
socket.on('disconnect', function () {
app.sockets.emit('user disconnected')
})
})

app.httpServer.listen(80)
app.httpsServer.listen(443)
```

### Routing multiple domains

```javascript
var tako = require('../index')
, app1 = tako()
, app2 = tako()
, default = tako()
, router = tako.router()
;

app1.route('/name').text('app1')
app2.route('/name').text('app2')
default.route('/name').text('default')

router.host('app1.localhost', app1)
router.host('app2.localhost', app2)
router.default(default)

router.httpServer.listen(80)
router.httpsServer.listen(443)
```