2011-12-28 155 views
3

我试图理解JavaScript缩小和压缩处理,并有几个问题对这些:JavaScript的缩小和压缩

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

有人可以帮助我了解上述情况吗?

我真的需要去缩小我的JavaScript文件的种类情况是让我们说一个JavaScript错误发生在第n行。 X.对于缩小的文件,知道哪个代码块在生产中导致该错误是非常困难的,因为这些行全部包含在缩小文件中。你们如何在这种情况下进行调查和调试?另一位用户在Packed/minified javascript failing in IE6 - how to debug?问题中也提到了这个调试问题(虽然对IE6略有特殊)。

回答

2

由于微小使得代码难以调试,是有可能 做在客户端点播去缩小到掩盖了,你确实需要调试的情况下 和调查的 东西网站?

的排序。 Minified JavaScript具有相同的结构,它只是像删除额外的空格和缩短变量名称之类的事情。因此,您可以轻松地使代码再次可读,无论是手动还是使用脚本,但无法恢复变量名称,因此代码仍然难以使用。所以,如果你有原始代码,绝对不要去掉它。分别保存缩小的代码。

我记得读书的地方,一个可以让所有 资源的压缩(如图像,CSS,Javascript代码等),通过设置在Apache Web服务器的一些选项 。

是的,它被称为gzip压缩。它不是唯一的apache,但你需要配置你的服务器来启用它。

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

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

+0

你回答了我的所有问题,因此接受了这个答案。谢谢! – peakit 2011-12-29 19:36:06

3

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

如果你必须回去调试你的脚本文件,你只需打开常规的未压缩文件,完成你的工作,压缩和部署。如果您的意思是在您的网站处于生产的情况下调试某些内容,则不需要,则无法根据需要取消缩小脚本文件。

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

+0

我喜欢现代[Rails](http://rubyonrails.org)如何处理资产。它gzips和时间戳它们。生产中没有更多的燃烧CPU。它也是缓存友好的。 – 2011-12-28 17:12:44

+0

在另一种生活中,我认为我是一个RoR开发者......在这个生活中,它是MVC,基本上是C#的Rails ......可能会更糟......:) – 2011-12-28 17:14:28

+0

@Adam,检出'OriginalSyn'的答案之一,好像Chrome可以帮助您_partially_去缩小javascript文件 – peakit 2011-12-28 17:37:55

8

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

  1. 您在本地构建和调试站点。你有完整版本的JavaScript,样式表和一切。

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

  3. 如果生产中存在错误,则修改本地版本,缩小,压缩和上传。

重复,直到利润

+0

+1为利润:) – 2011-12-28 17:13:56

+0

@Sergei Tulentsev,我已经给出了我在上面的问题编辑部分提到的调试的更多细节。你可以看看这个,并且告诉我如何去做这件事吗?谢谢。 – peakit 2011-12-28 17:51:09

+0

我会执行以下操作之一:1)在某处复制生产环境,并尝试用完整的javascripts重现问题。 2)将完整的javascripts复制到制作,并在**你**登录(并继续使用所有其他人的缩小版本)时呈现给他们。 – 2011-12-28 17:59:54

1
  1. 我喜欢与JS文件的本地副本unminified工作,当我部署站点,我再压缩所有JS-文件合并为一个。这样就很容易调试和改进代码。但是,有些工具可以恢复缩小。看看这个SO post关于恢复缩小的JavaScript。
  2. 看看GZIP压缩 - This blog描述如何在Apache中启用GZIP以及如何验证您的服务器实际上是否在压缩文件。
1

是有可能做点播去缩小在客户端

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

在Apache级别完成的JavaScript压缩和使用YUI Compressor这样的工具完成的压缩有什么区别吗?

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

4

Chrome开发工具可以反混淆,如果你要调试的生产代码

(试图复制在现场环境中,您可能不会在开发中会看到一个错误时有用)JavaScript代码(和去缩小) enter image description here enter image description here

+0

+1感谢分享:) – peakit 2011-12-28 17:29:36