-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
39 lines (33 loc) · 1.29 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
require('newrelic');
const express = require('express');
const morgan = require('morgan');
const path = require('path');
const app = express();
const port = 3000;
app.use(morgan('dev'));
// app.use('/listings/:id', express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
const clientBundles = './public/services';
const serverBundles = './templates/services';
const serviceConfig = require('./service-config.json');
const services = require('./loader.js')(clientBundles, serverBundles, serviceConfig);
const React = require('react');
const ReactDom = require('react-dom/server');
const Layout = require('./templates/layout');
const App = require('./templates/app');
const Scripts = require('./templates/scripts');
const renderComponents = (components, props = {}) => {
return Object.keys(components).map(item => {
let component = React.createElement(components[item], props);
return ReactDom.renderToString(component);
});
}
app.get('/listings/:id', function(req, res){
let components = renderComponents(services, {itemid: req.params.id});
res.end(Layout(
'SDC Demo',
App(...components),
Scripts(Object.keys(services))
));
});
app.listen(port, () => console.log(`server running at: http://localhost:${port}`));