35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
import React from 'react';
|
|
import { renderToString } from 'react-dom/server';
|
|
|
|
import MainTemplate from '../client/MainTemplate';
|
|
import MainApp from '../client/main/App';
|
|
import createHTML from '../client/utils/createHTML';
|
|
import getScripts from '../utils/getScripts';
|
|
import renderTemplate from '../utils/renderTemplate';
|
|
|
|
const globalURLs =
|
|
process.env.NODE_ENV === 'production'
|
|
? {
|
|
'@emotion/core': '/@emotion/core@10.0.6/dist/core.umd.min.js',
|
|
react: '/react@16.7.0/umd/react.production.min.js',
|
|
'react-dom': '/react-dom@16.7.0/umd/react-dom.production.min.js'
|
|
}
|
|
: {
|
|
'@emotion/core': '/@emotion/core@10.0.6/dist/core.umd.min.js',
|
|
react: '/react@16.7.0/umd/react.development.js',
|
|
'react-dom': '/react-dom@16.7.0/umd/react-dom.development.js'
|
|
};
|
|
|
|
export default function serveMainPage(req, res) {
|
|
const content = createHTML(renderToString(React.createElement(MainApp)));
|
|
const scripts = getScripts('main', globalURLs);
|
|
const html = renderTemplate(MainTemplate, { content, scripts });
|
|
|
|
res
|
|
.set({
|
|
'Cache-Control': 'no-cache, no-store, must-revalidate', // do not cache
|
|
'Cache-Tag': 'main'
|
|
})
|
|
.send(html);
|
|
}
|