个人开发者基于可编程 Web 的产品尝试:QCon 会前采访 FaWave 作者李华煜

阅读数:2303 2012 年 10 月 10 日

话题:JavaScriptQConChrome语言 & 开发架构文化 & 方法

QLeelulu(李华煜,微博@qleelulu,下面简称 lulu) 是 Chrome 著名微博插件FaWave的开发者之一,曾供职于动易网络和金山软件,目前在广州舜飞公司做数据分析系统的开发。QLeelulu 热衷于与 Web 开发相关的技术,对于.NET、Python、Node.js 一定的了解,在四年的 web 后端开发过程中一直插足于 web 前端 JavaScript 相关的开发中。本次 QCon 大会Lulu 会做关于 FaWave 的演讲。在大会举办之前,InfoQ 对 lulu 以及 FaWave 的另一位作者袁锋(网名 MK2,微博@Python 发烧友)做了一次采访。

能否讲讲“发微”的团队与创作背景?

mk2:关于我们做浏览器插件的历史,其实我们最在是在 firefox 上做浏览器插件的。我们的第一个插件,叫 s8fox,http://www.apprcn.com/s8fox.html 。代码在:http://code.google.com/p/s8hk-api/downloads/detail?name=s8fox.7z#makechanges 是我们做的一个缩短网址网站:s8.hk,目前已经消失了。

我们是嘀咕 (digu.com) 最早的一批用户,在看到嘀咕的 firefox 客户端“狐嘀” (http://www.digufox.com/) 出来后,我们就萌生了做一个嘀咕 chrome 插件客户端的想法。

于是,FaWave 的前身 "iDi" 诞生了 https://chrome.google.com/webstore/detail/ncjgjhcbpfeealhmagbonjhiggipglfh?utm_source=chrome-ntp-icon

2010 年,看到新浪微博等各大微博都蜂拥而至,于是我们就想到做一个多微博的应用。FaWave 就是这样诞生的。

至于为什么会选择了 Chrome,当时原因大概就这样两个:

  1. firefox 的客户端已经有人做了。
  2. firefox 相对于 Chrome 来说,是在太慢了!也就是说,是 chrome 的极速性能吸引了我们。
FaWave 一开始叫 “FaLang”,后来因为太敏感了,于是就改名了 FaWave 了。

lulu:FaWave 开发主要是我和我的同学 @Python 发烧友 两人完成的,因为都有正职工作,所以都是利用业余时间在开发,这就导致 FaWave 的开发进度一直都是比较缓慢的。另外因为我们都是开发人员,UI 设计能力实在是糟糕,所以 FaWave 的界面都是比较普通的。至于为什么要做这个产品,其实很简单,刚开始的时候只是很单纯的想要了解与学习 HTML5 和 CSS3 相关的技术。

为什么选择 Chrome 平台做这款插件?

lulu:上面说了刚开始做 FaWave 的时候,是为了学习 HTML5 相关的知识,而 chrome 的插件是可以直接用 HTML 与 JS 来写的,并且 chrome 对于 HTML5 的支持算是比较好的,还有一点就是在 chrome 上开发插件你不用考虑兼容其他浏览器,这对于前端开发来说是一件很幸福的事来的。

能否说一下“发微”的技术架构演进过程?

lulu:其实架构谈不上,刚开始的时候没有考虑太多,都是用最直接的 JS 来写,导致现在代码有些混乱。目前正在考虑用 seajs 和一些简单的前端 MVC 框架来对代码进行重构,并提供插件的支持,不过进度缓慢。

FaWave 还需要一些后端的数据支持,刚开始是用 Python 在提供服务的,不过后来改用 node.js 了,因为都是一些简单的数据接口,node.js 比较适合并且实现起来很快速,并且在我们一台普通的 VPS 上可以占用更少的资源。

对于“发微”这样一款应用,最大的难点在于哪里?是如何解决的?

lulu:因为 FaWave 是一款可以将内容同时发布到多个微博平台的产品,对于某些平台来说,它认为这样的产品损坏了它自身平台的利益,把内容与其他平台共享了,所以一些“开放”平台会限制我们的接口,这就要我们和开放平台之间积极沟通,甚至需要我们作出一些让步。 在技术方面的,因为是在浏览器端的,浏览器端的 JS 处理能力有限,特别是在字节流和文件的处理上,我们遇到最难搞的问题就是在浏览器端截图并且发送到微博开放平台提供的接口上。在经过长达半年的探索与尝试,最终才在 @Python 发烧友 的努力下把问题解决了。其实主要是利用 Uint8Array 和 BlobBuilder 来解决的。

“发微”以后的规划如何?

lulu:首先肯定是继续完善现在版本,提供更好的体验。而桌面版的开发我们一直都在寻找一种可以直接用 HTML 和 JS 来开发的途径,这样就可以直接将现有的代码稍作修改就可以了,可惜目前这方面的实现都不完善。另外一个是移动客户端的开发,我们最想开发的就是 Iphone 版的,不过鉴于时间和在移动端开发经验的缺少,这个进度也是非常缓慢。

mk2:我们想尝试业余开发,通过 appstore 或者 google play 的模式,通过直接收费尝试盈利。不过按照我们目前两人的空闲时间来评估,这估计遥遥无期。 无论如何,我们达到了最初的目的,学习了 HTML5 和 CSS3,还意外地学到了许多 Javascript 高级用法和 Chrome 的插件机制。 也让我们清楚地认识到,基于目前的各种开放平台,实在是不靠谱。

在本次大会上 lulu 和 mk2 还会针对此话题做深入讨论。会前会后更有机会与二人当面交流。目前大会报名已接近尾声,票量有限,欲购从速。大会网址:http://www.qconhangzhou.com。报名页面请点击这里。