chrome扩展训练营|2. 开发调试发布

902 阅读3分钟

王志远,微医前端技术部

系列文目录

小节主题文档期待产出补充
学习起始篇juejin.cn/post/714860…扩展能做到什么/如何学习扩展/扩展基础组成概念
开发调试发布本文熟悉谷歌扩展的开发流程/调试流程/发布流程
谷歌扩展核心机制详解:数据流处理能力、UI 能力、浏览器特性扩展能力知识体系学习,根据文档实现所有相关 demo
谷歌扩展核心机制详解:下载、网络请求、代理、系统信息扩展能力知识体系学习,根据文档实现所有相关 demo
综合实战:一键合并窗口、消息通知一键合并窗口、消息通知、实现自己 promisify 版谷歌 api
框架升级:Vue 开发实现一图一诗(新开 tab 页打开自己的内容)使用 Vue 开发扩展,实现自己对扩展脚手架
落地:debug-plugin 集成谷歌扩展原调试插件重构为谷歌扩展并集成进项目

开发

在此不会落实到扩展的开发细节知识,只分享三个点:

  1. 如何开发:hello world 项目,引入谷歌浏览器显示扩展图标,点击图标提示【hello chrome】
  2. 开发过程中怎么调试:包含 popup / background / content_script 的调试
  3. 开发好后怎么发布:发布至应用市场

如何开发

按之前的前言,我们知道扩展其实和一个普通 web 应用一样都是由 html+css+js 经过 zip 打包组成的,特殊点在于项目根目录下需要 manifest.json 文件,它是 chrome 扩展的核心配置,用来定义和配置我们的扩展。流程如下

  1. 实现扩展
  2. 打开谷歌浏览器的扩展:在右上角,依次点击更多图标 扩展程序。(也可以直接访问 chrome://extensions/)

勾选开发者模式/点击选择自己实现的目录

关于扩展更详细的管理可见官方文档:support.google.com/chrome_webs…

实战 demo:hello chrome

我们用一个 hello world 项目来熟悉下流程

实现效果

项目结构
.
|-- background.js
|-- manifest.json
manifest.json
{
  "name": "hello chrome",
  "manifest_version": 2,
  "version": "1.0.0",
  "description": "demo",
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "browser_action": {
    "default_title": "hello chrome"
  }
}

background.js

{
  "name": "hello chrome",
  "manifest_version": 2,
  "version": "1.0.0",
  "description": "demo",
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "browser_action": {
    "default_title": "hello chrome"
  }
}

开发过程中怎么调试

这是重点!我们没人能做到写代码从不出错,所以调试显得分外重要,分为如下三个部分

  • content_script:注入页面的代码
  • popup:点击扩展图标的弹出层
  • background:扩展后台逻辑

content_script 的调试

很简单,因为是直接放在页面代码里了,直接在当前页打开开发者助手正常调试即可

popup 的调试

这块我们需要鼠标悬停在弹出层上 - 右键 - 审查弹出内容,就会打开一个类似 devTool 的页面,后面就是正常调试了,这里我们以【潮汐】为例

2022-09-29 09.57.22

background 的调试

这块很奇特,找了很久,我们需要在扩展管理页找到自己的插件,然后如果有用到【background】,就会出现【背景页】字样,点击后就会打开一个类似 devTool 的页面,后面就是正常调试了

发布

这块原博文写的很好,我就不造轮子啦,链接:aliqin.github.io/2016-04-03-…

简单说下核心点,要想发布,你首先需要成为一个 chrome 开发者,需要具备

  1. 翻墙:去搞的 vpn
  2. 支持美元支付的信用卡:需要 300 元

如果这些你不想搞,按照上面的内容本地打包发给别人使用也是可以的。

avatar.jpeg