极简化(另称缩小化),在编程语言 (尤其是 JavaScript) 的范畴里,指的是在不影响功能的情况下,移除所有非功能性必要之源代码字元(如:空白换行注解、以及些许的区块办识子),因为虽然它们有助于提升源代码的易读性,但在实际运行时却不是必要的部分。

极简化后的源代码特别对于在网络上传送的直译式语言(例: Javascript)有所助益,因为经过极简化之后,需要传输的资料减少了,大幅减少了传输所需的时间以及带宽;极简化后的源代码也可以被当作一种代码混淆的结果,使人不易阅读或使用,但只需依靠源代码美化器便可以把结构整理出来;极简化和常见的数据压缩也有所不同,因为极简化的源代码并不需要经过解压缩的过程便可以阅读或执行。

另外,极简化同时也是一种程序员文化:例如在 Perl 的圈子里,Perl Golf 活动的目标正是追求尽可能的极简化。

范例

举以下的 JavaScript 为例子

var array = [];
for (var i = 0; i < 20; i++) {
  array[i] = i;
}

与下面极简化后的源代码等价

for(var a=[i=0];++i<20;a[i]=i);

历史

2003年,Douglas Crockford 发表了 JSMin[1] 工具,这个版本只移除源代码中的注解以及空白字元。推出不久后,就由 YUI Compressor 接着发展。

2009年,Google 公开了它们的 Closure Toolkit,当中包括 Closure Compiler[2],一个能产出源代码对照表的简化器,以及一个称为 Closure Inspector[3] 的 Firefox 外挂。

2010年,Mihai Bazon 发表 UglifyJS[4];2012年发表重新改写的 UglifyJS2,以便加入源代码对照表支援。

源代码对照表

源代码对照表在源代码和极简化后的程式码中建立所需的对应,如此一来在除错工具中,极简化后的源代码看起来就像是原本的源代码一样。

这个对照表的格式,最早是由 Joseph Schorr 作为 Closure Inspector 极简化计划里的一个部分定立的。后续的第二、三版,更进一步减小的对照表的档案大小。

参考资料

  1. ^ JSMin. [2020-07-24]. (原始内容存档于2021-03-06). 
  2. ^ google/closure-compiler: A JavaScript checker and optimizer.. [2020-07-24]. (原始内容存档于2021-03-27). 
  3. ^ Google Code Archive - Long-term storage for Google Code Project Hosting.. [2020-07-24]. (原始内容存档于2016-12-31). 
  4. ^ uglify-js - npm. [2020-07-24]. (原始内容存档于2017-08-22). 

参见

外部链接