本文档提供了浏览器扩展项目的技术文档,该项目通过创建一个碳足迹跟踪器来教授核心的浏览器扩展概念。该扩展与 CO2Signal API 交互,根据地区的能源使用模式检索和显示碳足迹数据,并更新其图标以反映该地区电力的碳强度。
有关此项目基础的 JavaScript 基础知识,请参阅JavaScript 基础:做出决策和JavaScript 基础:数组和循环。
浏览器扩展项目在创建帮助用户监控碳排放的实用应用程序的同时,向学生介绍了浏览器扩展的架构。该系统允许用户输入其地区代码和 CO2Signal 服务的 API 密钥,然后显示实时碳使用信息,并更改扩展程序的图标颜色以反映碳强度。
来源:5-browser-extension/1-about-browsers/README.md11-41 5-browser-extension/2-forms-browsers-local-storage/README.md8-17 5-browser-extension/3-background-tasks-and-performance/README.md15-41
扩展提供了两个主要视图
来源:5-browser-extension/1-about-browsers/README.md100-133
主 JavaScript 文件 (index.js) 处理所有核心功能
| 功能 | 目的 |
|---|---|
init() | 初始化扩展,检查存储的 API 密钥和区域,并设置初始状态 |
handleSubmit() | 处理表单提交并调用 setUpUser() |
setUpUser() | 将 API 密钥和区域保存到 localStorage 并启动数据检索 |
displayCarbonUsage() | 调用 CO2Signal API 并显示结果 |
calculateColor() | 根据碳强度确定扩展图标的颜色 |
reset() | 清除存储的区域并重新启动初始化过程 |
来源:5-browser-extension/solution/src/index.js17-127 5-browser-extension/2-forms-browsers-local-storage/README.md115-193 5-browser-extension/3-background-tasks-and-performance/README.md15-41
扩展使用后台任务来更新扩展图标。这通过 Chrome 的运行时消息传递系统处理
来源:5-browser-extension/3-background-tasks-and-performance/README.md115-135
下面的序列图说明了扩展中的完整数据流
来源:5-browser-extension/2-forms-browsers-local-storage/README.md115-193 5-browser-extension/3-background-tasks-and-performance/README.md79-113
manifest.json 文件定义了扩展的属性、权限和行为
来源:5-browser-extension/solution/dist/manifest.json1-13 5-browser-extension/start/dist/manifest.json1-12
该扩展使用 axios 向 CO2Signal 服务发出 API 请求
来源:5-browser-extension/2-forms-browsers-local-storage/README.md163-171 5-browser-extension/solution/src/index.js36-45
该扩展使用浏览器的 localStorage API 来持久化用户数据,使其在会话之间保持不变
| 功能 | LocalStorage 操作 |
|---|---|
init() | 从 localStorage 中检索 apiKey 和 region |
setUpUser() | 将 apiKey 和 region 存储到 localStorage |
reset() | 从 localStorage 中移除 region |
来源:5-browser-extension/2-forms-browsers-local-storage/README.md95-97 5-browser-extension/2-forms-browsers-local-storage/README.md128-131 5-browser-extension/2-forms-browsers-local-storage/README.md80-83
calculateColor() 函数根据碳强度阈值确定扩展图标的适当颜色
来源:5-browser-extension/3-background-tasks-and-performance/README.md64-80 5-browser-extension/solution/src/index.js17-32
后台脚本包含一个 drawIcon() 函数,该函数创建一个 canvas 元素并为扩展图标绘制一个彩色圆圈
来源:5-browser-extension/3-background-tasks-and-performance/README.md122-132
该扩展使用 webpack 进行打包,并需要以下依赖项
| 依赖项 | 目的 |
|---|---|
| webpack | JavaScript 的模块打包器 |
| webpack-cli | webpack 的命令行界面 |
| axios | 用于发出 API 请求的 HTTP 客户端 |
开发工作流程包括
npm install 安装依赖项npm run build 构建扩展/dist 文件夹加载到浏览器中来源:5-browser-extension/solution/package.json1-29 5-browser-extension/start/package.json1-29 5-browser-extension/1-about-browsers/README.md53-57
以下状态图显示了扩展的完整生命周期
来源: 5-browser-extension/solution/src/index.js87-114 5-browser-extension/2-forms-browsers-local-storage/README.md115-138
该扩展程序设计用于支持 Manifest V3 格式的现代浏览器,包括:
来源: 5-browser-extension/1-about-browsers/README.md11-16 5-browser-extension/1-about-browsers/README.md48-57
该扩展程序实现了多项性能优化:
来源: 5-browser-extension/3-background-tasks-and-performance/README.md14-41 5-browser-extension/3-background-tasks-and-performance/README.md112-134
此浏览器扩展项目演示了关键的浏览器扩展概念,包括:
最终的应用程序提供了一个实用的碳排放监测工具,同时教授了必不可少的 Web 开发技能。