Po主这一年都在混百合网,试图勾搭个妹子回家过年。但该网的性能真当是差得令人发指,而且僵尸用户不少。于是乎决定试试自己抓取。

正好在关注Meteorjs,便打算用它搞定抓取和查询的工作。 然后,不出意外地,所有看起来牛逼哄哄的框架用起来都各有其蛋疼之处。

  1. 编码问题

    nodejs本身只支持utf-8,但是百合网数据源应该是gbk的,所以meteorjs自己封装的http类无法获取到正确的字符。一年前的这篇文章已作过说明,可惜一年后开发组还是没有在这上面有任何动作。

    所以从服务端向第三方请求数据还是只能用nodejs原生的方法去解决。

  2. 分页问题

    抓取了一定数量的数据后就准备查询页面了。在处理分页的时候遇到需要查询条目总数。翻遍了文档发现meteorjs的publish接口居然不能返回简单数据,必须新建一个collection,看看示例代码感觉蛋疼不已,我就分个页么,至于嘛……

这时候发现百度也出了个类似的框架cloudajs,虽然挺讨厌的,不过总归还是试试看,中文文档和“一键发布到BAE”还是挺有吸引的。最后使用感受如下:

  1. 和meteor比,clouda提供的接口有点儿啰嗦,一个是新建的model,controller等文件都要手工到package.js里注册一下,一个是publish/subscribe的接口不如meteor简洁。

  2. 分页有专门的订阅接口,不过除了名称,感觉和普通的查询接口是一样的嘛……

  3. 简单数据有专门的订阅接口,这样返回条件查询的总数就方便了很多————不过同时暴露出mongdb的一大毛病:条件查询记录数非常之慢,此时有点儿理解meteorjs在查询记录数时写那么一大坨代码的意义了……总之最后缓存了查询结果来提升响应速度。

  4. 虽然文档是中文的,但是写得马马虎虎,有些地方是错的,好些接口都得蒙着试。一定程度上影响编码的心情。最后感觉自己写的整个东西都混乱的。

  5. 自带了第三方数据抓取接口,所以对这种情况的中文支持应该比meteorjs要好。

  6. 不能用coffeescript感觉不顺手,虽然meteorjs使用coffeescript也有些问题需要注意,不过总归是能用……

  7. 缓存了查询记录数解决翻页数据响应的问题之后,页面性能问题浮上水面,同时更新数据条目与nvd3的饼图时,能发现饼图的动画明显掉帧。meteorjs是否同样问题不得而知,不过最后用express+angular做的版本不存在这个问题。

  8. 最坑爹的来了,当准备“一键部署至BAE”时,被告知“BAE资源不足……请等候下一批”!!@*#!@#&!)

    刚对百度产生的一丝丝好感瞬间荡然无存!!!!

    然后尝试想部署到自己的vps上呢,没有相关文档。而且发现在debug模式和product模式下对静态文件的处理不一致,于是fontawesome的字体文件无法正常引用……哎~~~

总结:

cloudajs比起meteorjs的确差了一截。特别在部署问题上相当不成熟。

两者都是用handlebarsjs作模板引擎,不如angular那么顺手。不过meteorjs有人写了angular的插件,cloudajs就只能呵呵了。

两者都是面向实时交互型应用的,对于po主这次的传统的查询型应用其实意义不大。所以最后po主还是用express+angular实现了一个,部署到heroku上真是轻松愉快。

最后,查询结果显示认证且有照片的用户只占8% ———— 百合果然不靠谱!


blog comments powered by Disqus

Published

04 February 2014