以前の記事で紹介した、 connect-cache-manifestですが、 実は自分でちゃんと使ったことがありませんでした。
今回、一通り動くところまで使ってみたので、参考までに紹介します。 Expressと Jadeを使う前提です。
多くの場合、ディレクトリの構造は次のようになるのではないでしょうか。
|-- app.js
|-- public
| |-- js
| | |-- foo.js
| | |-- bar.js
| |-- css
| | |-- foo.css
| | |-- bar.css
| |-- images
| |-- foo.png
| |-- bar.png
|-- views
|-- xxx.jade
|-- yyy.jade
このような場合での、connect-cache-manifestの設定は次のようになります。
var express = require('express');
var cacheManifest = require('connect-cache-manifest');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(cacheManifest({
manifestPath: '/application.manifest',
files: [{
dir: __dirname + '/public',
prefix: '/static/'
}, {
file: __dirname + '/views/xxx.jade',
path: '/html/xxx.html'
}, {
file: __dirname + '/views/yyy.jade',
path: '/html/yyy.html'
}],
networks: ['*'],
fallbacks: []
}));
app.use('/static', express.static(path.join(__dirname, 'public')));
app.get('/html/:name', function(req, res) {
res.render(req.params.name);
});
これで、/application.manifestが生成されるようになります。 使ってみて不満が二つありました。一つは、emacsやvimで*~のバックアップファイルができた場合にそれもマニフェストに入ってしまうこと、もう一つは、jadeファイルが複数ある場合にリストアップしなければならないことです。そのうち気が向いたら改良しようかな。
これで、HTML5のマニフェストを使いつつ、ほとんど気にせずに普通にコーディングができます。
そうそう、ついでにもう一つ。ファイルを新規に追加したときは、nodeを再起動しないといけません。これは、node-supervisorやnodemonを使えば解決できるかもしれません。試していませんが。
コメント