使用AngularJS構建大型Web應用
AngularJS是由Google建立的一種JS框架,使用它可以擴充套件應用程式中的HTML詞彙,從而在web應用程式中使用HTML宣告動態內容。在該團隊工作的軟體工程師近日撰寫了一篇blog,分享瞭如何使用AngularJS構建大型Web應用的經驗。這些經驗對於使用其他JS框架構建大型應用的開發者也極具借鑑意義。
AngularJS的官方網站上給出了這個框架的基本使用方法,如:
- 如何引入AugularJS,從而讓你的web應用使用該框架
- 如何新增控制元件,並對其進行資料繫結
- 如何進行表單驗證
- 如何與伺服器通訊
- 如何建立可重用的元件
- 如何對元件進行本地化
- 如何讓應用可嵌入、可注入和可測試
- 另外,網站上還給出了一系列教程,跟隨這些內容,我們可以從深入淺出地逐漸對AngularJS的各種特性和用法有很好的瞭解,進而很好地開始使用這一框架。
但是,正如Brian Ford所說,官方文件中並沒有告訴開發者,當應用逐漸增長,其中包含上萬甚至幾十萬行程式碼的時候,應該如何組織和管理它,而他的blog正是對這些內容以及最佳實踐的總結。
這篇blog特別關注的是大型應用程式,作者首先給出的建議是,儘量不要讓應用變得太巨大。而應該編寫小型、功能專注的、模組化的部分,然後逐漸把它們組合起來,變得越來越大,從而構成你的應用。
接下來,Brian Ford首先講述瞭如何組織應用的結構,然後對效能、測試、工具、伺服器和構建過程做了簡要的總結。
在應用的組織結構方面,Brian Ford針對各個方面給出如下建議:
目錄:建議在根目錄中只放置index.html一個檔案,然後根據需要建立scripts、styles、views等目錄,在scripts目錄下,首先會存放app.js檔案,然後在之下又可以建立多個子目錄,如:controllers、directives、filters、services、vendor等,在其中分門別類地存放不同的內容。並且,隨著你為應用建立更多內容,也許會增加更多子目錄來存放各種檔案。
檔案:每個檔案中應該只有一件事物,這件事物可能會是控制元件、指令、過濾器或者服務等等。這會生成比較小但更專注的檔案。也有利於更好地進行測試。
模組:首先在app.js中定義和配置所有模組,如:
angular.module('yourAppName', ['yourAppDep']); angular.module('yourAppDep');
然後在模組中定義控制元件、服務等,如:
angular.module('yourAppDep').controller('MyCtrl', function () { // ... });
依賴關係:一般來說,服務、控制元件、指令等應該擁有儘可能少的依賴關係,這是非常好的軟體開發實踐,會有助於測試。API應該分層。控制元件尤其不能綜合多種不同級別的抽象。
指令:對指令使用app專用的字首,這有助於避免與第三方的元件重名。例如下面的程式碼中就用“btla”作為字首:
angular.module('yourAppDep').directive('btlaControlPanel', function () { // ... });
服務:你可以使用下面的方式宣告服務:
angular.module('yourAppDep').service('MyCtrl', function () { // ... });
模型:AngularJS作為JavaScript框架,其獨到之處就在於讓你可以完全掌控模型層。這是AngularJS的強大之處,因為應用程式的核心是你的資料,而各種應用之間的資料又有很大區別。所以Brian Ford強烈建議要仔細考慮使用和中資料,以及將會如何儲存資料。
控制器:建議控制器以“Ctrl”開頭,如:
angular.module('yourAppDep').controller('MyCtrl', function () { // ... });
除了上述內容,Brian Ford還在文章中針對效能、測試等方面給出了各種建議:
在效能方面,AngularJS應用一般會非常非常快。大多數應用不需要做任何特殊的最佳化,因此,除非你發現嚴重的效能問題,否則就應該把時間花在其他方面來改善應用。
對於大型專案來說,測試非常重要。它讓你可以自信地進行重構,而這對於保持大型專案程式碼整潔非常重要。大型應用應該既擁有單元測試,也要擁有端到端(end-to-end)測試。單元測試有助於定位問題,而端到端的測試能夠確保整個應用像期望的那樣工作。每個控制器、服務、過濾器和指令都應該擁有一系列單元測試。而應用的每個特性都應該擁有端到端的測試。
在工具方面,首先推薦使用Yeoman,從而獲得最佳實踐和很好的專案結構,另外還有AngularJS Batarang,它對於除錯和找到效能瓶頸會很有效。
在伺服器方面,你可以使用任何想要的伺服器和AngularJS協作。它只是客戶端的程式庫。我的推薦和喜歡的設定是使用Node.js加nginx。我使用nginx存放靜態檔案,使用Node.js建立RESTful的API和嵌入的(socketed)應用。對於雲提供商,我曾經成功使用過Nodejitsu 和Linode。前者會讓你更容易地部署程式,你不需要關心伺服器的環境。如果你需要對伺服器環境有更多控制,那麼Linode會讓你從底層控制虛擬機器。Linode還提供了很好的API,可以用來管理虛擬機器。
構建過程方面,我認為Angular還需要做更多改進,我在2013年最大的目標就是要對此有所貢獻。我已經發布了ngmin,希望這個工具可以最終解決為生產環境最小化AngularJS應用的問題。
……
最後,Brian Ford做出結論:AngularJS是一種非常適合編寫大型應用的JS框架。你可以直接拿來使用,它很快,並且會對組織應用的結構很有幫助。
你是否構建過大型的Web應用,是否也曾經使用過AngularJS框架,歡迎大家分享和討論。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29194811/viewspace-773887/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [譯]用AngularJS構建大型ASP.NET單頁應用(二)AngularJSASP.NET
- [譯]用AngularJS構建大型ASP.NET單頁應用(三)AngularJSASP.NET
- 如何用Flask中的Blueprints構建大型Web應用FlaskWeb
- 如何構建Vue大型應用Vue
- 使用Golang快速構建WEB應用GolangWeb
- 使用React構建大型應用的最佳實踐React
- 使用 Cloudflare 構建 Web3 應用CloudWeb
- 大型應用下的 AngularJS 效能AngularJS
- 使用Rust和WebAssembly構建Web應用程式RustWeb
- angularJS web應用SEOAngularJSWeb
- 使用 Lambda Web Adapter 在 Lambda 上 構建 web 應用WebAPT
- 構建單頁Web應用Web
- 快速學習丨使用Blazor構建Web應用BlazorWeb
- 使用Java和Spring MVC構建Web應用JavaSpringMVCWeb
- 【譯文】構建大型 Redux 應用的五個建議Redux
- 如何構建一個WEB同構應用Web
- 使用 webpack 構建應用Web
- 使用汽車應用庫構建應用
- 五、Spring Web應用程式構建SpringWeb
- 用Web Components構建單頁面應用Web
- 構建現代Web應用的安全指南Web
- 用“MEAN”技術棧開發web應用(一)AngularJs前端架構WebAngularJS前端架構
- 對話Svelte未來,Rust 編譯器?構建大型應用?Rust編譯
- 使用 jQuery UI 和 jQuery 外掛構建更好的 Web 應用程式jQueryUIWeb
- 使用 Dash 庫構建可互動的資料展示 Web 應用Web
- 使用webpack構建多頁應用Web
- 從零開始構建Web應用-PART 1Web
- [譯]構建現代Web應用的安全指南Web
- Yeoman官方教程:用Yeoman和AngularJS做Web應用AngularJSWeb
- 「譯」使用 Node 構建命令列應用命令列
- 使用 WebSocket 構建實時性應用Web
- 使用SignalR構建聊天應用程式SignalR
- 【Spring實戰】構建Spring Web應用程式SpringWeb
- HarmonyOS:基於Web元件構建網路應用(1)Web元件
- 用AngularJS開發下一代Web應用AngularJSWeb
- 使用Backbone構建精美應用的7條建議
- 嘗試通過AngularJS模組按需載入搭建大型應用(下)AngularJS
- AngularJS在大型單頁面應用中的效能優化(一)AngularJS優化