Implementing Server-Side Rendering and Static Site Generation with Nuxt 3

Guidelines for using Nuxt 3 to enhance SEO and initial load times through server-side rendering and static site generation in Vue applications.

0 likes
11 views

Rule Content

{
  "title": "Implementing Server-Side Rendering and Static Site Generation with Nuxt 3",
  "description": "Guidelines for using Nuxt 3 to enhance SEO and initial load times through server-side rendering and static site generation in Vue applications.",
  "category": "Vue Cursor Rules",
  "rules": [
    {
      "id": "nuxt3-ssr-ssg-configuration",
      "description": "Ensure Nuxt 3 applications are configured for Server-Side Rendering (SSR) or Static Site Generation (SSG) to improve SEO and initial load times.",
      "severity": "error",
      "condition": {
        "anyOf": [
          {
            "property": "nuxt.config.ts",
            "contains": "ssr: true"
          },
          {
            "property": "nuxt.config.ts",
            "contains": "ssr: false"
          }
        ]
      },
      "actions": [
        {
          "type": "add",
          "property": "nuxt.config.ts",
          "value": "export default defineNuxtConfig({ ssr: true })"
        }
      ]
    },
    {
      "id": "nuxt3-prerender-routes",
      "description": "Define routes for pre-rendering in Nuxt 3 to generate static pages at build time.",
      "severity": "warning",
      "condition": {
        "property": "nuxt.config.ts",
        "notContains": "prerender: { routes:"
      },
      "actions": [
        {
          "type": "add",
          "property": "nuxt.config.ts",
          "value": "export default defineNuxtConfig({ nitro: { prerender: { routes: ['/'] } } })"
        }
      ]
    },
    {
      "id": "nuxt3-async-data-fetching",
      "description": "Use asyncData method in Nuxt 3 for fetching data during server-side rendering to ensure content is available at build time.",
      "severity": "error",
      "condition": {
        "property": "*.vue",
        "notContains": "asyncData"
      },
      "actions": [
        {
          "type": "add",
          "property": "*.vue",
          "value": "export default { async asyncData({ $axios }) { const data = await $axios.$get('https://api.example.com/data'); return { data }; } }"
        }
      ]
    },
    {
      "id": "nuxt3-lazy-loading-components",
      "description": "Implement lazy loading for non-critical components in Nuxt 3 to improve initial load times.",
      "severity": "warning",
      "condition": {
        "property": "*.vue",
        "notContains": "Lazy"
      },
      "actions": [
        {
          "type": "add",
          "property": "*.vue",
          "value": "export default { components: { LazyComponent: () => import('@/components/LazyComponent.vue') } }"
        }
      ]
    },
    {
      "id": "nuxt3-image-optimization",
      "description": "Use Nuxt Image module for optimized image handling to enhance performance in Nuxt 3 applications.",
      "severity": "warning",
      "condition": {
        "property": "nuxt.config.ts",
        "notContains": "modules: ['@nuxt/image']"
      },
      "actions": [
        {
          "type": "add",
          "property": "nuxt.config.ts",
          "value": "export default defineNuxtConfig({ modules: ['@nuxt/image'] })"
        }
      ]
    }
  ]
}