3

我正在尝试了解 JavaScript 缩小和压缩过程,并对此有几个问题:

  1. 由于缩小使代码难以调试,是否可以在客户端进行按需去缩小以掩盖您实际需要在网站上调试和调查某些内容的情况?
  2. 我记得在某处读到可以通过在 Apache Web 服务器中设置一些选项来启用所有资源(如图像、CSS、JavaScript 等)的压缩。在 Apache 级别完成的 JavaScript 压缩和使用 YUI Compressor 等工具完成的压缩有什么区别吗?

有人可以帮我了解以上内容吗?

我实际上需要去缩小我的 JavaScript 文件的那种情况是假设在第 1 行发生了 JavaScript 错误。X. 对于缩小的文件,很难知道哪个代码块导致了生产中的错误,因为这些行都包含在一个缩小的文件中。在这种情况下,你们如何调查和调试?另一位用户还提到了在 IE6 中失败的打包/缩小 javascript 中的这个调试问题 - 如何调试?问题(虽然略微特定于 IE6)。

4

6 回答 6

9

您不应该调试缩小的代码。理想情况下,开发过程是这样的:

  1. 您在本地构建和调试站点。您拥有完整版本的 javascript、样式表和所有内容。

  2. 您将版本部署到生产机器。你压缩和压缩你的资产副本并将其推送到服务器。您的本地开发副本保持不变。

  3. 如果生产中出现错误,您可以修改本地版本、缩小、压缩、上传。

重复直到利润

于 2011-12-28T17:09:40.703 回答
4

如果您想调试生产代码,Chrome 开发工具可以对 javascript 代码进行去混淆(和去缩小)(在尝试在开发环境中复制您可能看不到的实时环境中的错误时很有用)

在此处输入图像描述 在此处输入图像描述

于 2011-12-28T17:27:36.950 回答
3

通常,开发人员将针对未压缩的脚本文件进行开发,在部署之前进行压缩。

如果您必须返回并调试脚本文件,您只需打开常规的未压缩文件,进行工作、压缩和部署。如果您的意思是在您的网站处于生产状态时调试某些东西,那么不,您不能按需取消缩小您的脚本文件。

是的,Apache 甚至 IIS 都可以为您自动 gzip 压缩脚本和图像。

于 2011-12-28T17:09:29.310 回答
2

由于缩小使代码难以调试,是否可以在客户端进行按需去缩小以掩盖您实际需要在网站上调试和调查某些内容的情况?

有点。缩小的 javascript 具有相同的结构,它只是执行诸如删除多余空格和缩短变量名之类的操作。因此,您可以轻松地使代码再次可读,无论是手动还是使用脚本,但您无法恢复变量名,因此代码仍然难以使用。所以,如果你有原始代码,绝对不要摆脱它。单独保存缩小的代码。

我记得在某处读到可以通过在 Apache Web 服务器中设置一些选项来启用所有资源(如图像、css、javascript 等)的压缩。

是的,它被称为 gzip 压缩。它不是 apache 独有的,但您需要配置您的服务器以启用它。

在 Apache 级别完成的 javascript 压缩和使用 YUI Compressor 等工具完成的压缩有什么区别?

是的。YUI 压缩器是一个压缩器 - 输出是有效的 javascript。服务器端压缩更类似于压缩文件 - 浏览器必须先对其进行解码才能使用它。将两者一起使用将产生最小的文件大小。

于 2011-12-28T17:14:45.630 回答
1
  1. 我更喜欢使用 JS 文件的本地未压缩副本,当我部署站点时,我会将所有 JS 文件压缩为一个。这样就很容易调试和改进代码。但是,有一些工具可以恢复缩小。看看这篇关于还原 JavaScript 缩小的SO 帖子。
  2. 看看 GZIP 压缩 -这个博客描述了如何在 Apache 中启用 GZIP 以及如何验证您的服务器实际上正在压缩文件。
于 2011-12-28T17:11:02.923 回答
1

是否可以在客户端进行按需去最小化

一些浏览器有一个“漂亮的代码”视图,可以自动格式化源代码。请参阅 Firebug 的 CSS 选项卡。

在 Apache 级别完成的 javascript 压缩和使用 YUI Compressor 等工具完成的压缩有什么区别?

YIU Compressor 实际上是一个缩小器。Apache 压缩就像在将文件发送到客户端之前对文件进行 ZIP 压缩,因此发送的实际文件比磁盘上的文件小。它们是两种相互独立的不同技术。

于 2011-12-28T17:11:06.253 回答