基礎入門
PerformanceBuild Tool

靜態資源

Nuxt 提供了兩個目錄來管理靜態資源:public/ 與 assets/。了解它們的差異對於優化網站效能至關重要。

核心概念

簡單來說:如果你希望檔案被 Vite 處理(壓縮、雜湊命名、轉譯),請放在 assets/。 如果你希望檔案保持原樣(如 robots.txt),請放在 public/

public/

  • 直接映射到網站根目錄 (/)
  • 不經過編譯或壓縮
  • 適合 robots.txt, favicon.ico, CNAME

assets/

  • 由 Vite 處理 (Build Pipeline)
  • 支援 CSS Pre-processors (Sass, Tailwind)
  • 自動雜湊命名 (Cache Busting)

Public 目錄

放在這裡的檔案可以透過 /filename 直接存取。

File System
public/robots.txt
Browser URL
https://site.com/robots.txt

Assets 目錄

這裡的檔案需要透過 ~/assets/ 路徑引用。 Vite 會將其轉換為帶有 Hash 的檔名,以利於瀏覽器快取。

Vite Processing
assets/logo.png
_nuxt/logo.a1b2c3.png
<template>
  <!-- 引用 assets 目錄下的圖片 -->
  <img src="~/assets/img/logo.png" alt="Logo" />
  
  <!-- 在 CSS 中引用 -->
  <div class="bg-[url('~/assets/bg.jpg')]"></div>
</template>

圖片優化

建議使用 Nuxt Image 模組。 它可以自動調整大小、轉換格式 (WebP/Avif) 並支援 Lazy Loading,大幅提升 Core Web Vitals 分數。

Original (Standard <img>)

FormatJPEG
Size2.5 MB
LoadingEager (Blocks Render)

Optimized (<NuxtImg>)

FormatWebP
Size150 KB (-94%)
LoadingLazy (On Viewport)
<template>
  <NuxtImg 
    src="/photo.jpg" 
    width="500" 
    format="webp" 
    loading="lazy" 
    placeholder
  />
</template>