Build node.js server elegantly
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
lib
test
.gitignore
.npmignore
.travis.yml
README.md
package.json

README.md

Eliter

Build Status Commitizen friendly

Eliter is a tiny node.js web server framework, providing generator-based async APIs.

Quick Start

Install

npm install eliter --save

Hello World

const Eliter = require('eliter')

let app = new Eliter()

app.route('/').get(function* () {
    this.send('text', 'hello eliter!') // `this` there is an instance of class Connection
})

// `::` stands for a URL param
app.route('/do/::', function* (act, child) {
    this.act = act
    yield* child // the last param is handler of child route
}).route('/::').get(function* (name) {
    this.send('text', `${this.act} ${name}`)
})

// /do/hello/world => "hello world"

app.start(4000)

What it looks like

Generator-based Async

const app = new Eliter()
app.route('/').get(function *() {
    const data = yield getFromModel()
    this.send('json', data)
})

Nested Router and Middleware

const app = new Eliter()

const admin = app.route('/admin', function *(child) {
    const { data: { auth }} = yield this.session()
    if (auth) {
        yield* child
    } else {
        this.send({ status: 302, headers: { Location: '/login' }})
    }
})

const profile = admin.route('/profile').get(function* () {
    const data = yield getFromModel()
    this.send('html', `<p>Hello, ${data.username}<p>`)
})

Pluginable

const app = new Eliter()

const checkAuth = conn => conn.checkAuth = function* () {
    const { data: { auth }} = yield this.session()
    return !!auth
}

app.with(checkAuth)

const admin = app.route('/admin', function *(child) {
    if (yield* this.checkAuth()) {
        yield* child
    } else {
        this.send({ status: 302, headers: { Location: '/login' }})
    }
})

Docs - FIXME

Check gh-pages