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 開發者的重要一步!