Express ってなに

一言で言うとNode上で動くWebアプリケーションをつくるための軽量フレームワーク。 HTTP通信まわりをいい感じにやってくれるので、RoutingとかRestAPIとかを簡単に用意できるみたいです。

フロントもバックも全部JavaScriptで書けるというのがメリットなのだと思いました(個人的にはJavaが好きなので何とも)。

普段JavaなりRailsなり(JavaScript意外の言語)で用意してたサーバサイドのコントローラをJavaScriptで書けるので、そしてNode上で動かせるので、お手軽感はあった気がします(Javaで書いてローカルのTomcatを起動して動作確認するのに比べたらだいぶ楽ちんだった)。

つくったもの

つくったもののdemo

記事取得のリンクを叩くとqiitaの記事取得APIを叩いて表示する、というだけです。

実装

Routing

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/routes/index.html');
});

app.get('/get', function(req, res) {
    request
        .get('http://qiita.com/api/v2/items?page=1&per_page=20')
        .end(function(apiErr, apiRes) {
            res.render(__dirname + '/routes/itemlist', { items: apiRes.body });
        });
});

エントリーポイントとなるこのapp.jsをNode上で実行すると、localhost:3000で待ち受けてくれるようになります。

app.js内では、//getのPathに対してRoutingしています。基本的にapp.METHOD(PATH, HANDLER)でHTTPリクエストのRoutingができちゃうので感覚的です。

Template Rendering

ExpressはいくつかのTemplateエンジンに対応しているとのことで、今回は使ったことのない EJS - JavaScript Templates を試してみました。

基本の考え方は<% %>で囲んだ部分でJavaScriptが使えるということなので、そんなに難しく考えなくてもよさそう。 Quiteの記事取得APIのResponseのJSONをループで回すようにしました。

<ul>
    <% items.forEach(function(item) { %>
    <li><a href="<%= item.url %>" target="_blank"><%= item.title %></a></li>
    <% }); %>
</ul>

おわり

ソースは GitHub - aloerina01/short-code at sample-express にあげています。