开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾
前文 对于单页应用中如何监听 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 的一些想法以及遗憾的更多相关文章
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...
- 手把手教你开发chrome扩展
转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...
- 手把手教你开发Chrome扩展三:关于本地存储数据
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
- 手把手教你开发Chrome扩展二:为html添加行为
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...
- 使用 Create-React-App 开发 Chrome 扩展
整理 Kindle 标注.书签和笔记从未如此简单! Kindle 标注管理应用 Kindle Mate 只支持 Windows,不支持 Mac.标注只是解析我的剪贴文本文件,配合 FileReader ...
- vue开发chrome扩展,数据通过storage对象获取
开发chrome插件时遇到一个问题,那就是单文件组件的data数据需要从chrome提供的storage对象中获取,但是 chrome.storage.sync.get 方法是异步获取数据的,需要通过 ...
- Google Chrome 扩展程序开发
根据公司的规定,每月八小时,弹性工作制.所以大家平时来的不太准时,如果有事,下班也就早些回去了.所以一个月下来工作时间可能不够,但是公司的考勤日历是这样的: 除了请假和法定节假日外,其他样式显示都是一 ...
- 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...
- 手把手教你Chrome扩展开发:本地存储篇
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
随机推荐
- YUV420格式解析
一般的的YUV420图像格式实际上是Y'UV,420指的是其在Y U V上面的采样率.在YUV420的格式中,首先存储每一个像素的Y'值,然后跟着存储的是每2*2方阵采样一次的U值,最后存储的是每2* ...
- Spring Security简明实践及相关国际化处理
别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践.先贴我的applicationContext-security.xm ...
- Django signals机制的几个简单问题
1.Django signals机制不是异步执行,是同步执行,所以需要异步执行的耗时任务不能用这个. 2.异步耗时任务不用这个,那些用signals?主要是解耦那些多次重复场合被调用的函数.直接用事件 ...
- .gitignore文件不起作用的解决方法
http://keendawn.blog.163.com/blog/static/88880743201531554431124/ git rm -r --cached . git add . git ...
- 畅通工程-HZNU寒假集训
畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只 ...
- 三级菜单python写法(递归写法)
数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, ...
- 学习笔记 C++ 链表
今天查了不少关于链表的资料大概理解了链表,为记录只用留笔于此. 链表概述:动态的数据存储单元,可以比数组更加灵活. 链表的组成:存储的数据,下一个节点. 首先让我们用代码完成一个节点. class N ...
- Spring Boot使用RestTemplate消费REST服务的几个问题记录
我们可以通过Spring Boot快速开发REST接口,同时也可能需要在实现接口的过程中,通过Spring Boot调用内外部REST接口完成业务逻辑. 在Spring Boot中,调用REST Ap ...
- PAT1037:Magic Coupon
1037. Magic Coupon (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The magi ...
- 并发库应用之十一 & 阻塞队列的应用
队列包含固定长度的队列和不固定长度的队列,队列的规则就是:先进先出.固定长度的队列往里放数据,如果放满了还要放,阻塞式队列就会等待,直到有数据取出,空出位置后才继续放:非阻塞式队列不能等待就只能报错了 ...