【发布时间】:2011-08-07 14:17:00
【问题描述】:
我有一些格式如下的代码:
function myfunc1 () { ... jquery.bind('click', myfunc2) ... }
function myfunc2 () { ... }
...
是的,这些函数是全局的,但没关系,因为我是在 google chrome 扩展内容脚本中编写的,所以它是沙盒的。
现在,我正在尝试缩小和混淆代码。我试过 YUI Compressor 和 Google Closure 编译器。问题是,我不知道如何缩小/混淆全局函数名称。使用 YUI,它不会缩小全局变量以防它们被外部调用。在高级模式下使用 Closure,它似乎可以重命名全局变量,但是我在删除死代码时遇到了问题。大多数函数似乎已经死了,因为它们依赖于 DOM 交互和事件处理并且没有被直接调用。
那么关于如何缩小这些全局变量的任何想法?我是否需要编写一个脚本来进行一些正则表达式替换?如果我的代码更适合缩小模式(例如,添加到闭包或诸如此类),我也愿意重构我的代码
【问题讨论】:
-
添加闭包应该可以解决您的问题。您还可以互换使用术语函数和变量,这是不应该的。
-
所以假设我使用了闭包。那么它会是什么样子呢?
function clo () { function myfunc1 () {...jquery.bind('click', myfunc2)...} function myfunc2 () {} }?我会在 bind、this.myfunc2 或只是 myfunc2 中说什么?
标签: javascript yui obfuscation google-closure-compiler minify