專(zhuān)訪七樂(lè)康高級(jí)技術(shù)總監(jiān)曲毅:記事本、代碼和Crow5
原創(chuàng)曲毅:七樂(lè)康高級(jí)技術(shù)總監(jiān),曾在高陽(yáng)、空中網(wǎng)、樂(lè)蜂網(wǎng)等互聯(lián)網(wǎng)公司擔(dān)任構(gòu)架師,高級(jí)技術(shù)經(jīng)理,技術(shù)總監(jiān)等職位。近4年專(zhuān)注移動(dòng)互聯(lián)網(wǎng)。是國(guó)內(nèi)資深 HTML5專(zhuān)家和研究者,對(duì)HTML5技術(shù)有非常深刻的認(rèn)識(shí)和理解,有著豐富的實(shí)踐經(jīng)驗(yàn),是HTML5引擎Crow5的創(chuàng)造者。
許多程序員都想成為技術(shù)大咖,所以他們開(kāi)始活躍于各大論壇博客汲取知識(shí),后來(lái)他們自己也寫(xiě)博客,再后來(lái)看國(guó)外的技術(shù)博客,翻譯國(guó)外的文獻(xiàn)……其實(shí)我們有時(shí)候只需要專(zhuān)注于事情本身—寫(xiě)好代碼。在Facebook的面試中有一個(gè)環(huán)節(jié)叫做白板編程,一支筆、一塊白板、一道題目讓編程回到最原始的狀態(tài)。然而當(dāng)筆者的朋友拿起筆寫(xiě)下***個(gè)[]時(shí)就放棄了,他說(shuō):“這不舒服,非常難受。”隨著代碼編輯器的功能越來(lái)越強(qiáng)大和完善,高亮、補(bǔ)全成為了常態(tài)。在這樣的情況下,如果要手寫(xiě)一個(gè)引擎就足以讓大多數(shù)人望而卻步了。
Crow5引擎
樂(lè)蜂網(wǎng)是國(guó)內(nèi)知名的電商網(wǎng)站,其移動(dòng)端的Android,Iphone,Ipad和m.lefeng.com都有Crow5的影子。
Crow5引擎由40多個(gè)插件和模塊組成,其中比較重要的模塊有,HTML代碼約定模塊,交互抽離模塊,數(shù)據(jù)封裝模塊,數(shù)據(jù)驅(qū)動(dòng)模塊,加密混淆模塊,插件管理器,加速器,URL攔截器,動(dòng)畫(huà)控制器,緩存控制器,超時(shí)監(jiān)聽(tīng)器,模版控制器,請(qǐng)求發(fā)送管理模塊,按需加載管理器。處理機(jī)制主要有,約定編程機(jī)制,數(shù)據(jù)驅(qū)動(dòng)機(jī)制,模版引擎飄移機(jī)制,心跳保持機(jī)制等數(shù)十種處理機(jī)制。
技術(shù)層面上,以前需要各自獨(dú)立開(kāi)發(fā)的android和iphone還有webapp需要三種語(yǔ)言,三個(gè)團(tuán)隊(duì)去開(kāi)發(fā)。采用引擎技術(shù)以后只需要按照引擎的方式 編寫(xiě)一個(gè)webapp的方式。引擎會(huì)自動(dòng)去適配android和iphone開(kāi)發(fā)人員無(wú)需過(guò)度去考慮語(yǔ)言的問(wèn)題,降低了開(kāi)發(fā)的人力投入,而且在維護(hù)上,只 需要維護(hù)一個(gè)版本全平臺(tái)覆蓋同步更新,還可以不用發(fā)包。由于引擎是采用約定的設(shè)計(jì)模式,所以編寫(xiě)代碼都不需要太多的手敲,只需要按照約定寫(xiě)配置文件,代碼 由引擎自動(dòng)生成。這樣大大的簡(jiǎn)化了開(kāi)發(fā)。而且也不用考慮編寫(xiě)風(fēng)格問(wèn)題。
這樣的一個(gè)引擎完全誕生在記事本中。
誕生于記事本中的Crow5
隨著時(shí)間人的記憶和很多東西都會(huì)遺忘,有些東西一旦長(zhǎng)時(shí)間被擱置就會(huì)被徹底遺忘,但是形成動(dòng)作,記憶就會(huì)變得牢固。
七樂(lè)康高級(jí)技術(shù)總監(jiān)Crow5引擎作者曲毅告訴筆者“在他上大學(xué)的時(shí)候,學(xué)校有強(qiáng)制要求在大一大二的時(shí)候不準(zhǔn)買(mǎi)電腦,也就是在那個(gè)時(shí)候養(yǎng)成了抄書(shū),背代碼的習(xí)慣。這不僅讓基本功更加扎實(shí),而且在查Bug時(shí)敏感度和效率會(huì)非常非常高,如果使用工具的話就是等待工具的結(jié)果,長(zhǎng)期使用記事本完全靠眼睛就能思考。”
雖然曲毅喜歡或者習(xí)慣了在記事本上寫(xiě)代碼,但是Crow5的初衷卻是少寫(xiě)代碼。許多程序員可能都會(huì)有這樣的感受:做了很多頁(yè)面,雖然每個(gè)頁(yè)面不一樣但是東西基本上都差不多,做了許多重復(fù)的勞動(dòng)。
曲毅告訴記者:“我自己覺(jué)得寫(xiě)重復(fù)的代碼特別痛苦,己所不欲勿施于人,這正是我開(kāi)發(fā)Crow5引擎的初衷。”
除此之外讓一個(gè)做了好多年Java的人去學(xué)JS其實(shí)會(huì)有很多方面不適應(yīng),比如說(shuō)Java是塊級(jí)作用率,JS是函數(shù)級(jí)作用率。于是他開(kāi)始考慮如何讓一個(gè)后端的人去寫(xiě)JS,這也是Crow5引擎的意義。
靈感源于生活
前面提到,Crow5引擎處理機(jī)制主要有,約定編程機(jī)制,數(shù)據(jù)驅(qū)動(dòng)機(jī)制,模版引擎飄移機(jī)制,心跳保持機(jī)制等數(shù)十種處理機(jī)制。就像里爾克的長(zhǎng)詩(shī)《杜伊諾哀歌》始寫(xiě)于1912年,只寫(xiě)了兩三首,擱筆10年,直到1922年2月,好像一夜間猛醒,隨即在一個(gè)月內(nèi)完稿。想實(shí)現(xiàn)十幾種處理機(jī)制也需要等著靈感到來(lái)。
曲毅提到:“其實(shí)沒(méi)有那么神奇,其實(shí)有很多時(shí)候不知道該怎么做,就像剛才提到的心跳保持,就是在看《動(dòng)物世界》時(shí)剛好講到青蛙冬眠,會(huì)在某一個(gè)恰當(dāng)?shù)臅r(shí)間醒來(lái)。所以在設(shè)計(jì)的時(shí)候我沒(méi)有一直請(qǐng)求服務(wù)器,在沒(méi)網(wǎng)的時(shí)候就是沒(méi)網(wǎng),請(qǐng)求也沒(méi)用,所以當(dāng)用戶(hù)點(diǎn)擊發(fā)現(xiàn)有網(wǎng)了再喚醒,這樣最科學(xué)效率***也最省流量。”
就像改變世界的從來(lái)不是大公司一樣,Crow5引擎最初也就打算自己用著方便,然后在團(tuán)隊(duì)內(nèi)做一個(gè)小范圍推廣。到了現(xiàn)在,隨著Crow5引擎在實(shí)際工作中得到廣泛應(yīng)用,曲毅也打算將Crow5引擎繼續(xù)完善。他告訴記者:“其實(shí)人天生就懶,其實(shí)寫(xiě)程序也一樣,以前做個(gè)論壇很復(fù)雜,現(xiàn)在只需要下一步就可以了,因此我希望Crow5可以成為沒(méi)有什么學(xué)習(xí)成本,任何人都可以使用的框架。”
結(jié)語(yǔ)
隨著代碼編輯器的各種功能不斷完善,網(wǎng)上出現(xiàn)很多類(lèi)似《不在TXT內(nèi)編程的十大理由》的文章。在這里借用詩(shī)人北島的一句話:“我們視為盛世的,也許在別人眼里正是歧路。”





















