Node.js + Express を試してみた
Express ってなに
一言で言うとNode上で動くWebアプリケーションをつくるための軽量フレームワーク。
HTTP通信まわりをいい感じにやってくれるので、Routing
とかRestAPI
とかを簡単に用意できるみたいです。
フロントもバックも全部JavaScriptで書けるというのがメリットなのだと思いました(個人的にはJavaが好きなので何とも)。
普段JavaなりRailsなり(JavaScript意外の言語)で用意してたサーバサイドのコントローラをJavaScriptで書けるので、そしてNode上で動かせるので、お手軽感はあった気がします(Javaで書いてローカルのTomcatを起動して動作確認するのに比べたらだいぶ楽ちんだった)。
つくったもの
記事取得のリンクを叩くと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 にあげています。