3

我正在開發一個AngularJS的Web應用,我剛開始學習一段時間。我發現它非常有用,但經過幾天的工作後,我發現應用遲早會弄糟,因爲我在一個控制器中編寫了所有'後端'代碼。 該應用程序使用大量的$ http請求來獲取/發佈/刪除/從/向遠程服務器發送數據,以及以各種方式操作頁面所需的許多範圍變量。AngularJS:充分利用AngularJS的特性/結構

我查了很多教程/信息網站上AngularJS(similar questiongreat blog post例如),但我現在還不能確定如何實現我的應用程序中的一個我自己的。我想知道使用自己的服務/模塊/指令/工廠的情況通常如何?我希望稍微調整一下我的代碼,這樣一切都會變得更有條理;目前我認爲我沒有充分利用AngularJS將我的所有代碼放在一個地方,除了我的主應用程序模塊和控制器以及內置的$ http之外,沒有使用任何服務/模塊。

所以,你可以更好地理解我的問題,到目前爲止,我只用兩個JavaScript文件,第一個是app.js:

var app = angular.module('MyAppName',[]); 

,第二個是controller.js(我當然可以只使用1個文件本):

app.controller("MyController", function($scope, $http){ 
    // all my functions/variables in here 
    // I initialize them with $scope.someName = … if they are needed within this controller view. 
    // If they are not needed within view I initialize them (functions for instance) 
// as functionName = function(){}; 
} 

一切正常,因爲它應該這樣,但我認爲這種做法是不使用AngularJS的所有功能。例如:我不使用路由,我可能應該?(URL始終保持相同)。我也不使用angularJS的任何其他高級功能,例如定製服務/指令/模塊。

所以我問:我如何重構我的代碼,以便它使用更多的AngularJS功能,並保持可讀性?你什麼時候通常創建自己的服務/模塊/工廠? 我有點沒有把握AngularJS網站上的所有東西,可能是因爲我沒有足夠的知識開始發展得太早,現在我很難得到它(太過於雙向綁定,並立即開始編碼)。

任何有關這個問題的幫助表示讚賞。

編輯: OK,我知道我應該清楚一些事情:我的主要問題是得不到外界的文件夾/文件結構,但代碼結構本身。現在我有一個控制器,其中包含每個變量(30+)以及用於我的Web應用程序的功能,例如登錄功能,註銷功能,顯示/隱藏頁面部分的功能,向服務器添加/刪除數據的功能等... 我想能夠以某種方式將這些函數/變量作爲一些獨立部分來構造,但我不知道如何。

EDIT2: 我想通了如何使用服務的實例,但不幸的是,你不能叫裏面的觀點,比如與服務功能直接NG點擊......你只能調用$範圍變量這是合乎邏輯的實際。 ..不幸的是,我仍然不知道如何組織我的代碼,看起來更具可讀性和結構性

+0

你能創建一個小提琴或plunker好嗎?即使它不工作,只是爲了我們看看你在做什麼和你在哪裏做你的東西來指導你。 – glepretre

+0

這只是一個醜陋的嘗試,看看我的代碼是什麼樣的(不能複製所有的代碼,已經太多了)。嘗試着重於一個問題:函數和變量都在一個控制器中傳播,這是一個混亂.. http://jsfiddle.net/JTUTn/1/ – trainoasis

+0

也許你可以開始清理你的主範圍:我創建了一個$ scope .show對象包裝你所有的$ scope.showFoo變量,你可以嘗試使用工廠將$ scope.login作爲服務進行外部化。更新小提琴:http://jsfiddle.net/JTUTn/2/ – glepretre

回答

2

關於如何組織AngularJS代碼有很多意見。看看這些博客文章:

也有很多示例項目,在那裏,展示各種代碼組織方案。

看看角,種子工程:

https://github.com/angular/angular-seed

一種可以替代上面是角企業種子:

https://github.com/robertjchristian/angular-enterprise-seed

你沒有提到什麼後端,但也有類似的「種子」項目,演示AngularJS + [後端]的推薦代碼組織方案。舉例來說,如果你使用Express.js,你可能想看看角快遞種子:

https://github.com/btford/angular-express-seed

+0

好的答案,這個演示文稿也可能讓你感興趣:http://slid.es/jdobry/building-large-apps-with-angularjs – glepretre

+0

感謝您的時間。我的問題表明,我在代碼中組織了一些問題 - 不僅僅是文件夾/文件結構,而是如何構建我自己的代碼塊,以便我的代碼更加結構化 - 比如服務,工廠;我仍然不確定如何將這些用作我自己的。 – trainoasis

+0

添加編輯到我的問題 – trainoasis

0

數據綁定 - 角JS提供雙向綁定是數據的自動同步模型和視圖之間。 可擴展 - AngularJS是定製和可擴展的。允許您創建可定製的組件。代碼可重用性和可維護性 - AngularJS迫使你以模塊化方式編寫代碼。變量和函數只能創建到相應的組件(控制器)。提供跨控制器使用的服務和工廠實施。

兼容性 - AngularJS是所有主流瀏覽器

兼容測試 - AngularJS被設計成可測試的,這樣就可以測試你的AngularJS應用組件儘可能容易。它的核心是依賴注入,這使得它很容易測試。

http://astutejs.blogspot.in/2015/06/advantages-of-angular-js.html