我似乎无法找到执行函数名压缩的JS minifier。例如,给定这个伪代码:
//non pure function
function test() {
//do some computations...
return <whatever>;
}
alert(test());
然后,例如,缩小到这个:
function t(){//do some computations... return <whatever>}alert(t());
到目前为止,我还没有找到任何可以进行此类压缩的JS工具。有谁知道吗?
答案 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-uglify或grunt-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代码