javascript
AngularJS 学习
?
1.專訪AngularJS框架創(chuàng)始人Misko Hevery:讓W(xué)eb開發(fā)更便捷
http://www.csdn.net/article/2013-10-08/2817118-AngularJS-Framework-Google
?
AngularJS是一款開源的JavaScript MV*(MVW、MVVM、MVC)框架,目前由Google維護。AngularJS彌補了HTML在構(gòu)建應(yīng)用方面的不足,其通過使用標(biāo)識符(directives)結(jié)構(gòu),來擴展Web應(yīng)用中的HTML詞匯,使開發(fā)者可以使用HTML來聲明動態(tài)內(nèi)容,從而使得Web開發(fā)和測試工作變得更加容易。
官方網(wǎng)站:http://angularjs.org/
AngularJS最初由Mi?ko Hevery和Adam Abrons于2009年開發(fā),后來成為了Google公司的項目。
CSDN記者采訪了AngularJS的創(chuàng)始人之一Misko Hevery,請他來為我們介紹一下AngularJS項目開發(fā)背后的故事。
CSDN:請先介紹一下您的經(jīng)歷!
Misko:加入Google公司之前,我曾在Intel、Xerox(施樂)、Sun和Adobe公司工作過,主要從事數(shù)據(jù)庫/后端方面的工作。加入Google公司后,我開始轉(zhuǎn)向自動化測試,這個工作的主要目的是改進Google的開發(fā)者工作效率,從而改善代碼庫。
我之前并不太熱衷于JavaScript,直到我的老板讓我涉足這一領(lǐng)域,并讓我研究關(guān)于JavaScript的所有知識。
CSDN:講講AngularJS開發(fā)背后的故事,當(dāng)初為什么發(fā)起這個項目?
Misko:AngularJS最初是作為一個編外項目(side project),當(dāng)時我想去看看是否有可能讓W(xué)eb設(shè)計師(非開發(fā)者)只使用HTML標(biāo)簽來創(chuàng)建簡單的應(yīng)用程序。隨著時間的推移,AngularJS演變成了一個全面的開發(fā)框架。
2010年是一個轉(zhuǎn)折點,當(dāng)時我正參與Google Feedback的開發(fā)。我們使用GWT進行開發(fā),比較郁悶的是,開發(fā)速度和項目的進展比較緩慢。我意識到,我的這個編外項目也許可以讓這個產(chǎn)品的構(gòu)建過程快一些。隨后,我將17K大小的基于GWT的應(yīng)用程序使用JavaScript進行了重寫,且代碼只有1500行。這引起了很多人的重視,公司也開始資助我們?nèi)氶_發(fā)AngularJS。
CSDN:AngularJS的設(shè)計理念是什么?靈感來自于什么?
Misko:AngularJS遵循的設(shè)計理念是——構(gòu)建UI應(yīng)該是聲明式的。
靈感來自于我之前在Adobe公司所從事的FLEX方面的工作。但是我還想要有大量的聲明式UI,這也是AngularJS中標(biāo)識符(directives)想法的靈感來源。
CSDN:AngularJS是如何實現(xiàn)這一理念的?
Misko:我發(fā)現(xiàn)大多數(shù)人開始一個新東西時,往往會從他想到的有可能實現(xiàn)的方面入手,然后圍繞它創(chuàng)建一個框架。而我更傾向于從我想要的東西入手,我認為某個想法很棒,就會朝著這個目標(biāo)不斷努力,直到實現(xiàn)它。起初,一些想法看似無法實現(xiàn),但是隨著時間的推移,你的一些技能也許可以讓它變成可能。
例如:我想要實現(xiàn)不那么突兀的數(shù)據(jù)綁定,也就是說任何對象都可以進行數(shù)據(jù)綁定。但是當(dāng)一個對象發(fā)生變化時,無法使用JS來獲取通知。這樣一來,大多數(shù)人就會認為這是無法實現(xiàn)的,他們會讓你使用getter/setters來代替字段訪問。
CSDN:AngularJS的設(shè)計目標(biāo)是什么?
Misko:首要目標(biāo)是,使Web應(yīng)用開發(fā)更容易,并在這個過程中使Web變得更強。
第二個目標(biāo)是,向人們展示以這種方式來構(gòu)建Web應(yīng)用程序也是可能的。此外,還希望向人們傳達一些關(guān)于測試、聲明式UI和依賴注入方面的知識。
CSDN:AngularJS項目的開發(fā)人員有幾名?
Misko:最初AngularJS項目團隊只有Adam Abrons和我兩個人。但自從Google公司接管了這個項目后,目前團隊人數(shù)已經(jīng)達到了15人。
CSDN:你們是如何解決AngularJS開發(fā)過程中遇到的困難的?
Misko:考慮你想要實現(xiàn)的東西,然后朝著這個目標(biāo)努力。你或許不會得到一個非常理想的結(jié)果,但是這樣會比你一開始就以能夠?qū)崿F(xiàn)作為目標(biāo)的結(jié)果要更好。
CSDN:AngularJS限定不能超過2000個綁定對象,有人將它視為編寫大型應(yīng)用的限制,對此您怎么看?
Misko:這不是一個硬性限制。要知道,Angular應(yīng)用程序的性能與對象綁定數(shù)量呈線性關(guān)系。綁定的對象越多,應(yīng)用程序的速度會變得越慢。
對于2000個的限制,我的看法是,這是你能夠在一個頁面上展示給用戶的所有東西的數(shù)量限制。通過這個限制,刷新頁面的時間可以減少到5ms以下。因此,性能的主要限制因素是人,而不是計算機。
CSDN:介紹一下AngularJS的dirty-checking機制?其性能如何?
Mi?ko:Dirty-checking是我們用來檢測對象的變化的。我們僅在模型可能發(fā)生變化時運行它。這是一個事件驅(qū)動系統(tǒng)。
性能方面,如果對象的比較過程相對簡單,那么進行1000次比較,在現(xiàn)代瀏覽器上可能只需要一兩毫秒,所以性能真的不是一個問題。正如前面所提到的,性能的限制因素是人。
此外,這樣做的好處是,你能夠為你的模型使用純老式的JavaScript對象。
CSDN:哪些應(yīng)用適合使用AngularJS?哪些不適合使用?
Misko:AngularJS可以很好地用來開發(fā)表單/報表類的應(yīng)用程序,而這類應(yīng)用程序在Web中所占比例高達90%。而如果你想構(gòu)建一個照片編輯類的應(yīng)用,你可能不會想去使用AngularJS。
CSDN:Angular的未來會如何發(fā)展?
Misko:我們希望未來AngularJS能夠更好地與Web標(biāo)準(zhǔn)看齊。我們還打算將AngularJS分解成大量的小型庫,你可以將這些庫集合起來使用,也可以單獨使用某些庫。
CSDN:對于前端開發(fā)者,你有什么建議?
Misko:嘗試去開發(fā)一些偉大的網(wǎng)站,讓W(xué)eb變得更美好。
?
總結(jié)
以上是生活随笔為你收集整理的AngularJS 学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML标签_01
- 下一篇: Linux进程与线程的区别