Ajax的興起,給 Javascript帶來了新的生機(jī),大量的javascript框架(Javascript Framework)層出不窮,一些框架來至于開發(fā)人員項(xiàng)目經(jīng)驗(yàn)的總結(jié)和提煉,也有一些框架來至于商業(yè)公司,同時(shí)以開源和商業(yè)兩種方式發(fā)布。借助這些框 架,可以大大加速Ajax項(xiàng)目的開發(fā)速度,但同時(shí)也面臨不同的學(xué)習(xí)曲線,以及架構(gòu)擴(kuò)展性等等問題。如何選擇Javascript框架,成為開發(fā)人員和架構(gòu) 師頭痛的一個(gè)問題。如果你正面臨這樣的問題,希望下面的幾個(gè)建議對(duì)你在選擇javascript框架上會(huì)有所幫助。
你的項(xiàng)目需求是什么
首先要問自己這是一個(gè)什么項(xiàng)目,具體的需求是什么,是一個(gè)普通類型的網(wǎng)站還是一個(gè)在線的web應(yīng)用程序,是否需要處理大量的鍵盤和鼠標(biāo)事件,是否需要給用戶 各類高級(jí)的ajax特性,還是說只要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的異步頁面刷新和一些簡(jiǎn)單dom操作,如果是后者,則可以選擇一個(gè)相對(duì)簡(jiǎn)單的javascript框架, 封裝基本的xmlhttprequest操作和dom操作就足夠了。
瀏覽器的支持情況
不同的框架兼容的瀏覽器會(huì)有所不同,尤其是一些高級(jí)的javascript框架,對(duì)低版本的瀏覽器都不支持,還有一些框架只支持ie和firefox,對(duì)其 他瀏覽器如opera、safari不支持。所以在框架的選擇上還要考慮到系統(tǒng)的目標(biāo)用戶,如果目標(biāo)用戶都只使用ie6.0以上瀏覽器,那么在框架的選擇 上余地就更大了。
框架后面是否有一個(gè)核心的開發(fā)團(tuán)隊(duì)
很多框架往往都是個(gè)人在業(yè)務(wù)時(shí)間開發(fā)的,隨時(shí)可能停止更新,而如果后面有一個(gè)團(tuán)隊(duì),則可以在一定程度上保準(zhǔn)代碼的更新,對(duì)bug和一些問題的及時(shí)響應(yīng),同時(shí)在代碼質(zhì)量上也相對(duì)有保準(zhǔn)。
框架的成熟度
如果一個(gè)新的框架剛剛發(fā)布,使用的人往往不多,如果你貿(mào)然采用,在使用過程中遇到問題,可能要找個(gè)能幫你解決問題的人或者在網(wǎng)上找資料都顯的很難。所以在這方面也要有所考慮。
框架的發(fā)布更新頻率
一個(gè)框架有很高的發(fā)布更新頻率說明新的功能在不斷加入或者bug被fix的速度很快,反之一個(gè)框架半年都不出一個(gè)版本,基本可以說明這個(gè)框架已經(jīng)不被開發(fā)者重視,很難得到新的發(fā)展。
文檔的友好性
一個(gè)框架尤其是相對(duì)比較復(fù)雜的框架,如果沒有充分和友好的文檔,學(xué)習(xí)曲線會(huì)比較高,使用者在使用過程中往往需要通過閱讀代碼和其他外部的文章來學(xué)習(xí)怎么使用和解決一些問題。所以文檔也是很重要的一個(gè)因素。
是否有個(gè)活躍的社區(qū)
一些成功的開源框架背后往往有一個(gè)社區(qū)在支撐,大家在里面交流使用經(jīng)驗(yàn),互相幫助解決使用過程中遇到的問題。任何問題,只要在這類社區(qū)中尋求幫助,往往很快就可以得到他人的幫助。這樣的框架,即使一開始不是很成熟,也會(huì)很快發(fā)展起來。
框架的擴(kuò)展性
在 實(shí)際的項(xiàng)目過程中,往往一個(gè)特定的框架是很難直接滿足你的所有需求的,這就要求你需要去做一些定制和擴(kuò)展的工作,如果一個(gè)框架沒有很好的擴(kuò)展性,則你可能 在項(xiàng)目后期為了實(shí)現(xiàn)某個(gè)特定的需求,不得不采用另一個(gè)新的框架,大大加大了項(xiàng)目的成本。所以選擇一個(gè)有很好擴(kuò)展性,如支持plugin等機(jī)制的框架,對(duì)你 今后系統(tǒng)的擴(kuò)展會(huì)有很大的幫助。
性能和網(wǎng)絡(luò)環(huán)境
不同的系統(tǒng)在性能和功能的側(cè)重上 會(huì)有所不同,比如一個(gè)基于互聯(lián)網(wǎng)的項(xiàng)目,可能考慮更多的是要求在保準(zhǔn)性能的前提下,再來講功能,很多高級(jí)的javascript框架往往在性能上不能讓人 滿意,一部分原因是封裝了太多功能,導(dǎo)致js文件會(huì)非常大,在互聯(lián)網(wǎng)環(huán)境下,下載這個(gè)js文件就會(huì)耗去不少時(shí)間,還有就是為了保準(zhǔn)如框架的擴(kuò)展性,往往做 了多層封裝和抽象,在某種程度上其實(shí)是以犧牲部分性能為代價(jià)的。所以這樣的框架可能更適合一些intranet內(nèi)部的項(xiàng)目,而不是基于互聯(lián)網(wǎng)的項(xiàng)目。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注