【问题标题】:organizing javascript files for better obfuscation组织 javascript 文件以更好地进行混淆
【发布时间】:2012-04-24 20:53:33
【问题描述】:
utilities.js:
function log(message)
{
....
}

module1.js
YAHOO.util.Event.onDOMReady(function()
{
  log("module1 is loaded");
});

module2.js
YAHOO.util.Event.onDOMReady(function()
{
  log("module2 is loaded");
});

对于页面请求,我会先加载 utility.js,然后再加载 module1.js 和 module2.js

现在,当我尝试混淆这些文件时,模块中对“日志”的引用不会被混淆,因为它是隐含的全局。

我想将模块文件分开(尽管为同一页面提供服务)以提高可读性和维护性。而且utilities.js中的函数也可以用于其他页面。

我怎样才能更好地组织这些文件以提高混淆效果?

【问题讨论】:

    标签: javascript global-variables obfuscation


    【解决方案1】:

    将您的代码置于自执行匿名函数中:

    (function(){
        YAHOO.util.Event.onDOMReady(function() {
            log("module2 is loaded");
        });
    })();
    

    因此,当您的代码混淆全局函数和变量时,它们仍将具有它们的原始名称。

    【讨论】:

    • 他会搜索你的作用域变量并混淆它们。并且没有混淆全局变量。如果在范围混淆器之外定义的函数日志不会触及它们
    • 你不能那样做。如果您将日志放在一个不返回任何内容的匿名函数中,它将只存在于该函数的范围内。
    • 这正是我不想要的,我希望混淆器解决“日志”功能并在那里通过混淆它。
    【解决方案2】:

    我个人喜欢使用RequireJS:http://requirejs.org/

    它是一个加载模块的框架,您可以返回一个集合或对象来使用,并将所有模块保存在单独的范围内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      相关资源
      最近更新 更多