前文 对于单页应用中如何监听 URL 变化的思考 说到我在开发 chrome 扩展 GitHub Remarks 中遇到的一个问题,本文来聊聊开发这个扩展的前后心路历程。

为什么开发这个扩展?前文说到:

开发这个扩展的原因是我在 GitHub 中所 star 的项目实在太多了(截止目前 671 个),有的项目过个几天回来看就忘了为什么 star 了,有的轮子想找的时候发现忘记叫什么了,这么多一个个找实在浪费时间。于是我一直在想有这么个工具,可以自定义对 GitHub 中的项目进行备注,然后可以根据备注进行搜索,于是便有了这个扩展。

综上,这个扩展有两个功能:

  • 对 repo 进行备注(可以在 repo 详情页或者自己的 stars 列表页)
  • 根据备注对 repo 进行搜索(stars 列表页)

一开始我的设想中是有另外一个重要功能的,那就是 stars 分类。也就是像浏览器书签一样,设置 tags 进行分类。很显然,市面上的 stars 管理工具都有这个功能(比如 OhMyStar),不过很多是仅仅有这个功能。

但是,从一开始,我就将其定位为一个浏览器扩展,而不是第三方工具(web 或者 app,本文的基于 web 专指基于第三方的 web 网站),因为我个人平时也就网页版的 GitHub 用的多,如果需要打开第三方,无形中就增加了使用成本。

搜索了下,stars 管理的 chrome 扩展也确实有,比如 Github Stars Manager 以及 GitHub Stars Tagger。它们的思路都是类似,根据 GitHub 提供的 API 获取所 stars 的项目,然后和保存的 tags 数据进行匹配(可以用 chrome.storage.sync API),然后再把 dom 画上去。这里最关键的一步就是获取所 stars 的项目,因为 API 所限制,一次请求只能获取 100 条数据,所以需要多次请求,这个时间消耗非常大,再者,因为浏览器扩展是基于页面,也就意味着每次刷新,每次进入新的页面,都需要重新进行请求操作,而不是像基于 web 和 app 的管理工具一样能对数据进行缓存。

基于此考虑,我放弃了对 stars 进行分组(标记)的功能。我也曾考虑过将数据进行缓存,但是因为基于页面,缓存周期很难把控(不像基于 web 或者 app 可以自主进行刷新),遂放弃,不得不说是一个遗憾。

而另外一个遗憾是,由于 chrome.storage.sync API 对于储存数据大小的限制,使我不得不改用 chrome.storage.local API,理论上说起的作用和 localStorage 类似。

基于这两个遗憾,个人觉得这个扩展的使用也是十分受限的。首先需要是 GitHub stars 的重度用户,然后要对 repo 备注有需求,方便以后的查找,因为很多人对于 star 对于收藏的东西是不会去看第二次的。再者,最好只在一台电脑上工作,因为数据不能同步的问题。

总之,这个扩展很好的满足了我自己的需求,接下去如果有需要,会考虑下数据导入导出的功能。

开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾的更多相关文章

  1. 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单   手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...

  2. 手把手教你开发chrome扩展

    转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...

  3. 手把手教你开发Chrome扩展三:关于本地存储数据

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...

  4. 手把手教你开发Chrome扩展二:为html添加行为

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...

  5. 使用 Create-React-App 开发 Chrome 扩展

    整理 Kindle 标注.书签和笔记从未如此简单! Kindle 标注管理应用 Kindle Mate 只支持 Windows,不支持 Mac.标注只是解析我的剪贴文本文件,配合 FileReader ...

  6. vue开发chrome扩展,数据通过storage对象获取

    开发chrome插件时遇到一个问题,那就是单文件组件的data数据需要从chrome提供的storage对象中获取,但是 chrome.storage.sync.get 方法是异步获取数据的,需要通过 ...

  7. Google Chrome 扩展程序开发

    根据公司的规定,每月八小时,弹性工作制.所以大家平时来的不太准时,如果有事,下班也就早些回去了.所以一个月下来工作时间可能不够,但是公司的考勤日历是这样的: 除了请假和法定节假日外,其他样式显示都是一 ...

  8. 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...

  9. 手把手教你Chrome扩展开发:本地存储篇

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...

随机推荐

  1. nginx flv点播服务器搭建

    首先选用Nginx+Nginx-rtmp-module作为点播服务器,安装文章:https://www.atlantic.NET/community/howto/install-rtmp-ubuntu ...

  2. Kotlin : Retrofit + RxAndroid + Realm

    https://jqs7.com/kotlin-retrofit-rxandroid-realm/ 原作者:Ahmed Rizwan 原文链接:Kotlin : Retrofit + RxAndroi ...

  3. Django Web项目代码规范参考

    Python:PEP8+GoogleStyle+DjangoSytlePEP8中文版:http://www.cnblogs.com/huazi/archive/2012/11/28/2792929.h ...

  4. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  5. SSM框架下声明式事务管理(注解配置方式)

    一.spring-mybatis.xml文件中加入事务管理配置 <?xml version="1.0" encoding="UTF-8"?> < ...

  6. C#实现的HttpGet请求

    话不多说,代码贴上: /// <summary> /// HTTP Get请求 /// </summary> /// <param name="url" ...

  7. Unite Beijing 2018 参会简要分享

    一. Training Day 主讲人:鲍建运 操作:马瑞 课程包括较为完整的功能,如灯光设置,角色动画控制,Cinemachine,Timeline,AI寻路,以及最新的Post Processin ...

  8. maven工程,java代码加载resources下面资源文件的路径

    1 通过类加载器加载器, 1. URL resource = TestMain.class.getResource("/18500228040.txt");File file = ...

  9. MySQL 数据库 Query 的优化

    理解MySQL的Query Optimizer MySQL Optimizer是一个专门负责优化SELECT 语句的优化器模块,它主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的Qu ...

  10. java正则表达式验证金额

    String reg_money = "\\d+(\\.\\d{1,2})?";// 金额正则,可以没有小数,小数最多不超过两位 Pattern pattern = Pattern ...