35
Re:Nuxt 100 天練習曲
Day 35

網站的公共儲藏室 (public/)

Day 35·靜態資源·public vs assets

1. `public/` 的核心原則

public/ 就像是一個完全對外開放的儲藏室。您把什麼東西、用什麼名字放進去,外界就可以用完全一樣的名字和路徑來拿取它。

它有兩個關鍵特性:

1

原封不動 (Untouched)

Nuxt 的建置過程完全不會去碰觸或修改這裡面的任何檔案。沒有壓縮、沒有優化、沒有改名。

2

根目錄對應 (Root Mapping)

這個資料夾裡的檔案會被直接放在您網站的根目錄 (/) 下。例如,public/robots.txt 的訪問網址就是 https://your-site.com/robots.txt

2. 什麼東西最適合放這裡?

根據上述特性,最適合放在 public/ 資料夾的,就是那些檔名和路徑必須固定,且不需要被建置工具處理的檔案。

常見的例子有:

🤖

robots.txt

給搜尋引擎爬蟲看的規則檔案,檔名和位置必須固定。

🖼️

favicon.ico

網站的圖示,瀏覽器會習慣性地從根目錄尋找它。

og-image.png

當您在社群媒體(如 Facebook, Line)分享連結時,預設顯示的預覽圖。它的網址也需要是固定的,方便社群平台抓取。

📄

其他靜態檔案

任何您不希望被 Nuxt 加工,且需要有固定網址的檔案,例如 sitemap.xml 或是一些可供下載的 PDF 文件。

3. 重點複習:`public/` vs. `assets/`

讓我們再次鞏固這兩個重要資料夾的區別:

public/ (今天學的)

🏪 公共倉庫

原則:放進去,不改變。

用途:適合檔名和路徑必須固定的檔案。

assets/ (Day 5 學的)

🏭 智慧加工廠

原則:放進去,會優化。

用途:適合您在程式碼中引用的圖片、CSS、字體等,Nuxt 會幫您處理以獲得最佳效能。

4. 實際應用範例

讓我們來看看一個典型的專案結構:

專案結構範例
public/
├── robots.txt        # → /robots.txt
├── favicon.ico      # → /favicon.ico
├── og-image.png     # → /og-image.png
├── sitemap.xml      # → /sitemap.xml
└── downloads/
    └── manual.pdf   # → /downloads/manual.pdf

assets/
├── images/
│   └── hero-bg.jpg  # 在元件中使用
├── css/
│   └── main.css     # 會被處理和優化
└── fonts/
    └── custom.woff2  # 會被處理和優化

✅ 放在 public/ 的理由

  • • SEO 工具需要固定路徑
  • • 社群分享需要固定網址
  • • 下載連結需要直接存取
  • • 不需要優化處理

⚡ 放在 assets/ 的理由

  • • 需要在程式碼中引用
  • • 需要壓縮和優化
  • • 檔名可以變動(hash)
  • • 提升載入效能

今日總結

public/ 資料夾是您放置那些需要保持原樣、擁有固定公開網址的靜態資源的最佳地點。

成為熟練開發者的重要一步

清楚區分 public/assets/ 的用途,是成為一位熟練的 Nuxt 開發者的重要一步!