├── .gitignore ├── vue-ssr-1 ├── package.json ├── render-vue-app.js └── server.js ├── vue-ssr-2 ├── index.template.html ├── package.json ├── render-vue-app.js └── server.js ├── vue-ssr-3 ├── package.json ├── render-vue-app.js ├── server.js └── src │ ├── app.js │ └── index.template.html ├── vue-ssr-4 ├── build │ ├── vue-loader.config.js │ ├── webpack.base.config.js │ ├── webpack.client.config.js │ └── webpack.server.config.js ├── dist │ ├── app.1b581a83e10a60dc66e9.js │ ├── app.1b581a83e10a60dc66e9.js.map │ ├── app.96af4d5258d43d16dc20.js │ ├── app.96af4d5258d43d16dc20.js.map │ ├── app.e58ef690df1810e3a94a.js │ ├── app.e58ef690df1810e3a94a.js.map │ ├── app.ec69dd591d71bcf6f0f5.js │ ├── app.ec69dd591d71bcf6f0f5.js.map │ ├── manifest.54e67e9f17df71efc259.js │ ├── manifest.54e67e9f17df71efc259.js.map │ ├── vendor.4cb94b73d4795b4d9999.js │ ├── vendor.4cb94b73d4795b4d9999.js.map │ ├── vue-ssr-client-manifest.json │ └── vue-ssr-server-bundle.json ├── package-lock.json ├── package.json ├── render-vue-app.js ├── server.js └── src │ ├── App.vue │ ├── app.js │ ├── entry-client.js │ ├── entry-server.js │ └── index.template.html ├── vue-ssr-5 ├── build │ ├── setup-dev-server.js │ ├── vue-loader.config.js │ ├── webpack.base.config.js │ ├── webpack.client.config.js │ └── webpack.server.config.js ├── dist │ ├── app.04aafe95e9e39db0bd8f.js │ ├── app.04aafe95e9e39db0bd8f.js.map │ ├── manifest.54e67e9f17df71efc259.js │ ├── manifest.54e67e9f17df71efc259.js.map │ ├── vendor.d979c5f5d5c24fc2dec9.js │ ├── vendor.d979c5f5d5c24fc2dec9.js.map │ ├── vue-ssr-client-manifest.json │ └── vue-ssr-server-bundle.json ├── package-lock.json ├── package.json ├── server.js └── src │ ├── App.vue │ ├── app.js │ ├── entry-client.js │ ├── entry-server.js │ ├── index.template.html │ ├── pages │ ├── about.vue │ └── index.vue │ ├── router │ └── index.js │ └── store │ └── index.js ├── vue-ssr-6 ├── build │ ├── setup-dev-server.js │ ├── vue-loader.config.js │ ├── webpack.base.config.js │ ├── webpack.client.config.js │ └── webpack.server.config.js ├── dist │ ├── app.04aafe95e9e39db0bd8f.js │ ├── app.04aafe95e9e39db0bd8f.js.map │ ├── manifest.54e67e9f17df71efc259.js │ ├── manifest.54e67e9f17df71efc259.js.map │ ├── vendor.d979c5f5d5c24fc2dec9.js │ ├── vendor.d979c5f5d5c24fc2dec9.js.map │ ├── vue-ssr-client-manifest.json │ └── vue-ssr-server-bundle.json ├── package-lock.json ├── package.json ├── server.js └── src │ ├── App.vue │ ├── app.js │ ├── entry-client.js │ ├── entry-server.js │ ├── index.template.html │ ├── pages │ ├── about.vue │ └── index.vue │ ├── router │ └── index.js │ └── store │ └── index.js ├── vue-ssr-amsterdam.key └── vue-ssr-nuxt ├── .nuxt ├── App.js ├── client.js ├── components │ ├── no-ssr.js │ ├── nuxt-child.js │ ├── nuxt-error.vue │ ├── nuxt-link.js │ ├── nuxt-loading.vue │ └── nuxt.js ├── empty.js ├── index.js ├── layouts │ └── default.vue ├── loading.html ├── middleware.js ├── router.js ├── server.js ├── store.js ├── utils.js └── views │ ├── app.template.html │ └── error.html ├── package-lock.json ├── package.json ├── pages ├── about.vue └── index.vue └── store └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /vue-ssr-1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-ssr", 3 | "version": "1.0.0", 4 | "description": "Vue.js & Vue-Server-Renderer", 5 | "scripts": { 6 | "dev": "node server.js" 7 | }, 8 | "dependencies": { 9 | "express": "^4.16.2", 10 | "vue": "^2.5.13", 11 | "vue-server-renderer": "^2.5.13" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vue-ssr-1/render-vue-app.js: -------------------------------------------------------------------------------- 1 | const Vue = require('vue') 2 | const renderer = require('vue-server-renderer').createRenderer() 3 | 4 | module.exports = async (req, res) => { 5 | const app = new Vue({ 6 | data: { 7 | url: req.url 8 | }, 9 | template: `
The visited URL is: {{ url }}
` 10 | }) 11 | 12 | try { 13 | const appHtml = await renderer.renderToString(app) 14 | 15 | res.send(` 16 | 17 | 18 |The visited URL is: {{ url }}
` 12 | }) 13 | 14 | try { 15 | const html = await renderer.renderToString(app) 16 | 17 | res.send(html) 18 | } catch (err) { 19 | res.status(500).end(err.message) 20 | } 21 | } -------------------------------------------------------------------------------- /vue-ssr-2/server.js: -------------------------------------------------------------------------------- 1 | const server = require('express')() 2 | const renderVueApp = require('./render-vue-app') 3 | 4 | server.get('*', renderVueApp) 5 | 6 | server.listen(3000) 7 | console.log('Server listening on http://localhost:3000') -------------------------------------------------------------------------------- /vue-ssr-3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-ssr", 3 | "version": "1.0.0", 4 | "description": "Vue.js & Vue-Server-Renderer", 5 | "scripts": { 6 | "dev": "node server.js" 7 | }, 8 | "dependencies": { 9 | "express": "^4.16.2", 10 | "vue": "^2.5.13", 11 | "vue-server-renderer": "^2.5.13" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vue-ssr-3/render-vue-app.js: -------------------------------------------------------------------------------- 1 | const renderer = require('vue-server-renderer').createRenderer({ 2 | template: require('fs').readFileSync('./src/index.template.html', 'utf-8') 3 | }) 4 | const createApp = require('./src/app') 5 | 6 | module.exports = async (req, res) => { 7 | try { 8 | const context = { url: req.url } 9 | const app = createApp(context) 10 | const html = await renderer.renderToString(app) 11 | 12 | res.send(html) 13 | } catch (err) { 14 | res.status(500).end(err.message) 15 | } 16 | } -------------------------------------------------------------------------------- /vue-ssr-3/server.js: -------------------------------------------------------------------------------- 1 | const server = require('express')() 2 | const renderVueApp = require('./render-vue-app') 3 | 4 | server.get('*', renderVueApp) 5 | 6 | server.listen(3000) 7 | console.log('Server listening on http://localhost:3000') -------------------------------------------------------------------------------- /vue-ssr-3/src/app.js: -------------------------------------------------------------------------------- 1 | const Vue = require('vue') 2 | 3 | module.exports = (context) => { 4 | const app = new Vue({ 5 | data: { 6 | url: context.url 7 | }, 8 | template: `The visited URL is: {{ url }}
10 | 11 |The visited URL is: {{ url }}
\n\t\t\n\tThe visited URL is: {{ url }}
\n\t\t\n\tThe visited URL is: {{ url }}
\n\t\t\n\tThe visited URL is: {{ url }}
\n\t\t\n\tThe visited URL is: {{ url }}
4 | 5 |The visited URL is: {{ url }}
\n\t\t\n\t\tThe visited URL is: {{ url }}
\n\t\t\n\t\tThe visited URL is: {{ url }}
4 | 5 |
8 |
An error occurred while rendering the page. Check developer tools console for details.
12 | 13 | 14 |Counter: {{ $store.state.counter }}
5 |
6 |The visited URL is: {{ url }}
4 | 5 |