Chrome扩展开发(Gmail附件管理助手)系列之〇——概述
目录:
零、为什么会有这一套博文
2014年底虽然已经基本完成GmailAssist这一chrome扩展开发(当时也是作为软件工程课程的实践项目),但该扩展程序对于邮箱内邮件数目较多(大约五位数的数量级上)的情况,就很难正常工作了,这显然不是一个合格的软件,当时虽然终期验收顺利“交差”了,但这个软件的“不合格”却一直是我的一个心病。经过一年的学习,尽管对于前端开发的知识没有什么更进一步的掌握,但对软件工程的思想等等有了比起当时来说更深一层的认识。同时,当时虽然是一定程度上遵循敏捷开发的原则来进行的开发,但代码结构仍然比较混乱,因此最近计划对其进行一次完整的重构,同时修复bug、提升该扩展的性能。
当时在进行开发时,我几乎完全没有前端开发的经验,从HTML、js的最基本语法开始边学边实现了该扩展的开发,当时偷懒没有及时把知识、技巧包括开发途中走的弯路梳理并记录下来。现在想重构时,发现很多东西都得从头再梳理,因此决定在此次重构过程中,把Gmail API、chrome扩展、邮件格式、OAuth2认证等相关的知识整理成文字,加深自己理解、记忆的同时,也期待这套文章能对准备进行有关这些方面开发的开发者有所帮助。
如果你对GmailAssist感兴趣,可以在chrome商店中搜索“Gmail助手”或者“GmailAssist”,或者直接访问https://chrome.google.com/webstore/detail/gmail-attachment-manager/lchiijlphndndjfgecehgmkjbdohndjd来试用它。如果你对源码感兴趣,欢迎在GitHub上查看它的源码:https://github.com/IceSuger/Gmail_Plugin。(写这篇文章时,重构还没完成,所以github上暂时还是一坨烂代码...2016.1.11)
一、用户需求
用户的Gmail中附件很多,分散在各个邮件中,希望能有一款插件,通过它来统一查看、批量下载、在建立新邮件时从中批量选择附件并插入,而不必手动搜索并下载重新上传。
二、目标功能
开发开始之前,有必要搞清楚我们具体要实现的每一个功能(否则开发过程没有清晰的目标,就很难进行)。那么,我们的插件需要拥有的几项基本的功能如下:
能够获取并显示用户邮箱里的全部附件;
能够单独下载列出的附件中的某个;
能够在要发送的草稿中插入列表中的某个附件。
在这些基本的功能上,我们可以通过一次次迭代来完善功能,让用户更好地使用这个插件。具体点来说,进一步还要有(其中的一些是开发过程中才想到的或者根据用户反馈而追加的):
在附件列表中显示该附件对应的邮件标题、时间等邮件信息;
对附件列表进行按不同关键词(包括附件名称、附件大小、邮件时间等)的排序;
获取附件列表时,允许用户通过输入指定一个更小的搜索范围;
对获取到的附件列表,允许用户通过输入来过滤掉不需要的条目;
允许用户通过复选框来勾选多个附件,实现批量操作;
实现中文、英文两种版本。
三、要完成开发需要哪些知识
有了一个大致的目标,就该进一步考虑如何实现了。首先的想法是我们要开发一个chrome扩展,那chrome扩展的开发的基本知识以及基本的前端开发知识(至少是HTML、javascript、CSS的常用语法)是需要的。其次,搜索后得知Gmail有着一套官方的比较成熟的API,供开发者调用。接下来了解到开发针对Gmail的第三方插件,需要通过OAuth2获得用户的授权,那么OAuth2的基本原理也需要了解。
因此这套博文会有如下内容:[chrome扩展开发基础知识及一些小tips和陷阱提醒。Gmail API的简单介绍、包括tips和陷阱提醒。对OAuth2的理解。chrome扩展的i18n方法和技巧。]
其中每篇我都结合GmailAssist的具体开发过程来写,因为很多知识点有具体例子的话,写起来和读起来都会更容易。chrome扩展,其实就是一个针对chrome浏览器的插件,因此后文中我会混用“插件”、“扩展”、“扩展程序”这几个名词。另外,因为比较具体,所以有些东西的介绍可能并不全面,我会在介绍它们时附上更完整的文档等的地址,方便大家进一步了解相关内容。
Chrome扩展开发(Gmail附件管理助手)系列之〇——概述的更多相关文章
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之一——Chrome扩展的文件结构
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之四——核心功能的实现思路
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发基础教程(附HelloWorld)
1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...
- 【转发】NPAPI学习(Firefox和Chrome扩展开发 )
NPAPI学习(Firefox和Chrome扩展开发 ) 2011-11-08 14:41:02 by [6yang], 1172 visits, 收藏 | 返回 Firefox和Chrome扩展开发 ...
- 手把手教你Chrome扩展开发:本地存储篇
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
- 基于 webpack 的 chrome 扩展开发探索
起 最近利用闲暇时间在进行一款 chrome 扩展 V2EX-HELPER 的开发(如果巧遇 V 友欢迎试用),今天把它彻底改成了用 webpack 打包依赖的模式,不由得感概 webpack 的强大 ...
- chrome扩展开发实战入门之一-hellocrx
后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...
随机推荐
- Spring web.xml配置文件解析
概要解析
- MySQL 如何修改字符集 utf8 改为 utf8mb4
在实行sql server 向 mysql 迁移数据时,报错: Incorrect string value: '\xF0\x9F\x98\x8A' 原因是mysql 采用的是 utf8 的字符集,而 ...
- SQL 注入防御方法总结
SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection S ...
- Android Listener侦听的N种写法
Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用 ...
- mysql sql获取上条插入id,update影响行数
1.获取上条插入数据 LAST_INSERT_ID(); 2.获取update影响行数. ROW_COUNT(); mysql> UPDATE t -> SET address = 'be ...
- 第九章:四大组件之Broadcast Receiver
第九章:四大组件之Broadcast Receiver 一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...
- 小心sae的jvm异常导致的Error 404 – Not Found.No context on this server matched or handled this request.
本来用着sae好好的,结果第二天部署的应用突然不好使了,各种Error 404 – Not Found.No context on this server matched or handled thi ...
- ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作
问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...
- 【ASP.NET 类库】当你懒得用 Json+Ajax 时,可以试试 AjaxPro
一般我们在页面调用Ajax时,需要通过 js 调用ajax ,接着后台处理得到的数据,然后返回数据,ajax 得到返回的数据进行处理. 然而有没有可以像调用方法一样来进行Ajax操作呢? AjaxPr ...
- T-SQL 语句创建Database的SQL mirroring关系
1 证书部分:principle 和 secondary 端执行同样操作,更改相应name即可 USE master; --1.1 Create the database Master Key, if ...