Chrome 插件框架 Plasmo 基本使用示例

📦 1. 安装 Plasmo

在项目目录下运行:

bash 复制代码
npm create plasmo@latest

按照提示选择:

  • Name: your-extension
  • Extension Type: Chrome (or multiple browsers)
  • TypeScript: 推荐 Yes
  • Manifest Version: MV3
  • Use React: Yes(Plasmo 推荐)

完成后会生成一个 Plasmo 扩展工程。


在 popup.tsx 编辑:

tsx 复制代码
function Popup() {
  return (
    <div style={{ padding: 16 }}>
      <h1>Hello Plasmo!</h1>
      <p>这是你的第一个 Plasmo 扩展。</p>
    </div>
  )
}

export default Popup

运行:

bash 复制代码
npm run dev

Plasmo 会自动生成浏览器扩展,并让你在开发者模式下安装。


🧲 3. 创建一个 Content Script(注入到网页的脚本)

新建文件:content.ts

ts 复制代码
console.log("Plasmo content script running!")

window.addEventListener("click", () => {
  console.log("你点击了页面!")
})

Plasmo 会自动把它加入 manifest,无需你配置 manifest.json。


🔥 4. 与页面进行 DOM 操作

ts 复制代码
// content.ts
const banner = document.createElement("div")
banner.innerText = "Hello from Plasmo!"
banner.style.cssText = `
  position: fixed;
  top: 20px;
  left: 20px;
  padding: 10px 20px;
  background: black;
  color: white;
  border-radius: 8px;
  z-index: 999999;
`
document.body.appendChild(banner)

🔄 5. Background Service Worker(后台脚本)

创建 background.ts:

ts 复制代码
chrome.runtime.onInstalled.addListener(() => {
  console.log("扩展已安装!")
})

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.type === "PING") {
    sendResponse({ text: "PONG" })
  }
})

🔗 6. Content Script 与 Background 交互

content.ts:

ts 复制代码
chrome.runtime.sendMessage({ type: "PING" }, (response) => {
  console.log("后台回复:", response.text)
})

🎉 7. 打包扩展

bash 复制代码
npm run build

打包后输出在 build/ 目录。


📚 完整最小示例结构

复制代码
my-plasmo-extension/
├─ popup.tsx
├─ background.ts
├─ content.ts
├─ package.json
└─ plasmo.config.mjs

这就是一个可运行的 Plasmo 扩展最小示例。

相关推荐
今天要早睡_5 小时前
Linux 基础指令速查:从 ls 到 tar 的常用命令全解析
linux·运维·chrome
陈随易14 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
福兮说15 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
传人once17 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.4617 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
库拉镜像AI牛牛19 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔19 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师19 小时前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔19 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
Seraphina3619 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf