😀
驱动背景:最近C知一直有各种做题,而由于做题有准确率要求,经常做个题就是半小时,非常耗时且难顶。 目标:记录答题的选项和问题,在重新做题的时候,快速匹配,自动做题

🤌 涉及内容

  • js、html、css相关知识
  • firebase接入、webpack打包
  • chrome插件开发

📝 Chrome插件开发流程

  • 创建代码文件夹
  • 创建manifest.json:声明文件
  • 按规范开发popup.html和脚本执行内容

manifest声明

  • 这个manifest和Android里的manifest文件作用类似,用来定义权限、入口、脚本、图标、插件名等信息。
  • 官方说明:
  • 这里提供我自己插件的manifest.json的内容供参考:
  • 插件的入口是popup.html:这里可以写插件界面相关的布局
  • 插件js脚本content.js:脚本文件

popup.html页面开发

这里可以进行页面布局,如

事件监听、传递

在popup.html中绑定的popup.js中,编写脚本内容
popup.js主要写页面相关的脚本,具体的业务逻辑,是写在其他content.js文件中,但是由于Chrome插件限制,不能直接调用其他文件中的方法。需要用消息发送、监听的方式,触发函数调用。这里举个例子:
  • popup.js:
  • content.js:
到这里,基本已经是基本的插件开发流程了,身下的就是常规的js代码开发。可以根据需要,编写执行对应的代码即可。

🙋‍♂️ 接入Firestore Database作为云端存储

由于有云端存储的需求,也没必要实现一个独立的后端来存储这些题目,所以经过简单调研后,直接接入Google Firebase Storage来存储题库即可。

接入Firestore Database步骤

  • 注册Google账号

创建项目

输入项目名,跟随指引一步步创建项目即可
notion image

使用Firestore Database

notion image

项目信息获取

notion image

依赖及打包

  • 安装webpack、firebase:
    • 根目录创建webpack配置文件:
      • 打包文件:

        👹 注意事项

        • manifest V3不再支持远程依赖,解决方法有:
          • 方法一:把远程js代码,下载到本地进行依赖
          • 方法二:编写代码时,依然远程依赖,借助打包工具打包出最终脚本文件即可
        • 使用webpack打包代码,每次修改对应的js代码,都需要重新打包代码
        • 修改代码后,需要reload插件,如果在特定页面中执行,还需要重新刷新页面
        • 发布时,需要把node_modules删除,避免最终插件太大
        • 插件的事件传递,有其特定的流程,大概类似于管道的概念,在一端发送,另一端接收

        🤗 最后

        • Chrome插件没有想象中的难开发,只要梳理清其开发流程,就与常规的前端、工具开发类似
        • 开发过程中,网上的资料可能过时、不适用等,最好还是查阅Google官方文档
        • 另外对于新领域的内容,GPT可以快速入门和梳理流程

        📎 参考文章

         
        微创新-Note构建流程改进32寸移动屏Note适配