How can I turn off SSR for only certain pages in Nuxt.js to use them as SPA application? How can I turn off SSR for only certain pages in Nuxt.js to use them as SPA application? vue.js vue.js

How can I turn off SSR for only certain pages in Nuxt.js to use them as SPA application?


You could do that via server middleware

export default function(req, res, next) {  const paths = ['/', '/a']  if (paths.includes(req.originalUrl)) {    // Will trigger the "traditional SPA mode"    res.spa = true  }  // Don't forget to call next in all cases!  // Otherwise, your app will be stuck forever :|  next()}

https://blog.lichter.io/posts/selectively-enable-ssr-or-spa-mode-in-a-nuxtjs-ap


Wrap the contents of the component you don't want to render server side in a <no-ssr></no-ssr> tag.

@DenisTsoi's link should give you more information on how it works.


If your Nuxt version >v2.9.0, then use <client-only> instead of <no-ssr>.

Here is an example:

<template>  <div>    <sidebar />    <client-only placeholder="Loading...">      <!-- this component will only be rendered on client-side -->      <comments />    </client-only>  </div></template>

The Loading... is used as a placeholder until the component(s) within <client-only> is mounted on client-side.

You can learn more about this here: Nuxt API - The <client-only> Component