$ ls index/

cheatsheets

Nuxt Cheatsheet

$cat cheatsheets/nuxt.md

Auto-imports

composables/     → useXxx() auto-imported
utils/           → helper functions auto-imported
components/      → components auto-imported (PascalCase or kebab-case)
server/api/      → /api/* endpoints
server/routes/   → catch-all server routes
middleware/      → route middleware
plugins/         → Vue plugins

Data Fetching

// useFetch — SSR-friendly, component-level
const { data, status, error, refresh } = await useFetch('/api/items')

// useAsyncData — custom async logic
const { data } = await useAsyncData('key', () => $fetch('/api/items'))

// $fetch — imperative, no caching (in event handlers)
const result = await $fetch('/api/items', { method: 'POST', body: payload })

Server API Route

// server/api/items.get.ts
export default defineEventHandler(async (event) => {
  const query = getQuery(event)
  return { items: [] }
})

Route Middleware

// middleware/auth.ts
export default defineNuxtRouteMiddleware((to) => {
  const { loggedIn } = useAuth()
  if (!loggedIn.value) return navigateTo('/login')
})

Runtime Config

// nuxt.config.ts
runtimeConfig: {
  apiSecret: '',          // server-only
  public: {
    apiBase: '/api',      // exposed to client
  }
}

// usage
const config = useRuntimeConfig()
config.public.apiBase

Key nuxt.config.ts Options

export default defineNuxtConfig({
  modules: ['@nuxtjs/tailwindcss', '@pinia/nuxt'],
  ssr: true,
  routeRules: {
    '/admin/**': { ssr: false },
    '/api/**': { cors: true },
  },
  experimental: {
    typedPages: true,
  },
})

Let's build something impactful together.

ertughaskan@gmail.com Find me online
Availability
WorkAvailable
RelocationOpen
FreelanceClosed
© 2026 Ertugrul Alex Haskan /cookiesVancouver, BC 🇨🇦

This site uses one optional Google Analytics cookie to see which pages get read. Nothing is set until you choose — cookie details.