2014-05-03 184 views
11

http://www.javascriptobfuscator.com/Default.aspx一樣有javascript混淆器。他們使用簡單的JavaScript代碼。但是他們是否會在更復雜的前端AngularJS代碼上工作,這些代碼可能包含控制器,服務和模塊的幾個文件?JavaScript混淆器是否適用於AngularJS?

StackOverflow上有經驗的程序員使用什麼工具來混淆他們的AngularJS代碼?或者你根本就不知道,因爲不可能混淆前端代碼?

+0

只需簡化代碼即可縮短客戶端的下載時間。混淆和縮小都沒有任何好處,足以使代碼變得難以處理。 – Blender

+0

@Oriol:因爲老闆想要保護代碼免受競爭。 – user781486

+0

@Blender:但首先可能嗎? – user781486

回答

18

您可以使用像Uglify或Closure Compiler這樣的工具來縮小和混淆AngularJS代碼,但由於Angular能夠根據所使用的變量的名稱注入依賴項,所以它可能會變得棘手(當您縮小時將全部改變或者混淆代碼)。

您需要使用您的定義模塊,控制器等,它解釋了部分「上微小的注意事項」中的角教程的步驟5的陣列形式:https://docs.angularjs.org/tutorial/step_05

基本上,如果你」重新目前使用依賴注入的速記方法,即:

myApp.controller('myController', function($scope, $http) { ... }); 

您需要將其更改爲更詳細的基於陣列的方法:

myApp.controller('myController', ['$scope', '$http', function($scope, $http) { ... }]); 

通過這種方式,您可以告訴角度什麼對象使用字符串注入到函數中,在縮小期間不會更改,而不是依賴$ scope和$ http變量本身的名稱。

有一個叫ngmin是一個命令行工具,如果你不想修改你的代碼將自動爲您做出以下更改:https://github.com/btford/ngmin

的ngmin自述的「概念概述」部分也有不錯的這個問題的解釋。

+0

一個很好的解決方案yaar.Thanx很多.. –

+4

@MattGuest「醜化」或「關閉編譯」不要混淆AngularJS代碼或任何其他他們只做微小。 – RicardoGonzales

+0

這對我們來說足夠令人迷惑(確定比沒有更好;它需要一個確定的人時間來反向工程)。 – Mawg