如何在javascript模块中创建可混淆的变量和函数?
我有一组js文件,在编译时连接成一个唯一的文件,然后在上面运行YUI压缩程序(都在maven下) 不幸的是,文件的内容没有被混淆。就好像所有声明的变量和方法都被认为是公共的(因此不容易混淆) 例如如何在javascript模块中创建可混淆的变量和函数?,javascript,module,obfuscation,Javascript,Module,Obfuscation,我有一组js文件,在编译时连接成一个唯一的文件,然后在上面运行YUI压缩程序(都在maven下) 不幸的是,文件的内容没有被混淆。就好像所有声明的变量和方法都被认为是公共的(因此不容易混淆) 例如a.js使用b.js中声明的方法。连接文件的内容为: (function() { // b.js' content... // a.js' content... (function() { // Some var and methods of a decla
a.js
使用b.js
中声明的方法。连接文件的内容为:
(function() {
// b.js' content...
// a.js' content...
(function() {
// Some var and methods of a declared here
$(document).ready(function(){
// Calls some a.js and b.js methods
...
});
})();
})();
b.js
的函数和变量在b.js
文件中定义如下:
var B1 = "Some text";
var B2 = "More text";
...
function MyPrivateMethod1() { ... };
function MyPrivateMethod2() { ... };
a.js
的方法是模糊的,但b.js
的方法是模糊的。我可以看到B1
,B2
,MyPrivateMethod1
,MyPrivateMethod1
。。。在连接的文件中,我找不到a.js
的变量和方法(名称已被混淆)
如何在连接的文件中混淆
b.js
的var和方法?(REM:我需要将b.js
作为一个单独的文件保存)。我找到了一个解决方案,但我不确定它是否是最好的。我在函数中移动了b.js
的代码:
var dummy = function() {
var B1 = "Some text";
var B2 = "More text";
...
var MyPrivateMethod1 = function() { ... };
var MyPrivateMethod1 = function() { ... };
...
function MyPublicMethod1() { ... };
function MyPublicMethod2() { ... };
...
}
出于好奇:为什么要混淆?为什么不将a.js和b.js的内容打包到一个闭包中,或者使用名称间隔模式来处理全局变量?@RoToRa-@Wojciech如何将a.js和b.js的内容打包到一个闭包中?(对不起,我还是Javascript新手)@RoToRa我想让那些想保留一些代码的人感到痛苦,我可以为可读性付出代价。