如何缩小和/或压缩php文件中的JavaScript ?


How do you minify and/or compress JavaScript that is in a php file?

我正在寻找优化选项,在检查了SO个问题后,我不太清楚我想做什么。希望这不会表明我所做的是一种不好的做法!

我有一个内部网应用程序,通过ajax调用php文件加载页面内容。许多php文件混合了php, JavaScript,甚至一些HTML,特定于加载到主界面的接口功能。我想知道如何缩小或压缩这些文件。是否有办法做到这一点,或者我被困住了,因为我有不同的语言?

更新:关于被接受的答案:

我接受了wildpeaks的答案,因为我认为它最接近我最初的问题。然而,这是我希望我能接受两个答案的时候之一,因为我认为Igor Zinov'yev提供的答案可能给了我一个更重要的设计决策。出于这个原因,我给他的回答打了+1,我想其他人也会这样做。

您的PHP脚本生成Javascript代码,因此它可以在输出之前缩小代码:在变量中生成代码,然后将该变量传递给缩小器,然后才输出到浏览器。

你从错误的一端开始你的优化。显然,如果在PHP文件中有硬编码的JavaScript、HTML和其他内容,则需要对代码进行重构。但是,即使你不这样做,你也不应该就地减少代码,因为这会更难维护。

把它从那里拉出来,从一小步开始,你最终会到达那里。

更新:我本想回复一个评论,但我决定在这里详细说明我为什么这样回答你的问题。

我在这里说的是关注点分离。服务器端代码文件不适合放置客户端代码。到目前为止,我所看到的所有这样做的解决方案迟早都会变成不可维护的混乱。

如果您想返回一段HTML代码,请将其放入模板中,并为模板提供针对当前情况的特定变量。你可以用Smarty。这样,您将获得以下好处:

  • 没有重复的标记片段-有模板循环
  • 在多个地方重用现有模板的可能性
  • 使用模板的开发人员不需要进入您的服务器端代码你的服务器端代码变得更干净,闻起来也很好!

之后,当你将逻辑从表示中分离出来时,你可能会发现你不需要发送带有HTML片段的JavaScript代码。也许您将创建一个单独的JS引擎(您将在构建时缩小),并且只需要在加载时触发某些事件。