1

我很想了解像 yui-compressor 这样的压缩器在压缩 js 或 css 文件时所做的所有事情,如果我想编写自己的压缩器,我需要采取哪些步骤。

4

3 回答 3

2

YUI 压缩器是用 Java 编写的(需要 Java >= 1.4)并依赖 Rhino 来标记源 JavaScript 文件。它首先分析源 JavaScript 文件以了解其结构。然后它打印出令牌流,尽可能多地省略空白字符,并在适当的替换处用 1(或 2 或 3)字母符号替换所有本地符号(面对诸如 eval 之类的邪恶功能或者,YUI Compressor 采取防御方法,不混淆任何包含 evil 语句的作用域) CSS 压缩算法使用一组经过微调的正则表达式来压缩源 CSS 文件。YUI Compressor 是开源的,所以不要犹豫查看代码以了解它的工作原理。

来源:http: //developer.yahoo.com/yui/compressor/#work

于 2012-11-16T07:47:43.057 回答
1

来自官方文档网站

" YUI Compressor 是如何工作的? YUI 压缩器是用 Java 编写的(需要 Java >= 1.4)并依赖 Rhino 来标记源 JavaScript 文件。它首先分析源 JavaScript 文件以了解其结构。然后它打印出令牌流,尽可能多地省略空白字符,并在适当的替换处用 1(或 2 或 3)字母符号替换所有本地符号(面对诸如 eval 之类的邪恶功能或者,YUI Compressor 采取防御方法,不混淆任何包含 evil 语句的作用域) CSS 压缩算法使用一组经过微调的正则表达式来压缩源 CSS 文件。YUI Compressor 是开源的,所以不要犹豫查看代码以准确了解它的工作原理。”

这里的css压缩代码 https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/CssCompressor.java

这里的js压缩代码 https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java

于 2012-11-16T07:50:49.417 回答
0

据我所知,这些是主要步骤:

  • 删除每个额外的空间(解析器不需要它们)
  • 删除回车(解析器也不需要它们)

对于 JS

  • 将变量名称替换为更短的新变量名称,当然是唯一的

编辑:拥有一个好主意的最简单方法实际上是创建一个 CSS 和 JS 并在压缩后查看差异。

于 2012-11-16T07:40:46.503 回答