abstrak:折騰過(guò) KISSY 類庫(kù),簡(jiǎn)單說(shuō)幾點(diǎn):1. 開(kāi)發(fā) KISSY 之前,淘寶使用的是 YUI2 類庫(kù)。但從 2009 年開(kāi)始,YUI2 在逐步退出歷史舞臺(tái),YUI 團(tuán)隊(duì)的大部分精力都投入到 YUI3 的開(kāi)發(fā)中去了。從當(dāng)時(shí)的情況來(lái)看,YUI2 前途堪憂,YUI3 則還不夠成熟,并且 YUI3 的定位(大而全的框架型類庫(kù))不適合淘寶的前臺(tái)業(yè)務(wù)場(chǎng)景(以瀏覽型為主的展現(xiàn)頁(yè)面)。2. 我自己是力推 jQuery
折騰過(guò) KISSY 類庫(kù),簡(jiǎn)單說(shuō)幾點(diǎn):
1. 開(kāi)發(fā) KISSY 之前,淘寶使用的是 YUI2 類庫(kù)。但從 2009 年開(kāi)始,YUI2 在逐步退出歷史舞臺(tái),YUI 團(tuán)隊(duì)的大部分精力都投入到 YUI3 的開(kāi)發(fā)中去了。從當(dāng)時(shí)的情況來(lái)看,YUI2 前途堪憂,YUI3 則還不夠成熟,并且 YUI3 的定位(大而全的框架型類庫(kù))不適合淘寶的前臺(tái)業(yè)務(wù)場(chǎng)景(以瀏覽型為主的展現(xiàn)頁(yè)面)。
2. 我自己是力推 jQuery 的。但由于歷史原因,阿里系對(duì) jQuery 的成見(jiàn)很深,認(rèn)為其接口太靈活,不利于團(tuán)隊(duì)協(xié)作,以及其插件質(zhì)量良莠不齊,社區(qū)不如 YUI 健壯。2008 年在淘寶前端內(nèi)部爭(zhēng)辯過(guò) jQuery,可惜我沒(méi)堅(jiān)持,沒(méi)推廣成功。
3. 但當(dāng)時(shí)不少新人都喜歡 jQuery 的 API 風(fēng)格,jQuery 社區(qū)也發(fā)展得越來(lái)越好。我自己也是個(gè)鐵桿 jQuery API fans. 因?yàn)榍皟牲c(diǎn)原因,2009 年在開(kāi)發(fā) KISSY Editor 時(shí),底層雖然是基于 YUI2 的,但我逐步已經(jīng)做了很多替換封裝,實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的雜糅了 YUI2 和 jQuery API 風(fēng)格的底層類庫(kù),這就是 KISSY 的原型。
4. 接下來(lái)是技術(shù)驅(qū)動(dòng)的一段時(shí)期,2010 年基于 KISSY core 寫(xiě)了 Switchable、Suggest 等在淘寶被大量使用的 UI 組件,一下來(lái)就推廣開(kāi)來(lái)了。(中間 YUI2 和 KISSY 并存了很長(zhǎng)時(shí)間)
5. KISSY 進(jìn)一步發(fā)展,得益于核心開(kāi)發(fā)成員承玉的加盟。2011 年后,KISSY 從 KISS 的定位,逐步演化成了立足于淘寶、力爭(zhēng)大而全、同時(shí)可定制的一個(gè)類庫(kù)。承玉做的非常不錯(cuò),還有龍藏的 Flash 組件等,以及仿 YUI3 Gallery 的組件貢獻(xiàn)模式,這些讓 KISSY 成為了適合淘寶業(yè)務(wù)的最佳類庫(kù)。
上面說(shuō)了這么多,總結(jié)下與樓主的問(wèn)題相關(guān)的幾點(diǎn):
1. 選擇什么類庫(kù),抑或自己開(kāi)發(fā),跟團(tuán)隊(duì)的技能傾向有關(guān)。如果雅虎和阿里沒(méi)關(guān)系,或許阿里就不會(huì)這么雅虎味,或許也就不會(huì)對(duì) jQuery 有成見(jiàn),或許現(xiàn)在壓根兒就沒(méi) KISSY 什么事。
2. 類庫(kù)的選擇離不開(kāi)業(yè)務(wù)場(chǎng)景。如果淘寶不是瀏覽型為主的網(wǎng)站,而是個(gè)個(gè)頁(yè)面都像 GMail 一樣復(fù)雜,那也許淘寶選擇的類庫(kù)會(huì)是 ExtJS 或 Google Closure 或 YUI3 等等。其實(shí)淘寶的后臺(tái)項(xiàng)目中,還真有不少是用 ExtJS 的。
3. 對(duì)于商業(yè)公司來(lái)說(shuō),類庫(kù)的重點(diǎn)不是基礎(chǔ)模塊,而是業(yè)務(wù)模塊。這里的業(yè)務(wù)模塊包括淘寶的登錄注冊(cè)等模塊,也包括 Switchable、Suggest 等泛業(yè)務(wù)模塊(比如淘寶首頁(yè)的搜索提示,看似是通用的,其實(shí)是跟淘寶的業(yè)務(wù)類型分不開(kāi)的。YUI2 也有一個(gè) Autocomplete 組件,但其龐大的體積根本不適應(yīng)淘寶)。
4. 類庫(kù)的選擇,還跟整個(gè)業(yè)界的環(huán)境和團(tuán)隊(duì)決策者的眼光相關(guān)。比如從去年開(kāi)始,前端社區(qū)越來(lái)越意識(shí)到了開(kāi)放共榮的重要性,意識(shí)到了規(guī)范的重要性。CommonJS、AMD 等等,以及 NodeJS 的興起,這一切變化,也在悄然改變著大家的抉擇。這是我開(kāi)發(fā) SeaJS 的原因。如今,我們有了更好的、更偷懶、同時(shí)更靈活的選擇和組合解決方案。
任何路都沒(méi)什么錯(cuò),關(guān)鍵是,要知道自己在哪。