Manifest V3 架構解析與環境建置
如果你想要打造一款微型 SaaS,並且在最短的時間內獲得使用者,那麼 Chrome Extension (瀏覽器擴充套件) 絕對是你的首選。
為什麼?因為使用者不需要安裝龐大的桌面軟體,也不需要離開他們正在瀏覽的網頁。你的工具可以直接「寄生」在他們的瀏覽器上,在他們最需要的時候提供價值(例如:Grammarly 幫你改寫英文、AdBlock 幫你擋廣告、或是自動填表工具)。
在這堂課中,我們將從零開始,帶你深入了解 Google 最新的 Manifest V3 架構,並建立你的第一個擴充套件。
1. 什麼是 Manifest V3?
在開發 Chrome Extension 時,最核心的檔案就是 manifest.json。這就像是擴充套件的「身分證」與「說明書」,告訴瀏覽器這個套件叫什麼名字、需要什麼權限、以及包含哪些腳本。
Google 在近期全面推動了 Manifest V3,取代了舊版的 V2。這是一個巨大的架構變革,主要目的是為了提升:
- 安全性:限制外部程式碼的執行,防止惡意套件竊取資料。
- 效能:引入了 Service Workers,取代了過去一直常駐在背景吃記憶體的 Background Pages。
- 隱私:更嚴格的權限控管,例如
declarativeNetRequest取代了webRequest來阻擋網路請求。
[!WARNING] 棄用警告:Google 已經開始強制下架所有 Manifest V2 的擴充套件。如果你在網路上看到舊的教學文章還在使用
"manifest_version": 2,請直接跳過,因為那已經無法上架了!本課程全篇採用最新的 V3 標準。
2. 擴充套件的核心組成元件
一個強大的 Chrome Extension 通常由以下四個核心元件組成:
- Manifest (manifest.json):設定檔,定義權限與架構。
- Background Script (Service Worker):在背景默默運行的管家。負責處理事件、跨網頁狀態管理、甚至與後端 API 通訊。
- Content Scripts:注入到目標網頁的間諜。可以直接讀取和修改網頁的 DOM(例如把網頁上的特定單字標記成紅色)。
- Popup / Options Page:使用者介面。點擊右上角圖示彈出的小視窗,或是專屬的設定頁面。
這四個元件彼此之間是隔離的,它們必須透過 Chrome 提供的 Message Passing (訊息傳遞) API 來互相溝通。
3. 動手做:建立第一個擴充套件
讓我們先建立一個最簡單的 Hello World 專案。請在你的電腦上建立一個新資料夾 my-first-extension,並在裡面建立以下檔案:
manifest.json
這是唯一不可或缺的檔案。請將以下程式碼貼入:
{
"manifest_version": 3,
"name": "Vibe Tutor 第一個擴充套件",
"version": "1.0.0",
"description": "這是我跟著 Vibe Tutor 做的第一個 Chrome Extension!",
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
},
"permissions": [
"storage",
"activeTab"
]
}
解析:
"manifest_version": 3:宣告我們使用最新標準。"action":定義了當使用者點擊瀏覽器右上角圖示時,會發生什麼事(在這裡我們指定彈出popup.html)。"permissions":宣告我們需要使用的 Chrome API 權限。這裡我們先申請storage(儲存設定) 和activeTab(獲取當前分頁資訊)。
popup.html
這就是點擊圖示後會看到的小視窗 UI,其實就是一個簡單的網頁。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body {
width: 300px;
padding: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
h1 {
font-size: 18px;
color: #3b82f6;
}
button {
background-color: #3b82f6;
color: white;
border: none;
padding: 8px 16px;
border-radius: 4px;
cursor: pointer;
width: 100%;
margin-top: 10px;
}
button:hover {
background-color: #2563eb;
}
</style>
</head>
<body>
<h1>哈囉!Vibe Tutor!</h1>
<p>這是你的第一個微型 SaaS 雛形。</p>
<button id="clickMeBtn">點我測試</button>
<!-- 引入邏輯腳本 -->
<script src="popup.js"></script>
</body>
</html>
popup.js
為我們的按鈕加上互動邏輯。
document.addEventListener('DOMContentLoaded', () => {
const btn = document.getElementById('clickMeBtn');
btn.addEventListener('click', () => {
alert('太棒了!你成功觸發了按鈕事件!');
btn.innerText = "已點擊 ✓";
btn.style.backgroundColor = "#10b981"; // 變成綠色
});
});
準備 Icon 圖片
你需要在專案內建立一個 icons 資料夾,並放進三張不同尺寸的圖片 (icon16.png, icon48.png, icon128.png)。
小提示:如果你只是在本地端開發測試,其實沒有 icon 也可以運行,Chrome 會自動給你一個預設的英文字母圖示。
4. 如何安裝並測試你的擴充套件?
寫好這三個檔案後,我們要怎麼把它安裝到瀏覽器上呢?
- 打開 Chrome 瀏覽器,在網址列輸入
chrome://extensions/並進入。 - 在頁面右上角,開啟 「開發人員模式 (Developer mode)」 的開關。
- 點擊左上角的 「載入未封裝項目 (Load unpacked)」 按鈕。
- 選擇你剛剛建立的
my-first-extension資料夾。
這時候,你就會在擴充套件列表中看到它了!
點擊瀏覽器網址列右側的拼圖圖示 🧩,把你的套件「釘選 (Pin)」在工具列上。點擊它的圖示,你就會看到精美的 popup.html 彈出來,並且按鈕可以正常運作。
[!TIP] 開發與除錯技巧 每次你修改了 HTML 或 JS 檔案後,你必須回到
chrome://extensions/頁面,點擊你套件卡片右下角的 重新整理按鈕 (⟳),最新的程式碼才會生效!這是新手最常忘記的步驟。
5. 接下來的挑戰
恭喜你!你已經完成了第一步。 但在真實的 SaaS 產品中,我們不僅僅需要一個彈出視窗,我們還需要讓套件「看得懂」使用者正在瀏覽的網頁,甚至在背景幫使用者做自動化任務。
在下一章中,我們將深入探討 Manifest V3 最大的變革——Background Service Workers,看看這個強大的隱形管家能為我們帶來什麼樣的超能力!