怎样从零开始创建一个谷歌扩展程序?

Myth丶恋晨 2022-12-26 11:15 207阅读 0赞

format_png

来源:Jimmy https://juejin.im/post/6890719051820695565

谷歌扩展程序是个HTML,CSS和JAVASCRIPT应用程序,它可以安装在谷歌浏览器上。

下面的内容,指导感兴趣的人儿创建一个谷歌扩展程序,它允许我们去获取不同国家新型冠状病毒肺炎-covid19案例的信息。

format_png 1 extension

步骤1:创建目录

创建一个名为dist的文件夹,然后创建以下的文件。

format_png 2 step1

步骤2:创建HTML文件

如下内容:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <title>Covid 19</title>
  8. <link rel="stylesheet" href="./style.css" />
  9. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  10. <script type="text/javascript" src="index.js" defer></script>
  11. </head>
  12. <body>
  13. <div class="header">Covid 19</div>
  14. <div class="container">
  15. <form class="form-data" autocomplete="on">
  16. <div class="enter-country">
  17. <b>Enter a country name:</b>
  18. </div>
  19. <div>
  20. <input type="text" class="country-name" />
  21. </div><br>
  22. <button class="search-btn">Search</button>
  23. </form>
  24. <div class="result">
  25. <div class="loading">loading...</div>
  26. <div class="errors"></div>
  27. <div class="data"></div>
  28. <div class="result-container">
  29. <p><strong>New cases: </strong><span class="todayCases"></span></p>
  30. <p><strong>New deaths: </strong><span class="todayDeaths"></span></p>
  31. <p><strong>Total cases: </strong><span class="cases"></span></p>
  32. <p><strong>Total recovered: </strong> <span class="recovered"></span></p>
  33. <p><strong>Total deaths: </strong><span class="deaths"></span></p>
  34. <p><strong>Total tests: </strong><span class="tests"></span></p>
  35. <center><span class="safe">Stay Safe and Healthy</span></center>
  36. </div>
  37. </div>
  38. </div>
  39. </body>
  40. </html>

步骤3:创建JAVASCRIPT文件

JAVASCRIPT文件用来处理API,内容如下:

  1. const api = "https://coronavirus-19-api.herokuapp.com/countries";
  2. const errors = document.querySelector(".errors");
  3. const loading = document.querySelector(".loading");
  4. const cases = document.querySelector(".cases");
  5. const recovered = document.querySelector(".recovered");
  6. const deaths = document.querySelector(".deaths");
  7. const tests=document.querySelector(".tests");
  8. const todayCases=document.querySelector(".todayCases");
  9. const todayDeaths=document.querySelector(".todayDeaths");
  10. const results = document.querySelector(".result-container");
  11. results.style.display = "none";
  12. loading.style.display = "none";
  13. errors.textContent = "";
  14. // grab the form
  15. const form = document.querySelector(".form-data");
  16. // grab the country name
  17. const country = document.querySelector(".country-name");
  18. // declare a method to search by country name
  19. const searchForCountry = async countryName => {
  20. loading.style.display = "block";
  21. errors.textContent = "";
  22. try {
  23. const response = await axios.get(`${api}/${countryName}`);
  24. if(response.data ==="Country not found"){ throw error; }
  25. loading.style.display = "none";
  26. todayCases.textContent = response.data.todayCases;
  27. todayDeaths.textContent = response.data.todayDeaths;
  28. cases.textContent = response.data.cases;
  29. recovered.textContent = response.data.recovered;
  30. deaths.textContent = response.data.deaths;
  31. tests.textContent = response.data.totalTests;
  32. results.style.display = "block";
  33. } catch (error) {
  34. loading.style.display = "none";
  35. results.style.display = "none";
  36. errors.textContent = "We have no data for the country you have requested.";
  37. }
  38. };
  39. // declare a function to handle form submission
  40. const handleSubmit = async e => {
  41. e.preventDefault();
  42. searchForCountry(country.value);
  43. console.log(country.value);
  44. };
  45. form.addEventListener("submit", e => handleSubmit(e));

上面,我们创建了一个名为searchForCountry的异步函数,在该函数上,我们可以使用async-await的语法。async await允许我们当正在等待服务端响应的时候,停止执行之后其他相关的代码。在代码片段前使用await关键字,当在执行该代码片段时,它之后的代码将停止执行。

在这个例子中,我们await一个GET请求的响应,然后将响应值赋值给response变量。

Axios是一个很受欢迎的JavaScript库,它可以很好处理HTTP请求,并且可以在浏览器平台和Node.js平台使用。它支持所有的现代浏览器,甚至支持IE8。它是基于promise的,所有很方便我们写async/await代码。

下面是些我们获取数据的API

  • coronavirus-19-api.herokuapp.com/countries - 获取所有国家的详情
  • coronavirus-19-api.herokuapp.com/countries/i… - 获取印度这个国家的covid19案例信息

步骤4:创建CSS文件

根据个人的喜欢,编写对HTML进行装饰

步骤5:创建MANIFEST.JSON文件

创建一个名为manifest.json的文件,然后将下面的代码添加到文件中。这个文件包含了谷歌浏览器如何处理扩展程序的信息。

  1. {
  2. "manifest_version": 2,
  3. "name": "Covid19",
  4. "version": "1.0.0",
  5. "description": "Provides the cases details regarding Covid19 with respective to any Country",
  6. "browser_action": {
  7. "default_popup": "index.html"
  8. },
  9. "icons":{
  10. "16": "./icons/16covid-19.png",
  11. "64": "./icons/64covid-19.png",
  12. "128": "./icons/128covid-19.png"
  13. },
  14. "content_security_policy": "script-src 'self' https://unpkg.com ; object-src 'self'"
  15. }

manifest_version, name 和 version这三个字段很重要,必须声明。扩展程序必须有"manifest_version": 2的键值对,这与最新谷歌浏览器合拍。而对于name/version的值我们可以按自己需求赋值。

效果GIF图如下:

format_png 3

demo

最后一步:添加到谷歌扩展程序

你可以点击chrome://extensions 跳转到谷歌扩展应用程序的管理页面。

你也可以如下操作跳转到谷歌扩展应用程序的管理页面

步骤:设置 - 扩展程序

当你打开扩展程序管理页面后,你可以点击加载已解压的扩展程序按钮去上传最开始新建的dist文件夹。

format_png 4 result

后话

  • 原文:https://dev.to/sunilaleti/how-to-build-a-chrome-extension-3lpj
  • 更多内容:https://github.com/reng99/blogs

format_png 5

发表评论

表情:
评论列表 (有 0 条评论,207人围观)

还没有评论,来说两句吧...

相关阅读

    相关 开始学习jQuery ()

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第