CSDN.NET 付江/文 百度于去年8月份的百度世界大会上首次对外发布了旗下的WebApp开发框架Clouda,作为一款实时JavaScript框架,Clouda支持多终端在线实时同步,而Clouda App也可以被搜索引擎检索到,为广大的长尾移动应用开发者拓展了新的分发渠道。目前已经有智联招聘、景点通、冷笑话精选、贝瓦网、联想3C服务、微车违章查询、铁友网等多款典型应用接入了百度轻应用平台。
最近Clouda技术社区里的一款活跃插件CloudaMySQL引发了CSDN记者的兴趣,其基本功能是解决了基于Clouda所开发的百度轻应用使用MySQL数据库的问题。一个偶然的机会,记者接触到了 CloudaMySQL 的开发团队,并聊到了他们的创业经历、做这款插件的初衷以及对百度轻应用开发注意事项等话题,总结下来与更多的开发者分享。
辞职公务员下海创业
这个团队的创始成员包小白和王浩两人是同学,刚毕业的时候还曾合租过一间两居室。之前王浩在天津市某事业单位做公务员,两年下来,每天早九晚五一杯茶一杯报纸,安装电脑操作系统、杀毒、局域网维护等运维工作让他觉得有虚度年华的感觉,而只能在下班后磨练编程的功力。包小白则在一家私企从事针对地方门户的开发及运营工作。整体来说,包小白擅长于项目统筹与开发以及CMS的二次开发,王浩擅长于服务器运营维护及后台开发,两人的技术都还不错,闲暇之余也接一下小项目试手。
包小白在百度轻应用训练营演讲 CSDN配图
彼此间的交流让他们愈发想改变毫无朝气的生活,更想趁年轻的时候打拼一番事业,于是两人一拍即合,毅然决定辞去工作,成立网络回声工作室,从事Web相关开发以及运营工作。至目前为止,整个团队已经扩充到开发及设计人员共四名,正准备从自己的学弟学妹们入手,继续补充团队的开发人员。
工作室成立后,承接的第一个大型项目是赛迪速网站。项目包含网站页面设计与开发、网站后台管理页面设计与开发等功能,整个项目耗时三个月。现在回头来看,当时在支付接口引入时遇到的问题最多,因为各大第三方支付平台对用户体验要求都比较高,而且要求兼容从IE6到现有的所有主流浏览器,让团队花了很大功夫调试页面,也是一次很好的练手机会。
随后,网络回声工作室又承接了二百范文网轻应用的开发,这是他们所做的第一个基于百度Clouda框架的轻应用。当时百度官方推出Clouda的时间并不长,他们从接触到吃透Clouda大约用了三个多月的时间。这些时间里,他们经常熬夜调试Clouda官方提供的Examples,通读API文档及开发指南,遇到不懂的地方就在Clouda技术群里向小伙伴以及百度官方开发者们咨询。辛勤的工作得到了回报,客户对他们基于Clouda开发的二百范文网轻应用相当满意,也更增强了他们的自信。
历时两周开发出CloudaMySQL插件
自2013年12月接触到百度Clouda后,包小白和王浩就一直在社区里与其他的Clouda开发者们有着交流,当时群里大家反应比较集中的问题就是Clouda是基于Mongodb数据库的,而现在大家在跑的网站数据基本都是基于MySQL,这就导致了从PC网站迁移到Clouda轻应用只能通过第三方数据获取的办法,这使得Clouda引以为傲的联动反馈机制大打折扣。为解决这个问题,包小白和他的团队决定自行开发一个CloudaMySQL插件,帮助大家解决上述的问题。
开发CloudaMySQL,包小白和王浩大概用了两周的时间,前期遇到的一个困难就是Clouda执行流程问题,因为要想在不修改框架代码基础的情况下,开发一个第三方插件,就必须搞清楚Clouda如何操作数据库以及从数据库返回数据到最终通过联动反馈显示在客户端浏览器的执行流程问题。为此他们还专门咨询了百度官方的技术人员,通过他们的指点和自己不断的调试,最后成功的解决了这个问题。当开发思路明晰后,他们在实现时又遇到了另一个问题,基于MySQL实现的联动反馈机制会破坏原有数据,为此两人协同调试,通过对比基于Mongodb和MySQL的数据,定位到了问题产生的原因,当晚就把修改后的代码完成了。
其实CloudaMySQL插件是网络回声工作室的第二个(插件)作品。第一个作品是基于dedecmsphpcms的数据接口,然后利用Clouda读取接口来展示数据。而目前CloudaMySQL的首批用户大多也是来自于之前的老用户,毕竟他们都是使用了网络回声工作室的Clouda的专用的PHP接口。另外,借助于百度官方的推广,包小白和王浩在技术论坛上发布了教程以及演示视频,这也为他们带来了不少的用户。
百度轻应用开发的三点建议
结合自己的经验,包小白和王浩对致力于做百度轻应用的开发者们给出了自己的几点建议。
首先在设计初期,要明确轻应用的最终实现目标是要达到Native App的效果,这就要求设计人员尤其需要注意页面布局、按钮大小等充分考虑移动端的用户体验。他们在开发范文网轻应用的过程中,就碰到过以下情况,首先headline部分除了简短描述外,使用一个<a>,内容是“查看更多”,后来测试过程中发现手机屏幕大小有限,按钮不容易选择,因此他们把headline的描述部分也放到了<a>标签里。这不是一个技术问题,却对用户体验有着重要影响,其他的诸如在针对输入时候的控制,有时候其他的元素,会遮挡输入,或者被放大等。这些都是需要开发者注意的一些细节。
其次,在代码编写阶段,要尽量写完一个Controller相关的Model、Publish、View后进行单元测试。因为Clouda是基于Node,而Node是完全事件驱动、异步执行的程序语言,异步执行虽然带来了极高的吞吐量和快速的事件响应,但却与传统编程思维差别较大,需要时间适应,对嵌套了多层匿名函数的调试往往也不容易定位错误,因此,越早发现问题,越容易解决。
最后,在测试阶段,要尽可能多的使用不同型号、平台、版本基于Webkit的浏览器。只有广泛测试,才能发现细微的错误,带来更完美的用户体验。
对于百度Clouda框架的后续改进,包小白和王浩认为:(1)提供更多的端能力,如在用户允许的前提下,读取用户通信录、调用手机摄像头、麦克风等,从而为轻应用提供更加丰富、多元化的能力;(2)集成百度支付接口,通过轻应用,实现用户搜索即可得,而且可以从轻应用接入的源头控制商品的质量,打造高品质的商品应用;(3)针对第三方插件开发者,提供更多的技术支持和宣传,让拥有二次开发能力的开发者为其他开发者服务,维持开发社区良好的态势和秩序。
谈到CloudaMySQL插件授权版本定价,包小白表示,从128元的定价可以看出面向群体主要是一些小型企业以及底层开发人员。免费版也能实现Clouda使用Mysql数据库的大部分功能,同时推了授权版本,只是为了维持工作室创业初期正常的运转以及对团队其他开发成员的肯定,可以激励更多外部开发者或团队加入到“Clouda第三方插件”的开发队伍中来,引导Clouda开发市场的健康发展。