Bird
Raised Fist0
Vueframework~30 mins

Static site generation with Nuxt in Vue - Mini Project: Build & Apply

Choose your learning style10 modes available
Static Site Generation with Nuxt
📖 Scenario: You are building a simple static website for a local bakery. The site will show a list of bakery items with their names and prices. You want to use Nuxt's static site generation feature to pre-render the pages for fast loading and SEO benefits.
🎯 Goal: Create a Nuxt app that statically generates a page listing bakery items with their names and prices.
📋 What You'll Learn
Create a data array of bakery items with exact names and prices
Add a configuration variable for currency symbol
Use Nuxt's asyncData to load the bakery items
Render the list of bakery items with their prices and currency symbol in the template
💡 Why This Matters
🌍 Real World
Static site generation is used to create fast, SEO-friendly websites that do not require a server to render pages on each request. This is common for blogs, portfolios, and small business sites like bakeries.
💼 Career
Understanding static site generation with Nuxt is valuable for frontend developers working with Vue.js frameworks, enabling them to build performant and accessible websites.
Progress0 / 4 steps
1
Create bakery items data array
Create a constant array called bakeryItems with these exact objects: { name: 'Croissant', price: 2.5 }, { name: 'Baguette', price: 3.0 }, and { name: 'Eclair', price: 4.0 }.
Vue
Hint

Use const bakeryItems = [ ... ] with objects inside the array.

2
Add currency symbol configuration
Add a constant called currencySymbol and set it to the string '€'.
Vue
Hint

Use const currencySymbol = '€' to set the currency symbol.

3
Use asyncData to load bakery items
Inside the default export of your Nuxt page component, add an asyncData method that returns an object with items set to the bakeryItems array.
Vue
Hint

Define async asyncData() that returns { items: bakeryItems }.

4
Render bakery items list with prices
In the template section of your Nuxt page, add a <ul> that uses v-for to loop over items. For each item, display the name and the price prefixed by currencySymbol. Use :key with item.name for list rendering.
Vue
Hint

Use <ul> with <li v-for="item in items" :key="item.name"> and show name and price with currencySymbol.

Practice

(1/5)
1. What does static site generation (SSG) in Nuxt do before users visit the site?
easy
A. Requires a server to render pages on demand
B. Generates pages dynamically on each user request
C. Builds all pages ahead of time as static files
D. Only builds the homepage statically

Solution

  1. Step 1: Understand static site generation concept

    Static site generation means creating all pages before users visit, so they are ready as static files.
  2. Step 2: Apply to Nuxt behavior

    Nuxt with static target builds all pages ahead, not on demand or partially.
  3. Final Answer:

    Builds all pages ahead of time as static files -> Option C
  4. Quick Check:

    SSG = Pre-build pages [OK]
Hint: SSG means pre-building pages before user visits [OK]
Common Mistakes:
  • Confusing static generation with server-side rendering
  • Thinking pages build on each request
  • Assuming only homepage is static
2. Which Nuxt configuration option enables static site generation?
easy
A. target: 'static'
B. mode: 'universal'
C. ssr: false
D. buildModules: ['@nuxt/static']

Solution

  1. Step 1: Identify Nuxt config for static generation

    Nuxt uses target: 'static' to enable static site generation.
  2. Step 2: Check other options

    ssr: false disables server-side rendering but does not enable static generation; mode is deprecated; buildModules with '@nuxt/static' is invalid.
  3. Final Answer:

    target: 'static' -> Option A
  4. Quick Check:

    Static target = 'static' [OK]
Hint: Look for target set to 'static' in config [OK]
Common Mistakes:
  • Using ssr: false instead of target: 'static'
  • Confusing mode with target
  • Assuming buildModules enables static
3. Given this Nuxt config snippet, what will be the output folder after running nuxt generate?
export default {
  target: 'static',
  generate: {
    dir: 'public'
  }
}
medium
A. A folder named 'build' will be created
B. A folder named 'dist' will be created
C. No folder will be created automatically
D. A folder named 'public' will be created

Solution

  1. Step 1: Understand generate.dir option

    The generate.dir option sets the output folder for static files.
  2. Step 2: Apply config values

    Since dir: 'public' is set, the static files will be generated inside a folder named 'public'.
  3. Final Answer:

    A folder named 'public' will be created -> Option D
  4. Quick Check:

    generate.dir = output folder [OK]
Hint: generate.dir sets output folder name [OK]
Common Mistakes:
  • Assuming default 'dist' folder is always used
  • Confusing generate.dir with buildDir
  • Thinking no folder is created
4. You run nuxt generate but your dynamic routes are missing from the static site. What is the likely cause?
medium
A. You forgot to add the dynamic routes in generate.routes
B. You set target to 'server' instead of 'static'
C. You did not install the Nitro preset
D. You used ssr: false in config

Solution

  1. Step 1: Understand dynamic routes in static generation

    Nuxt needs explicit dynamic routes listed in generate.routes to pre-build them.
  2. Step 2: Check other options

    target: 'server' disables static generation but does not explain missing dynamic routes if static is used; Nitro preset is internal; ssr: false disables SSR but not related to dynamic routes generation.
  3. Final Answer:

    You forgot to add the dynamic routes in generate.routes -> Option A
  4. Quick Check:

    Dynamic routes need generate.routes [OK]
Hint: Add dynamic routes in generate.routes to include them [OK]
Common Mistakes:
  • Assuming dynamic routes are auto-detected
  • Confusing ssr: false with static target
  • Thinking Nitro preset fixes missing routes
5. You want to build a blog with Nuxt static generation. Your posts are fetched from an API at build time. Which approach correctly generates static pages for each post?
hard
A. Fetch posts only on client side with mounted() and rely on client rendering
B. Use asyncData to fetch posts and list them, then add dynamic routes in generate.routes to pre-build each post page
C. Set ssr: false and generate pages dynamically on server
D. Use fetch() in components without configuring generate.routes

Solution

  1. Step 1: Fetch posts at build time

    Using asyncData fetches posts during build, enabling static generation.
  2. Step 2: Configure dynamic routes for posts

    Adding post URLs in generate.routes tells Nuxt to pre-build each post page as static HTML.
  3. Step 3: Evaluate other options

    Client-side fetching delays content and is not static; ssr: false disables server rendering; fetch() without generate.routes won't pre-build dynamic pages.
  4. Final Answer:

    Use asyncData and generate.routes to pre-build each post page -> Option B
  5. Quick Check:

    asyncData + generate.routes = static dynamic pages [OK]
Hint: Use asyncData and generate.routes for static dynamic pages [OK]
Common Mistakes:
  • Fetching posts only on client side
  • Not adding dynamic routes in generate.routes
  • Disabling SSR with ssr: false
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard