当前位置:  开发笔记 > 编程语言 > 正文

如何模糊AngularJS代码?

如何解决《如何模糊AngularJS代码?》经验,为你挑选了1个好方法。

如何模糊AngularJS代码?我们尝试过gulp-obfuscate,但它不起作用.有人可以帮助我们吗?非常感谢!

我们这样做了

someModule.controller('MyController',[ '$scope', function($scope) {",

但是在成功获得这样的混淆代码之后

function H?????????E???????????_C?OM????????E???S??????????4() {
var H?????????E???????????_C?OM????????E???S??????????1, H?????????E???????????_C?OM????????E???S??????????2, H?????????E???????????_C?OM????????E???S??????????3;
...
H?????????E???????????_C?OM????????E???S??????????3 = H?????????E???????????_C?OM????????E???S??????????1 + H?????????E???????????_C?OM????????E???S??????????2;
return H?????????E???????????_C?OM????????E???S??????????3;

}

app-52143d391a.js中的所有angularjs代码都没有用,它返回

Uncaught Error: [$injector:nomod] Module 'client' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

跑完之后

gulp.task('obfuscate', function () {
return gulp.src('../webapp/scripts/app-*.js')
    .pipe(ngAnnotate())
    .pipe(obfuscate())
    .pipe(gulp.dest('dist'));

});

一切都好,并得到以下代码:

http://pan.baidu.com/s/1ntXuGbB

然后运行以下错误:

Uncaught TypeError:  _ 206. _ 252 is not a function(anonymous function) @ app-6c38d9a2fc.js:2
generated.js:9279Uncaught Error: [$injector:modulerr] Failed to instantiate module client due to:
Error: [$injector:nomod] Module 'client' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.4.7/$injector/nomod?p0=client

koox00.. 5

来自ngDocs:

小心:如果您计划缩小代码,您的服务名称将被重命名并破坏您的应用程序.

为了使代码在缩小后工作 ,每次使用依赖注入时都必须使用inject属性来注释组件.因此,即使变量名称更改为angular,也会知道如何使用适当的服务映射受损变量.

例如:

这里我们传递$scopewith依赖注入:

someModule.controller('MyController', function($scope) {

要使这条线工作,你必须改为:

someModule.controller('MyController',[ '$scope', function($scope) {

要么:

MyController.$inject = ['$scope'];
someModule.controller('MyController', function($scope) {

甚至更好.
使用一饮而尽-NG-注释的obsfucate任务,做所有的工作在你面前.

UPDATE

在Obsfucation之后你应该看到$ inject字符串作为它们在哪里,而这个插件也会使它们受阻.含义:

['$http', function($http) {

变为:

[ "?_?727", function( ?_?727 ) 

代替:

[ "$http", function( ?_?727 ) 

github上有一个相关的问题

我建议你使用另一个插件.有了gulp-uglify,我没有任何问题.



1> koox00..:

来自ngDocs:

小心:如果您计划缩小代码,您的服务名称将被重命名并破坏您的应用程序.

为了使代码在缩小后工作 ,每次使用依赖注入时都必须使用inject属性来注释组件.因此,即使变量名称更改为angular,也会知道如何使用适当的服务映射受损变量.

例如:

这里我们传递$scopewith依赖注入:

someModule.controller('MyController', function($scope) {

要使这条线工作,你必须改为:

someModule.controller('MyController',[ '$scope', function($scope) {

要么:

MyController.$inject = ['$scope'];
someModule.controller('MyController', function($scope) {

甚至更好.
使用一饮而尽-NG-注释的obsfucate任务,做所有的工作在你面前.

UPDATE

在Obsfucation之后你应该看到$ inject字符串作为它们在哪里,而这个插件也会使它们受阻.含义:

['$http', function($http) {

变为:

[ "?_?727", function( ?_?727 ) 

代替:

[ "$http", function( ?_?727 ) 

github上有一个相关的问题

我建议你使用另一个插件.有了gulp-uglify,我没有任何问题.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有