什麼情況下適合使用 Preact
- 你希望 popup、sidebar、new tab 介面的 UI bundle 更小。
- 你喜歡 React 風格的元件,但想要更輕量的執行期。
- 你正在針對較低階裝置最佳化擴充功能的啟動時間與 UI 反應速度。
範本範例
new-preact

content-preact

在既有擴充功能中使用
依下列步驟把 Preact 加入既有擴充功能。安裝
安裝所需相依套件:@types/preact。
你只需要加入 preact 這一個套件。Extension.js 會從你的專案解析 preact/compat、preact/test-utils 與 JSX runtime,並依找到的內容建立別名對應表,因此不需要再安裝其他套件。
設定
Extension.js 會期待 Preact 檔案採用下列副檔名:- 未啟用 TypeScript 時:
*.jsx - 啟用 TypeScript 時:
*.tsx
開發行為
當 Extension.js 偵測到 Preact 時,會設定:- 相容別名(例如
react→preact/compat)。 - 為 Preact 調整過的 JSX 處理方式。
- 開發階段的 live reload:檔案變更時,受影響的介面會重新載入並重新掛載。
@rspack/plugin-preact-refresh 執行期與 Extension.js 內建的 Rspack 版本不相容,
因此 Extension.js 選擇停用它,而不是讓 dev 模式壞掉。你的應用程式在每次編輯後
仍會更新,只是元件狀態不會在編輯之間保留。等上游外掛修好之後,fast refresh
就會回來。
疑難排解
- 編輯後元件狀態被重設: 這是目前的預期行為,因為 Preact 使用的是 live reload,而不是 fast refresh(見上文)。
- 未偵測到 Preact 整合: 確認
preact已出現在dependencies或devDependencies中。
使用範例
在 new tab 擴充功能中
在 new tab 擴充功能中使用 Preact,請在 HTML 中以<script> 引入:
在 content_script 檔中
對於 content script,建立 HTML 元素並把 Preact 渲染進去:
下一步
- 進一步了解 TypeScript 支援。
- 探索 Extension.js 如何處理 Sass modules。

