2014-05-03 152 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