Skip to content

Commit 03c0ef6

Browse files
committed
Refactor imports to use destructuring
1 parent 73c422a commit 03c0ef6

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

src/routes.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export const reactUrl = '/react.js';
22
export const reactDomUrl = '/react-dom.js';
3+
export const faviconUrl = 'data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3qoEAd6r/AHeqgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3qoEAd6r/AHeqgQAAAAAAAAAAAAAAAAAAAAAAeaz/AMz//wCj1v8Aeaz/AHmsQAAAAAAAAAAAAHmsQAB5rP8Ao9b/AMz//wB5rP8AAAAAAAAAAAAAAAAAAAAAAHyv/wi66/8Lz///CLrr/wB8r/8AfK+/AHyvvwB8r/8Iuuv/C8///wi66/8AfK//AAAAAAAAAAAAAAAAAAAAAAB/soEOqdn/G9L//xvS//8b0v//FL3s/xS97P8b0v//G9L//xvS//8Oqdn/AH+ygQAAAAAAAAAAAAAAAAAAAAAAgrVAAIK1/y3W//8t1v//Ldb//y3W//8t1v//Ldb//y3W//8t1v//AIK1/wCCtUAAAAAAAAAAAAAAAAAAAAAAAAAAAACGuf8xxu3/Qdv//0Hb//9B2///Qdv//0Hb//9B2///Mcbt/wCGuf8AAAAAAAAAAAAAAAAAAAAAAAAAAACKvUAAir3/Qsru/1jg//9Y4P//WOD//1jg//9Y4P//WOD//0LK7v8Air3/AIq9QAAAAAAAAAAAAAAAAACOwUAAjsH/U8/v/2/l//9v5f//b+X//2/l//9v5f//b+X//2/l//9v5f//U8/v/wCOwf8AjsFAAAAAAACTxoEAk8b/ZNXx/4Xr//+F6///hev//4Xr//+F6///hev//4Xr//+F6///hev//4Xr//9k1fH/AJPG/wCTxoEAl8r/3f///734//+c8P//nPD//5zw//+c8P//nPD//5zw//+c8P//nPD//5zw//+c8P//vfj//93///8Al8r/AJvOgQCbzv8Am87/AJvO/wCbzv9YyOf/sPX//7D1//+w9f//sPX//1jI5/8Am87/AJvO/wCbzv8Am87/AJvOgQAAAAAAAAAAAAAAAAAAAAAAAAAAAJ/S/8L5///C+f//wvn//8L5//8An9L/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACi1YFpz+r/0vz//9L8//9pz+r/AKLVgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKXY/93////d////AKXY/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACo24Fv1O3/b9Tt/wCo24EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKrd/wCq3f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx+MAAMPDAADAAwAAwAMAAOAHAADgBwAA4AcAAMADAAAAAAAAAAAAAAAAAAD4HwAA+B8AAPw/AAD8PwAA/n8AAA==';
34
export const stylesUrl = '/style.css';
45
export const bundleUrl = '/bundle.js';
56
export const propsUrl = '/app-props.json';

src/server.tsx

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,67 @@
1-
console.log('Server booting...');
2-
import * as http from 'http';
1+
import { createServer } from 'http';
32
import * as React from 'react';
4-
import * as ReactDOMServer from 'react-dom/server';
3+
import { renderToString } from 'react-dom/server';
54
import * as fs from 'fs';
65
import AppComponent from './components/app';
76
import { getItems } from './db';
8-
import * as routes from './routes';
9-
10-
const NewApp = React.createFactory(AppComponent);
11-
const PORT = 3007;
7+
import { faviconUrl, stylesUrl, reactUrl, reactDomUrl, bundleUrl, propsUrl, containerId } from './routes';
128

9+
console.log('Server booting...');
1310
const isProd = process.env.NODE_ENV === 'production';
1411
console.log('Production optimization enabled? ', isProd);
12+
const App = React.createFactory(AppComponent);
13+
const PORT = 3007;
1514
const suffix = isProd ? '.production.min.js' : '.development.js';
1615

