Files
store_ai_extension/step.md
2026-04-30 11:03:26 +08:00

3.1 KiB
Raw Blame History

项目结构

src:.
├─assets              # 静态资源目录
│      vite.svg       # 这里的资源通常用于图标、Logo 或扩展程序内部引用的图片
│
├─background          # 后台脚本 (Background Script / Service Worker)
│      index.ts       # 扩展的“大脑”,常驻后台运行,处理事件监听、报文转发、存储管理等
│
├─config              # 配置目录
│      platforms.ts   # 自定义配置,各种平台(如不同网站、不同浏览器)的适配配置
│
├─content             # 内容脚本 (Content Script)
│  │  App.vue         # 注入到网页中的 UI 组件(通常用于在目标页面侧边栏或浮窗显示界面)
│  │  main.ts         # 内容脚本的入口文件,负责将 Vue 组件挂载到宿主页面的 DOM 中
│  │
│  └─views            # 内容脚本相关的子视图或组件
│
├─options             # 选项页 (Options Page)
│      App.vue        # 扩展设置页面的 UI右键扩展图标点击“选项”打开的页面
│      index.html     # 选项页的 HTML 宿主文件
│      main.ts        # 选项页的 Vue 入口文件
│
├─popup               # 弹窗页 (Popup Page)
│      App.vue        # 点击扩展图标时显示的弹出框 UI
│      index.html     # 弹窗页的 HTML 宿主文件
│      main.ts        # 弹窗页的 Vue 入口文件
│
├─shared              # 共享代码库 (Shared)
│                     # 存放被 background、content、popup 等多个模块共同引用的工具函数、常量、API封装等
│
└─types               # 类型定义目录
        index.ts      # 存放全局的 TypeScript 接口Interface和类型Type定义

开发步骤

1.在popup模块中的App.vue中用tailwindcss编写点击扩展图标时出现的弹窗逻辑如下

  • 在未登录情况下即storage中token字段是否存在如果不存在弹窗内容只用显示扩展名字、描述、请登录按钮底部扩展版本
  • 当点击登录按钮后先模拟登录写死token之后ui如下
    • 显示扩展名字、描述、一个平台选择框通过读取config/platforms.ts)的内容for循环显示平台、扫描按钮、最底部Row退出按钮扩展版本号
  • 注意token的存储和获取逻辑放到/shared/auth.ts中去如果涉及到接口和枚举的定义请判断是否是全局类型
    • 如果是该类型写到一个新文件中并放到types/下如果不是放到当前模块的types/目录下(如果没用,新建)

2.前提当1完成后点击popup的立即爬取已经可以打开一个新的窗口了

  • 在所有网页(包括新打开的窗口和所有网页)的右下角都放一个圆形正计时(表示正在爬取中)
  • 点击圆形正计时时出现一个popup内容如下
    • 以时间轴的形式表示当前爬取进度根据platforms.ts中的steps
  • 同时点击扩展的popup里的内容也变得和上面的时间轴内容一致显示爬取进度隐藏立即爬取等按钮