js压缩

266 阅读1分钟

js压缩

目的: 1.减小代码体积,加快前端资源加载速度 2.保护源代码不被被人获取

压缩过程: 1.移除无用代码

去掉所有对解析引擎来说无用的字符,包括空格、注释、换行、没有用的变量声明、函数声明等。

2.混淆代码中变量名称、函数名称等

把一些局部变量名称、函数名称等用 a, b, ...、$1, $2, ...、_1, _2, ... 之类的简略字符进行替换,达到混淆的目的。

例如:

(function () {
  var hello = 'hi';
  var print = function (str) {
    console.log(str);
  };

  print(hello);
})();
压缩后:
(function () {
  var a = 'hi';
  var b = function (c) {
    console.log(c);
  };

  b(a);
})();

3.预编译代码

把不依赖外部环境的逻辑提前进行运算,并把运算结果替换到相应的源码处,然后从源码中移除这段逻辑。

(function () {
  var hello = 'hi' + ' everyone, ';
  var count = 3 * 5;

  console.log(hello + count + ' girls');
})();
压缩后:
(function () {
  var hello = 'hi everyone, ';
  var count = 15;

  console.log(hello + count + ' girls');
})();

4.对结构进行扁平化处理

对于 js 来说,嵌套越深,执行越慢,对代码进行扁平化处理也是优化代码的一种方式。

(function () {
  var say = {
    hello: function (str) {
      console.log('hello ' + str);
    }
  };

  say.hello('everyone');
})();
压缩后:
!function(str){console.log("hello "+str)}("everyone");