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