目录:

零、为什么会有这一套博文

  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中附件很多,分散在各个邮件中,希望能有一款插件,通过它来统一查看、批量下载、在建立新邮件时从中批量选择附件并插入,而不必手动搜索并下载重新上传。

二、目标功能

  开发开始之前,有必要搞清楚我们具体要实现的每一个功能(否则开发过程没有清晰的目标,就很难进行)。那么,我们的插件需要拥有的几项基本的功能如下:

  1. 能够获取并显示用户邮箱里的全部附件;
  2. 能够单独下载列出的附件中的某个;
  3. 能够在要发送的草稿中插入列表中的某个附件。

  在这些基本的功能上,我们可以通过一次次迭代来完善功能,让用户更好地使用这个插件。具体点来说,进一步还要有(其中的一些是开发过程中才想到的或者根据用户反馈而追加的):

  1. 在附件列表中显示该附件对应的邮件标题、时间等邮件信息;
  2. 对附件列表进行按不同关键词(包括附件名称、附件大小、邮件时间等)的排序;
  3. 获取附件列表时,允许用户通过输入指定一个更小的搜索范围;
  4. 对获取到的附件列表,允许用户通过输入来过滤掉不需要的条目;
  5. 允许用户通过复选框来勾选多个附件,实现批量操作;
  6. 实现中文、英文两种版本。

三、要完成开发需要哪些知识

  有了一个大致的目标,就该进一步考虑如何实现了。首先的想法是我们要开发一个chrome扩展,那chrome扩展的开发的基本知识以及基本的前端开发知识(至少是HTML、javascript、CSS的常用语法)是需要的。其次,搜索后得知Gmail有着一套官方的比较成熟的API,供开发者调用。接下来了解到开发针对Gmail的第三方插件,需要通过OAuth2获得用户的授权,那么OAuth2的基本原理也需要了解。
因此这套博文会有如下内容:[chrome扩展开发基础知识及一些小tips和陷阱提醒。Gmail API的简单介绍、包括tips和陷阱提醒。对OAuth2的理解。chrome扩展的i18n方法和技巧。]

其中每篇我都结合GmailAssist的具体开发过程来写,因为很多知识点有具体例子的话,写起来和读起来都会更容易。chrome扩展,其实就是一个针对chrome浏览器的插件,因此后文中我会混用“插件”、“扩展”、“扩展程序”这几个名词。另外,因为比较具体,所以有些东西的介绍可能并不全面,我会在介绍它们时附上更完整的文档等的地址,方便大家进一步了解相关内容。

Chrome扩展开发(Gmail附件管理助手)系列之〇——概述的更多相关文章

  1. Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  2. Chrome扩展开发之一——Chrome扩展的文件结构

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  3. Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  4. Chrome扩展开发之四——核心功能的实现思路

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  5. Chrome扩展开发基础教程(附HelloWorld)

    1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...

  6. 【转发】NPAPI学习(Firefox和Chrome扩展开发 )

    NPAPI学习(Firefox和Chrome扩展开发 ) 2011-11-08 14:41:02 by [6yang], 1172 visits, 收藏 | 返回 Firefox和Chrome扩展开发 ...

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

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

  8. 基于 webpack 的 chrome 扩展开发探索

    起 最近利用闲暇时间在进行一款 chrome 扩展 V2EX-HELPER 的开发(如果巧遇 V 友欢迎试用),今天把它彻底改成了用 webpack 打包依赖的模式,不由得感概 webpack 的强大 ...

  9. chrome扩展开发实战入门之一-hellocrx

    后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...

随机推荐

  1. n&(n-1) n&(-n)

    n&(n-1)   n&(-n) n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子:n = 10100(二进制),则(n-1) = 10011 = ...

  2. MYSQL性能调优: 对聚簇索引和非聚簇索引的认识

    聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法.特点是存储数据的顺序和索引顺序一致.一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引. 在<数据库原理&g ...

  3. Effective Java 05 Avoid creating unnecessary objects

    String s = new String("stringette"); // Don't do this. This will create an object each tim ...

  4. PHP扩展开发相关总结

    1.线程安全宏定义 在TSRM/TSRM.h文件中有如下定义 #define TSRMLS_FETCH() void ***tsrm_ls = (void ***) ts_resource_ex(0, ...

  5. 大数据公益课堂成就你高薪之梦,30W,50W,100W...

    从之前的知道“大数据”这词,到2013年正式开始了解大数据领域,再到2014年深入研究大数据相关的领域,到现在逐渐影响周围的同学.朋友和家人.大数据技术将给我们带来的远不止我们想到的这些.曾经我身边的 ...

  6. poj 2195 KM算法

    题目链接:http://poj.org/problem?id=2195 KM算法模板~ 代码如下: #include "stdio.h" #include "string ...

  7. Git操作指令进阶

    注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站 ...

  8. top命令使用详解

    1.top命令查看服务器负载情况,CPU使用率,进程数等信息. 0.0% wa IO等待占用CPU的百分比 86.9% id  表示空闲的CPU占比 load average数据是每隔5秒钟检查一次活 ...

  9. Sample: Write And Read data from HDFS with java API

    HDFS: hadoop distributed file system 它抽象了整个集群的存储资源,可以存放大文件. 文件采用分块存储复制的设计.块的默认大小是64M. 流式数据访问,一次写入(现支 ...

  10. linux网络相关配置文件

    linux系统一般来说分为两大类:1.RedHat系列:Redhat.Centos.Fedora等:2.Debian系列:Debian.Ubuntu等. linux系统中,TCP/IP网络是通过若干个 ...