kaakaa Blog

この世は極楽 空にはとんぼ

Node.js(Express)でフィードアグリゲータを作り始め

今日の勉強会でNode.js(Express)でWebsocketなアプリの話を聞いたので、
シコシコ作ってたSinatra製のフィードアグリゲータ(kaakaa/INFOMATOR)をNode.js(Express)に移行してみる。

F5アタックでSinatraのフィードアグリゲータをSATSUGAIされたのも移行してみようと思ったきっかけの一つ…。
Websocket使えばサーバの負荷減って、F5アタックにも多少耐えられるようになるんじゃないかと。

kaakaa/Nodemator

まだまだ完成とは程遠いけど、Haml使うのにちょっとハマったので備忘録。


Expressでhaml使うのに、visionmedia/consolidate.jsを使ってる。
visionmedia/haml.jsを使おうとしたけど、上手く動かなかったので。

consolidateを使うための設定は下記。

var engines = require('consolidate');

app.engine('haml', engines.haml);

Express - api reference

また、下記の設定を記述するとapp.jsの中でhamlファイルを指定する時に拡張子'.haml'を省略できる。

app.set('view engine', 'haml');

実際にhamlを呼び出すには

app.get('/', function(req, res) {
    res.render('index', {
        sites: [
            {
                'url': 'http://example.com',
                'title': 'hoge'
            }
        ]
    });
});

などとする。
これで、sitesという連想配列の配列を引数にindex.hamlを呼び出すことが出来る。


すこしハマったのが、rubyhamlとは違って、hamlファイル内でタグの属性を指定する時に

%a{:href => site['url']}

という記述が使えず、

%a{href: site['url']}

としなくてはいけないところ。

前者はruby特有の記述なんだろう。