2014/01/07

express.jsで自作faviconを使用する。

express.js

express.js では、デフォルトでexpress.js自身が提供するfaviconを配信するよう、コードが自動生成される。具体的には、express.jsが提供するアプリケーションのひな形を生成するコマンドを、

 $ express 
のように実行すると、
  • app.js
というファイルが生成され、
:(略)

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: path.join(__dirname, 'public') }));
app.use(express.static(path.join(__dirname, 'public')));

:(略)
というコードが出力される。上記の、
express.favicon()
が、デフォルトのfaviconの使用を定義するコード。

express.favicon()

express.favicon()は、nodeアプリのためのミドルウェアで、connect というのがあって、こいつが提供する機能の1つ。詳しくは、ここにドキュメントがあった。読むと、

By default serves the connect favicon, or the favicon located by the given path.
とあるので、デフォルトだとconnectのfaviconを配信するし、パスが与えられればそいつを配信するよ、ってことだね。(同じページにソースも載っている。)

自作のfaviconを配信する。

なので、次のように自作favicon.icoへのパスをfavicon()関数に渡してあげればよさそう。

app.use(express.favicon(__dirname + '/public/images/favicon.ico', {
  maxAge: 2592000000 // キャッシュの有効期限
}));

0 件のコメント: