同形アプリケーションを構築しています。完全にreactで構築されています。つまり、htmlベースもreactに含まれています。
ルート html をアプリ コンポーネントとして持っています。
次のようになります。
...
var AppTemplate = React.createClass({
displayName: 'AppTemplate',
render: function() {
return (
<html>
<head lang="en">
<title>hello</title>
<link rel="stylesheet" href='/css/style.css' />
</head>
<body>
<RouteHandler {...this.props}/>
<script type='text/javascript' src='/js/bundle.js' />
</body>
</html>
);
}
});
...
module.exports = AppTemplate;
プロジェクトを webpack でビルドするときは、js/bundle.js を置き換えてハッシュを含める必要があります。
Webpack は、終了後に stats.json を配信します。しかし、ビルド時にハッシュを利用できるようにする必要があります。
機能フラグを使用して次のようなことを行うことを考えていました:
...
var AppTemplate = React.createClass({
displayName: 'AppTemplate',
render: function() {
return (
<html>
<head lang="en">
<title>hello</title>
<link rel="stylesheet" href='/css/style.css' />
</head>
<body>
<RouteHandler {...this.props}/>
<script type='text/javascript' src='/js/bundle.{__HASH__}.js' />
</body>
</html>
);
}
});
...
module.exports = AppTemplate;
理想的には、ビルドされた js に正しいハッシュ参照を挿入します。
自己参照なので、少しトリッキーです。それを行うより良い方法はありますか?webpack が終了した後にビルドされたコードを変更することは、逆効果のようです。また、クライアントが bundle.js を要求するだけで、ノード サーバーにハッシュ ファイルを提供させることも考えました。
このキャッシングの適切な解決策は何でしょうか?