极简化

维基百科,自由的百科全书

极简化(另称缩小化),在程式语言 (尤其是 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). 

参见[编辑]

外部链接[编辑]