17-
http.createServer((req, res) => {
16+
createServer((req, res) => {
1817
console.log(`${req.httpVersion} ${req.method} ${req.url}`);
1918
if (req.url === '/') {
20-
const items = getItems();
21-
const props = {items: items};
22-
const reactHtml = ReactDOMServer.renderToString(NewApp(props));
19+
const props: AppProps = { items: getItems() };
20+
const reactHtml = renderToString(App(props));
2321
const pageHtml = `<!DOCTYPE html>
2422
<html>
2523
<head>
2624
<meta charset="utf-8" />
2725
<meta name="viewport" content="width=device-width, initial-scale=1.0">
28-
<link href="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3qoEAd6r/AHeqgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3qoEAd6r/AHeqgQAAAAAAAAAAAAAAAAAAAAAAeaz/AMz//wCj1v8Aeaz/AHmsQAAAAAAAAAAAAHmsQAB5rP8Ao9b/AMz//wB5rP8AAAAAAAAAAAAAAAAAAAAAAHyv/wi66/8Lz///CLrr/wB8r/8AfK+/AHyvvwB8r/8Iuuv/C8///wi66/8AfK//AAAAAAAAAAAAAAAAAAAAAAB/soEOqdn/G9L//xvS//8b0v//FL3s/xS97P8b0v//G9L//xvS//8Oqdn/AH+ygQAAAAAAAAAAAAAAAAAAAAAAgrVAAIK1/y3W//8t1v//Ldb//y3W//8t1v//Ldb//y3W//8t1v//AIK1/wCCtUAAAAAAAAAAAAAAAAAAAAAAAAAAAACGuf8xxu3/Qdv//0Hb//9B2///Qdv//0Hb//9B2///Mcbt/wCGuf8AAAAAAAAAAAAAAAAAAAAAAAAAAACKvUAAir3/Qsru/1jg//9Y4P//WOD//1jg//9Y4P//WOD//0LK7v8Air3/AIq9QAAAAAAAAAAAAAAAAACOwUAAjsH/U8/v/2/l//9v5f//b+X//2/l//9v5f//b+X//2/l//9v5f//U8/v/wCOwf8AjsFAAAAAAACTxoEAk8b/ZNXx/4Xr//+F6///hev//4Xr//+F6///hev//4Xr//+F6///hev//4Xr//9k1fH/AJPG/wCTxoEAl8r/3f///734//+c8P//nPD//5zw//+c8P//nPD//5zw//+c8P//nPD//5zw//+c8P//vfj//93///8Al8r/AJvOgQCbzv8Am87/AJvO/wCbzv9YyOf/sPX//7D1//+w9f//sPX//1jI5/8Am87/AJvO/wCbzv8Am87/AJvOgQAAAAAAAAAAAAAAAAAAAAAAAAAAAJ/S/8L5///C+f//wvn//8L5//8An9L/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACi1YFpz+r/0vz//9L8//9pz+r/AKLVgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKXY/93////d////AKXY/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACo24Fv1O3/b9Tt/wCo24EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKrd/wCq3f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx+MAAMPDAADAAwAAwAMAAOAHAADgBwAA4AcAAMADAAAAAAAAAAAAAAAAAAD4HwAA+B8AAPw/AAD8PwAA/n8AAA==" rel="icon" type="image/x-icon" />
26+
<link href="${faviconUrl}" rel="icon" type="image/x-icon" />
2927
<title>React Example</title>
30-
<link rel="stylesheet" href="${routes.stylesUrl}" />
28+
<link rel="stylesheet" href="${stylesUrl}" />
3129
</head>
3230
<body>
33-
<div id="${routes.containerId}">${reactHtml}</div>
34-
<script src="${routes.reactUrl}"></script>
35-
<script src="${routes.reactDomUrl}"></script>
36-
<script src="${routes.bundleUrl}"></script>
31+
<div id="${containerId}">${reactHtml}</div>
32+
<script src="${reactUrl}"></script>
33+
<script src="${reactDomUrl}"></script>
34+
<script src="${bundleUrl}"></script>
3735
</body>
3836
</html>`;
3937
res.setHeader('Content-Type', 'text/html');
4038
res.end(pageHtml)
41-
} else if (req.url === routes.propsUrl) {
39+
} else if (req.url === propsUrl) {
4240
const items = getItems();
4341
const props = {items: items};
4442
res.setHeader('Content-Type', 'application/json');
4543
res.end(JSON.stringify(props));
46-
} else if (req.url === routes.reactUrl) {
44+
} else if (req.url === reactUrl) {
4745
res.setHeader('Content-Type', 'text/javascript');
4846
res.setHeader('Cache-Control', 'public, max-age=86400');
4947
fs.readFile(`./node_modules/react/umd/react${suffix}`, (err, data) => {
5048
if (err) { console.error(err); }
5149
res.end(data);
5250
});
53-
} else if (req.url === routes.reactDomUrl) {
51+
} else if (req.url === reactDomUrl) {
5452
res.setHeader('Content-Type', 'text/javascript');
5553
res.setHeader('Cache-Control', 'public, max-age=86400');
5654
fs.readFile(`./node_modules/react-dom/umd/react-dom${suffix}`, (err, data) => {
5755
if (err) { console.error(err); }
5856
res.end(data);
5957
});
60-
} else if (req.url === routes.stylesUrl) {
58+
} else if (req.url === stylesUrl) {
6159
res.setHeader('Content-Type', 'text/css');
6260
fs.readFile('./src/style.css', (err, data) => {
6361
if (err) { console.error(err); }
6462
res.end(data);
6563
});
66-
} else if (req.url === routes.bundleUrl) {
64+
} else if (req.url === bundleUrl) {
6765
res.setHeader('Content-Type', 'text/javascript');
6866
fs.readFile('./dist/browser.js', (err, data) => {
6967
if (err) { console.error(err); }

0 commit comments

Comments
 (0)