33 lines
917 B
JavaScript
33 lines
917 B
JavaScript
import React from 'react';
|
|
import ReactDOMServer from 'react-dom/server';
|
|
import { StaticRouter } from 'react-router-dom';
|
|
|
|
import MainTemplate from '../client/MainTemplate';
|
|
import MainApp from '../client/main/App';
|
|
import createHTML from '../client/utils/createHTML';
|
|
import getEntryPoints from '../utils/getEntryPoints';
|
|
import renderTemplate from '../utils/renderTemplate';
|
|
|
|
export default function serveMainPage(req, res) {
|
|
const element = React.createElement(
|
|
StaticRouter,
|
|
{ location: req.url },
|
|
React.createElement(MainApp)
|
|
);
|
|
const content = createHTML(ReactDOMServer.renderToString(element));
|
|
|
|
const entryPoints = getEntryPoints('main', {
|
|
es: 'module',
|
|
system: 'nomodule'
|
|
});
|
|
|
|
const html = renderTemplate(MainTemplate, { content, entryPoints });
|
|
|
|
res
|
|
.set({
|
|
'Cache-Control': 'public, max-age=14400', // 4 hours
|
|
'Cache-Tag': 'main'
|
|
})
|
|
.send(html);
|
|
}
|