JS函数名称压缩

时间:2016-04-13 16:48:57

标签: javascript minify

我似乎无法找到执行函数名压缩的JS minifier。例如,给定这个伪代码:

//non pure function
function test() {
   //do some computations...
   return <whatever>;
}

alert(test());

然后,例如,缩小到这个:

function t(){//do some computations... return <whatever>}alert(t());

到目前为止,我还没有找到任何可以进行此类压缩的JS工具。有谁知道吗?

3 个答案:

答案 0 :(得分:1)

当您使用UglifyJS时,它不会破坏顶级名称或全局范围内可用的名称。

如果在命令行中打开-mt或--mangle-toplevel标志,仍然可以实现此目的,如下所示:

以下是我在您提供的演示链接中发布的一些代码:

function longfunctionname(a) {
  return function reallylongfunctionname(b) {
    return a + b;
  };
}

这是没有打开顶级修改的错误代码:

function longfunctionname(n){return function u(n){return n}}

正如您所看到的,顶级功能没有损坏,但内部功能是

到这里阅读更多内容:http://lisperator.net/uglifyjs/

答案 1 :(得分:-2)

当然!您可以使用任务运行器(即Grunt或Gulp)来协助,但您描述的过程通常被定义为&#34; uglifying&#34;或&#34; mangling&#34; JS。查看gulp-uglifygrunt-contrib-uglify即可开始使用。

编辑:根据对此答案的评论,不需要使用任务运行器,因为您可以单独使用UglifyJS

答案 2 :(得分:-2)

编写不会污染全局空间的代码的好习惯。通过包装匿名函数,代码将缩小并且不会与其他全局引用冲突。

(function (){
   function test() {
    //do some computations...
    return "something";
   }
   alert(test());
})();

如果使用--mangle运行UglifyJs,输出将如下所示

!function(){function t(){return"something"}alert(t())}();

我使用https://skalman.github.io/UglifyJS-online/来生成UglifyJs代码