koa-lite/Readme.md

120 lines
4 KiB
Markdown
Raw Normal View History

<img src="https://dl.dropboxusercontent.com/u/6396913/koa/logo.png" alt="koa middleware framework for nodejs" width="255px" />
2014-11-30 08:03:09 +00:00
[![gitter][gitter-image]][gitter-url]
2014-07-26 06:43:41 +00:00
[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
2013-11-08 09:16:26 +00:00
2015-08-31 05:07:54 +00:00
Expressive HTTP middleware for node.js to make web applications and APIs more enjoyable to write. Koa's middleware stack flows in a stack-like manner, allowing you to perform actions downstream then filter and manipulate the response upstream. Koa's use of generators also greatly increases the readability and robustness of your application.
2013-08-17 07:15:57 +00:00
Only methods that are common to nearly all HTTP servers are integrated directly into Koa's small ~550 SLOC codebase. This
2015-08-23 15:18:54 +00:00
includes things like content negotiation, normalization of node inconsistencies, redirection, and a few others.
2013-08-17 07:15:57 +00:00
2015-08-31 05:07:54 +00:00
Koa is not bundled with any middleware.
2013-08-17 07:15:57 +00:00
## Installation
```
$ npm install koa
```
2016-01-18 00:27:23 +00:00
Koa is supported in node v4+ and node v0.12 with the `--harmony-generators` or `--harmony` flag.
## v2 Alpha
Koa v2 is currently in alpha. In this new version, the middleware function signature completely changes in favor of ES2015-2016 syntax:
2016-01-18 00:27:23 +00:00
```js
// Koa application is now a class and requires the new operator.
const app = new Koa()
2016-01-18 00:27:23 +00:00
// uses async arrow functions
app.use(async (ctx, next) => {
try {
await next() // next is now a function
} catch (err) {
ctx.body = { message: err.message }
ctx.status = err.status || 500
}
})
app.use(async ctx => {
const user = await User.getById(ctx.session.userid) // await instead of yield
2016-01-18 00:27:23 +00:00
ctx.body = user // ctx instead of this
})
```
2016-01-19 03:37:23 +00:00
To learn more about Koa v2, follow [this issue](https://github.com/koajs/koa/issues/533).
To try Koa v2, `npm install koa@next`.
2013-08-17 07:15:57 +00:00
## Community
- [API](docs/api/index.md) documentation
2014-09-08 00:42:30 +00:00
- [Badgeboard](https://koajs.github.io/badgeboard) and list of official modules
2013-12-07 23:09:09 +00:00
- [Examples](https://github.com/koajs/examples)
2013-11-12 09:43:27 +00:00
- [Middleware](https://github.com/koajs/koa/wiki) list
2013-09-17 13:48:36 +00:00
- [Wiki](https://github.com/koajs/koa/wiki)
2013-08-17 07:15:57 +00:00
- [G+ Community](https://plus.google.com/communities/101845768320796750641)
- [Reddit Community](https://www.reddit.com/r/koajs)
2013-08-17 07:15:57 +00:00
- [Mailing list](https://groups.google.com/forum/#!forum/koajs)
2013-09-03 01:25:17 +00:00
- [Guide](docs/guide.md)
2013-08-21 05:07:00 +00:00
- [FAQ](docs/faq.md)
- [中文文档](https://github.com/guo-yu/koa-guide)
- __[#koajs]__ on freenode
2013-08-17 07:15:57 +00:00
## Getting started
2014-07-26 06:43:41 +00:00
- [Kick-Off-Koa](https://github.com/koajs/kick-off-koa) - An intro to koa via a set of self-guided workshops.
- [Workshop](https://github.com/koajs/workshop) - A workshop to learn the basics of koa, Express' spiritual successor.
- [Introduction Screencast](http://knowthen.com/episode-3-koajs-quickstart-guide/) - An introduction to installing and getting started with Koa
2014-07-26 06:43:41 +00:00
2013-08-17 07:15:57 +00:00
## Example
```js
var koa = require('koa');
var app = koa();
// logger
2013-11-08 00:31:16 +00:00
app.use(function *(next){
var start = new Date;
yield next;
var ms = new Date - start;
console.log('%s %s - %s', this.method, this.url, ms);
2013-08-17 07:15:57 +00:00
});
// response
2013-11-08 00:31:16 +00:00
app.use(function *(){
this.body = 'Hello World';
2013-08-17 07:15:57 +00:00
});
app.listen(3000);
```
## Running tests
```
$ make test
```
2013-08-26 02:16:57 +00:00
## Authors
2014-11-07 08:12:10 +00:00
- [TJ Holowaychuk](https://github.com/tj)
2013-08-26 02:16:57 +00:00
- [Jonathan Ong](https://github.com/jonathanong)
2013-11-08 00:31:16 +00:00
- [Julian Gruber](https://github.com/juliangruber)
- [Yiyu He](https://github.com/dead-horse)
2013-08-26 02:16:57 +00:00
2013-08-17 07:15:57 +00:00
# License
MIT
2014-10-09 17:59:57 +00:00
[npm-image]: https://img.shields.io/npm/v/koa.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/koa
2014-10-27 16:42:01 +00:00
[travis-image]: https://img.shields.io/travis/koajs/koa/master.svg?style=flat-square
[travis-url]: https://travis-ci.org/koajs/koa
2014-10-27 16:42:01 +00:00
[coveralls-image]: https://img.shields.io/coveralls/koajs/koa/master.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/koajs/koa?branch=master
2014-11-04 16:59:11 +00:00
[gitter-image]: https://badges.gitter.im/Join%20Chat.svg
[gitter-url]: https://gitter.im/koajs/koa?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
[#koajs]: https://webchat.freenode.net/?channels=#koajs