搜尋
首頁web前端js教程使用 Vite TS 建立瀏覽器擴充功能

讓我們開始這個練習,重點是設定最基本的擴充結構,其中只包含一個清單檔案和一個服務工作者。清單充當設定文件,指定允許擴充功能執行的操作,而服務工作執行緒處理後台任務,主要響應瀏覽器事件,在本例中,它會在安裝擴充功能時記錄日誌。

{
  "name": "Simple",
  "version": "0.0.1",
  "manifest_version": 3,
  "background": {
    "service_worker": "background.js"
  }
}

manifest.json

console.log("Initialized background script!");

chrome.runtime.onInstalled.addListener((object) => {
  console.log("Installed background script!");
});

background.js

Service Worker 可以根據需要變得複雜,但我們暫時保持簡單,因為此任務的目標是將這個簡單的兩個檔案擴充轉換為 Vite 專案。

那為什麼要使用Vite呢?主要是因為我決定使用 TypeScript,這將顯著提高程式碼品質、可維護性和生產力。除了提供自我文件之外,TypeScript 還允許我在編譯時而不是運行時捕獲與類型相關的錯誤,從而增強整體開發體驗。

維特

雖然帶有 TypeScript 的 Node 專案足以將我的 TS 程式碼編譯成我的擴充所需的普通 JavaScript,但我選擇了 Vite。 Vite,特別是其 Rollup 捆綁器,提供了廣泛的功能,例如樹搖動和捆綁縮小。此外,如果我決定將來為擴充功能創建 UI 元件,Vite 強大的插件生態系統將使我能夠輕鬆整合 React。

考慮到這一點,讓我們開始使用其 vanilla-ts 範本建立 Vite 專案。

npm create vite@latest simple-extension -- --template vanilla-ts

執行指令並安裝依賴項後,您將擁有一個使用 TypeScript 設定的小型 Web 專案。但是,由於此設定並不完全符合我們的需要,因此我們將從一些清理開始。首先,從根資料夾中刪除 index.html 文件,因為它不再需要了。然後,刪除 src 資料夾中除 vite-env.d.ts 之外的所有文件,該文件為 Vite 特定功能提供類型定義。最後,刪除公用資料夾中的所有內容。

⚠️ 如果您在 tsconfig 檔案中遇到有關未知編譯器選項的錯誤,請確保您的編輯器使用為專案安裝的相同 TypeScript 版本。

接下來,在src資料夾中建立一個名為background.ts的新文件,並將原始background.js檔案中的程式碼複製到其中。
Create Browser Extension with Vite   TS
您很快就會注意到 TypeScript 需要額外的上下文才能正常運行,因為如果沒有適當的類型,它無法識別 chrome 物件。若要解決此問題,請安裝 @types/chrome 為 chrome 提供必要的類型定義。

{
  "name": "Simple",
  "version": "0.0.1",
  "manifest_version": 3,
  "background": {
    "service_worker": "background.js"
  }
}

安裝後,TypeScript 錯誤就會消失。但是,您可能會注意到 onInstalled 回呼中出現一條警告訊息。這是由於 Vite 在 TypeScript 設定中為我們配置了 linting 屬性。

console.log("Initialized background script!");

chrome.runtime.onInstalled.addListener((object) => {
  console.log("Installed background script!");
});

tsconfig.json

由於我們定義了一個未使用的對象,所以讓我們繼續刪除它。這應該就是我們所需要的,所以現在我們可以編譯專案了。

npm create vite@latest simple-extension -- --template vanilla-ts

似乎有一個問題——預設的 Vite 配置仍在嘗試使用我們剛剛刪除的一些檔案作為程式碼入口點。

npm i -D @types/chrome

我們需要自訂 Vite 配置以在庫模式下運行。這是該項目所需的最低配置。

/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true

vite.config.ts

在上面的配置中,我們只是將項目的輸入設為 ./src/background.ts 並將輸出檔名調整為 [name].js。預設情況下,Vite 會在生產版本的檔案名稱中附加一個雜湊值(例如,background-[hash].js),但我們需要一個精確的檔案名稱匹配,manifest.json 才能正常運作。

說到manifest.json,它應該位於哪裡?這部分很簡單:任何應原樣複製(無需轉換)到輸出資料夾的檔案都應放置在公用資料夾中。現在,如果我們再次建立項目,我們將在 dist 資料夾中找到編譯的兩個檔案瀏覽器擴充功能。

npm run build

安裝

現在讓我們驗證一切是否如預期般運作。如果您之前沒有在本地測試過瀏覽器擴展,只需按照以下簡單步驟操作:

  1. 在新分頁中輸入 chrome://extensions 開啟擴充頁面。
  2. 透過切換開發者模式開關啟用開發者模式。
  3. 點選載入解壓縮後的,選擇擴充目錄,即Vite產生的dist資料夾。 Create Browser Extension with Vite   TS 就是這樣!擴充功能現已安裝。如果您單擊 Service Worker 鏈接,該 Service Worker 的 DevTools 將打開,您可以在其中查看我們的 Worker 運行時產生的日誌。

簡單的 vite 擴充

以上是使用 Vite TS 建立瀏覽器擴充功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器