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開發市場的健康發展。