Я создаю изоморфное приложение. Он полностью построен с помощью реакции, а именно, база html также находится в реакции.
У меня есть корневой 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;
Когда я создаю проект с помощью веб-пакета, мне нужно заменить 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.
Это немного сложно, так как это самоссылка. Есть ли лучший способ сделать это? Изменение встроенного кода после завершения работы веб-пакета кажется контрпродуктивным. Я также подумал о том, чтобы клиент просто запрашивал bundle.js, но чтобы мой сервер узла обслуживал хешированный файл.
Что было бы правильным решением для этого кэширования?