專訪AngularJS框架創始人Misko Hevery:讓Web開發更便捷

csdn發表於2013-10-09

  AngularJS是一款開源的JavaScript MV*(MVW、MVVM、MVC)框架,目前由Google維護。AngularJS彌補了HTML在構建應用方面的不足,其通過使用識別符號(directives)結構,來擴充套件Web應用中的HTML詞彙,使開發者可以使用HTML來宣告動態內容,從而使得Web開發和測試工作變得更加容易。

  AngularJS最初由Miško Hevery和Adam Abrons於2009年開發,後來成為了Google公司的專案。

  CSDN記者採訪了AngularJS的創始人之一Misko Hevery,請他來為我們介紹一下AngularJS專案開發背後的故事。

專訪AngularJS框架創始人Misko Hevery:讓Web開發更便捷

  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機制?其效能如何?

  Misko:Dirty-checking是我們用來檢測物件的變化的。我們僅在模型可能發生變化時執行它。這是一個事件驅動系統。

  效能方面,如果物件的比較過程相對簡單,那麼進行1000次比較,在現代瀏覽器上可能只需要一兩毫秒,所以效能真的不是一個問題。正如前面所提到的,效能的限制因素是人。

  此外,這樣做的好處是,你能夠為你的模型使用純老式的JavaScript物件。

  CSDN:哪些應用適合使用AngularJS?哪些不適合使用?

  Misko:AngularJS可以很好地用來開發表單/報表類的應用程式,而這類應用程式在Web中所佔比例高達90%。而如果你想構建一個照片編輯類的應用,你可能不會想去使用AngularJS。

  CSDN:Angular的未來會如何發展?

  Misko:我們希望未來AngularJS能夠更好地與Web標準看齊。我們還打算將AngularJS分解成大量的小型庫,你可以將這些庫集合起來使用,也可以單獨使用某些庫。

  CSDN:對於前端開發者,你有什麼建議?

  Misko:嘗試去開發一些偉大的網站,讓Web變得更美好。

相關文章