目录:

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

  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. BIEE从底层表结构向上更新

    影响BIEE查询结果的几个因素: 1.数据库表结构变化后,RPD如何处理? 更新物理层 增加.删除.修改表名. 添加字段:右键点击连接池,点击导入元数据.勾掉关键字,重新导入那张表. 删除字段:直接右 ...

  2. jQuery 常用的代码片段

    1.  官网下载链接: http://jquery.com/download/ 2.  引入jquery 文件方式: (1) <script src="http://libs.baid ...

  3. jacob 实现Office Word文件格式转换

    关于jacob用法,百度一下就会发现几乎都是复制2004年一个代码,那段代码实现的是从一个目录读取所有doc文件,然后把它转html格式. 为了便习学习和使用,我把代码看懂后精简了一下,得出不少新结论 ...

  4. android linker (1) —— __linker_init()

    ilocker:关注 Android 安全(新手) QQ: 2597294287 __linker_init() 在 begin.S 中被调用,并传入两个参数:sp(堆栈指针).#0. linker( ...

  5. Load xlsx in a folder to RDBMS table with Talend

    Step 1 . Use tFileList component to get the file list. And set proper property. Step 2. Use tFileInp ...

  6. Expect 入门

    一,      Expect的作用 Expect广泛应用于交互式操作和自动化测试的场景之中,用来实现自动和交互式任务进行通信,而无需人的干预. 二,      Ubuntu安装Expect sudo ...

  7. 瓶颈生成树与最小生成树 POJ 2395 Out of Hay

    百度百科:瓶颈生成树 瓶颈生成树 :无向图G的一颗瓶颈生成树是这样的一颗生成树,它最大的边权值在G的所有生成树中是最小的.瓶颈生成树的值为T中最大权值边的权. 无向图的最小生成树一定是瓶颈生成树,但瓶 ...

  8. 如何在ZBrush中将球体演变为头发

    对于头发的制作,ZBrush®是多样的,前面的教程中也有讲解,可以用球体作为子工具,用不同笔刷进行雕刻:还可以使用Z球转网格的方式.今天小编讲述一种最简单的方法,使用球体演变头发,这样的创作手法更高效 ...

  9. 用uGUI开发自定义Toggle Slider控件

    一.前言 写完<Unity4.6新UI系统初探>后,我模仿手机上的UI分别用uGui和NGUI做了一个仅用作演示的ToggleSlider,我认为这个小小的控件已能体现自定义控件的开发过程 ...

  10. 验证码生成的c语言库

    http://www.open-open.com/lib/view/open1324534929968.html