javascript混淆器是否适用于AngularJS?

use*_*486 11 javascript obfuscation angularjs

有像http://www.javascriptobfuscator.com/Default.aspx这样的javascript混淆器.他们处理简单的JavaScript代码.但他们会处理更复杂的前端AngularJS代码,它可能有几个控制器,服务,模块的文件?

StackOverflow上有经验的程序员使用什么工具来混淆他们的AngularJS代码?或者你完全没有,因为无法混淆前端代码?

Mat*_*est 19

您可以使用像Uglify或Closure Compiler这样的工具来缩小和混淆AngularJS代码,但由于Angular能够根据所用变量的名称注入依赖项(当您缩小或混淆代码时都会更改),因此它会变得棘手).

您需要使用定义模块,控制器等的数组形式.它在Angular教程的第5步中的"缩小注释"部分中进行了解释:https://docs.angularjs.org/tutorial/step_05

基本上,如果您当前正在使用依赖注入的简写方法,即:

myApp.controller('myController', function($scope, $http) { ... });
Run Code Online (Sandbox Code Playgroud)

您需要将其更改为更详细的基于数组的方法:

myApp.controller('myController', ['$scope', '$http', function($scope, $http) { ... }]);
Run Code Online (Sandbox Code Playgroud)

这样你就可以使用字符串告诉angular要使用字符串注入函数的对象,这些字符串在缩小过程中不会被更改,而不是依赖于$ scope和$ http变量本身的名称.

有一个名为ngmin的命令行工具,如果您不想修改代码库,它将自动为您进行这些更改:https://github.com/btford/ngmin

ngmin自述文件的"概念概述"部分也对此问题有了很好的解释.

  • @MattGuest'uglify'或'Closure Compiler'不会混淆AngularJS Code或其他任何代码,它们只会缩小. (4认同)