Server Side Rendering with Vue and Express
May 5, 2019
Vue has solid support for server-side rendering in Node.js. This means that, given a Vue app, you can render the app in an Express endpoint using the renderToString
function in the server-renderer
directory.
Below is an example of rendering a Vue app using Express.
const express = require('express'); const { createSSRApp } = require('vue'); const { renderToString } = require('vue/server-renderer'); const server = express() server.get('/', (req, res) => { const app = createSSRApp({ data: () => ({ count: 1 }), template: `<button @click="count++">{{ count }}</button>` }) renderToString(app).then((html) => { res.send(` <head> <title>Vue SSR Example</title> </head> <body> <div id="app">${html}</div> </body> `) }) }) server.listen(3000, () => { console.log('ready') })
Note that the renderToString()
function returns a promise. Make sure you handle errors.
Vue School has some of our favorite Vue video courses. Their Vue.js Master Class walks you through building a real world application, and does a great job of teaching you how to integrate Vue with Firebase. Check it out!
Did you find this tutorial useful? Say thanks by starring our repo on GitHub!