node.jsの新しいフレームワークKoajsを使ってみた

気になっていた、nodejsのWebアプリケーションフレームワークのKoajsを使って、簡単なアプリケーションを作成してみた。

koajsはECMAScript6 Harmonyのgeneratorsを使って実装されているため、Expressのように悩ましいcallbackを多用せずに開発できる。

ECMAScript6 Harmonyを使うのでので node.js v0.11 以上が必要。

generator構文は function* func() {} と定義することで利用できる。
generator functionでは yield が利用できる。これを利用することで処理を同期的に扱うことができるようになる。

generatorを実行させる簡単な例。

next()をつかって、イテレーターを順番に実行していく。

koa.jsの場合も同じで、yieldがあると関数が中断され、
nextで次の関数を実行し、実行後に続きから処理を再開可能となる。

とかだと

という感じ。returnを使うよりも順番を制御しやすく、非同期な処理でも同期的に扱えるところっぽい。

これによりエラーハンドリングも

とシンプルにかける。

今回は、koajs + mongoDB を使って簡単なTODOアプリを作成した。

koa自体は最小限の実装となっており、実際に使うには様々なkoaのmiddlewearを組み合わせて使う。

今回は次のmiddlewear群を使った。

routingは

HTTPメソッドとのマッピングは

GET / -> list
GET /todo/new -> new
POST /users -> create
GET /todo/:id -> show
GET /todo/delete/:id -> remove
GET /todo/edit/:id -> edit
POST /todo/create -> create
POST /todo/update -> update

となっている。

それぞれのメソッドは

yieldを使って処理をハンドリング。

templateにはjadeを使用することにしたので

DB(MongoDB)へのアクセス部分は

staticファイルの処理は

koa アプリを動かすには、起動オプションで –harmonyをつけて起動する必要がある。

** node –harmony app.js **

触ってみて、callbackで複雑になることないので、見通しがいい。
generators function を使うことで非同期処理を同期的に記述できるのがいい感じ。

repository - koa-todo-app

Comments