diff --git a/src/server.js b/src/server.js index 3b8bd07..6e87ef9 100644 --- a/src/server.js +++ b/src/server.js @@ -2,6 +2,8 @@ import express from 'express' import helmet from 'helmet' import expressStaticGzip from 'express-static-gzip' import config from '../config/config.json' +import path from 'path' +import jsonfile from 'jsonfile' import { ServerRenderer } from './utils/serverRender' import { Scanner } from './utils/scanner' @@ -29,8 +31,15 @@ app.get('/favicon.ico', (req, res) => { res.status(404).send('Not Found !!!') }) -const serverRenderer = new ServerRenderer() -app.get('*', serverRenderer.render) +let head = jsonfile.readFileSync(path.join(process.cwd(), 'config/head.json')) +if (head == null) { + head = { + "scripts": [] + } +} + +const serverRenderer = new ServerRenderer(head) +app.get('*', serverRenderer.render.bind(serverRenderer)) app.listen(port, function (error) { if (error) { diff --git a/src/utils/serverRender.js b/src/utils/serverRender.js index fbe63cd..35f8548 100644 --- a/src/utils/serverRender.js +++ b/src/utils/serverRender.js @@ -6,17 +6,18 @@ import routes from './routes' import serialize from 'serialize-javascript' import manifest from '../../public/static/manifest.json' import config from '../../config/config.json' -import head from '../../config/head.json' export class ServerRenderer { - constructor () { - console.log('ServerRenderer') + constructor (head) { + this.head = head } render (req, res, next) { + const activeRoute = routes.find((route) => matchPath(req.url, route)) || {} - + const head = this.head + const promise = activeRoute.getData ? activeRoute.getData(req.path) : Promise.resolve() @@ -28,12 +29,12 @@ export class ServerRenderer { ) - res.status(200).send(renderFullPage(markup, data)) + res.status(200).send(renderFullPage(markup, head, data)) }).catch(next) } } -function renderFullPage (html, data) { +function renderFullPage (html, head, data) { return `