Работают ли javascript obfuscators для AngularJS?

Есть обфускаторы javascript, похожие на http://www.javascriptobfuscator.com/Default.aspx. Они работают с простым кодом javascript. Но будут ли они работать над более сложным интерфейсом AngularJS, который может содержать несколько файлов для контроллеров, служб, модулей?

Какие инструменты используют опытные программисты в StackOverflow для обфускации их кода AngularJS? Или вы совсем этого не видите, потому что невозможно обфускать внешний код?

Ответ 1

Вы можете использовать такие инструменты, как Uglify или Closure Compiler, для минимизации и обфускации кода AngularJS, но может быть сложно из-за возможности Angular устанавливать зависимости на основе имени используемой переменной (что будет изменено, когда вы минимизировать или обфускать код).

Вам нужно будет использовать форму массива для определения ваших модулей, контроллеров и т.д. В разделе "Примечания по минимизации" на шаге 5 учебника Angular описано: https://docs.angularjs.org/tutorial/step_05

В принципе, если вы в настоящее время используете сокращенный метод инъекции зависимостей, то есть:

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

вам нужно изменить его на более подробный метод на основе массива:

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

Таким образом, вы сообщаете Angular, какие объекты нужно вводить в вашу функцию, используя строки, которые не будут изменены во время минимизации, вместо того, чтобы полагаться на имена самих переменных $scope и $http.

Существует инструмент командной строки ngmin, который автоматически внесет эти изменения для вас, если вы не хотите изменять свою кодовую базу: https://github.com/btford/ngmin

Раздел "Концептуальный обзор" в nmmin readme также имеет хорошее объяснение этой проблемы.