-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathserver.coffee
41 lines (31 loc) · 1.06 KB
/
server.coffee
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
40
41
# ## Entry for server-side
express = require 'express'
colors = require 'colors'
ejs = require 'ejs'
React = require 'react'
fs = require 'fs'
app = express()
{ routes, fetchDataFromRoute, makeHandler, createStore } = require './App'
base_html = fs.readFileSync './__dist__/base.html', 'utf-8'
Router = require 'react-router'
app.use '/api', require './api'
app.use (req, res, next) ->
router = Router.create
location: req.url
routes: routes
store = createStore()
router.run (Handler, state) ->
# Resolve all the promises....
fetchDataFromRoute(state, store).then ->
# ...then render the route.
initialState = store.getState()
handler = makeHandler Handler, store
html = React.renderToString handler
res.send ejs.render base_html,
react: html
metas: []
state: JSON.stringify initialState
# Like that, all the data is loaded before the handlers of the route
# are rendered.
app.listen 8000, ->
console.log "\nYour app is now running on port 8000\n".green.underline