Node.jsでDIできるフレームワーク「Grasshopper」が気になる

Node.jsのMVCフレームワークDependency InjectionをサポートするGrassHopperが気になってます。

以下はREADMEに記載されているDIの例です。

var gh = require('grasshopper');

var dependencies = {
    dataService: {
        getStock: function() {
            return 100;
        }
    }
};

gh.addToContext(dependencies);

gh.get('/', function() {
    this.renderText('There are ' + this.dataService.getStock() + ' units in stock!');
});

gh.serve(8080);

上記の例では this.dataService.getStock() が注入されています。この例では this.dataService.getStock() は即値で書かれている100を返しますが、外部から注入するものを切り替えれば、this.dataService.getStock()が返す値をDBから取得してくるように変えたりできます。

他にもHTTPレスポンスのGzip圧縮や、Basic認証、Digest認証、if-modified-since, if-none-match, if-range ヘッダのサポートなど多数の機能を備えているようです。

Grasshopperはnpmで以下のようにインストールできます(Node.js v0.4.1で確認)。

npm install grasshopper