Commit 8a297b43 authored by Evan You's avatar Evan You

improve comments in server.js

parent b99fcc07
...@@ -9,31 +9,30 @@ const compression = require('compression') ...@@ -9,31 +9,30 @@ const compression = require('compression')
const serialize = require('serialize-javascript') const serialize = require('serialize-javascript')
const resolve = file => path.resolve(__dirname, file) const resolve = file => path.resolve(__dirname, file)
// https://github.com/vuejs/vue/blob/next/packages/vue-server-renderer/README.md#why-use-bundlerenderer
const createBundleRenderer = require('vue-server-renderer').createBundleRenderer
const app = express() const app = express()
// setup the server renderer, depending on dev/prod environment let indexHTML // generated by html-webpack-plugin
let html, renderer let renderer // created from the webpack-generated server bundle
if (isProd) { if (isProd) {
// create server renderer and index HTML from real fs // in production: create server renderer and index HTML from real fs
const bundlePath = resolve('./dist/server-bundle.js') renderer = createRenderer(fs.readFileSync(resolve('./dist/server-bundle.js'), 'utf-8'))
renderer = createRenderer(fs.readFileSync(bundlePath, 'utf-8')) indexHTML = parseIndex(fs.readFileSync(resolve('./dist/index.html'), 'utf-8'))
html = parseIndex(fs.readFileSync(resolve('./dist/index.html'), 'utf-8'))
} else { } else {
// in development: setup the dev server with watch and hot-reload,
// and update renderer / index HTML on file change.
require('./build/setup-dev-server')(app, { require('./build/setup-dev-server')(app, {
bundleUpdated: bundle => { bundleUpdated: bundle => {
renderer = createRenderer(bundle) renderer = createRenderer(bundle)
}, },
indexUpdated: index => { indexUpdated: index => {
html = parseIndex(index) indexHTML = parseIndex(index)
} }
}) })
} }
function createRenderer (bundle) { function createRenderer (bundle) {
return createBundleRenderer(bundle, { // https://github.com/vuejs/vue/blob/next/packages/vue-server-renderer/README.md#why-use-bundlerenderer
return require('vue-server-renderer').createBundleRenderer(bundle, {
cache: require('lru-cache')({ cache: require('lru-cache')({
max: 1000, max: 1000,
maxAge: 1000 * 60 * 15 maxAge: 1000 * 60 * 15
...@@ -65,7 +64,7 @@ app.get('*', (req, res) => { ...@@ -65,7 +64,7 @@ app.get('*', (req, res) => {
const renderStream = renderer.renderToStream(context) const renderStream = renderer.renderToStream(context)
renderStream.once('data', () => { renderStream.once('data', () => {
res.write(html.head) res.write(indexHTML.head)
}) })
renderStream.on('data', chunk => { renderStream.on('data', chunk => {
...@@ -81,7 +80,7 @@ app.get('*', (req, res) => { ...@@ -81,7 +80,7 @@ app.get('*', (req, res) => {
}</script>` }</script>`
) )
} }
res.end(html.tail) res.end(indexHTML.tail)
console.log(`whole request: ${Date.now() - s}ms`) console.log(`whole request: ${Date.now() - s}ms`)
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment