如何压缩和/或缩小包含在 PHP 文件中的 JavaScript?

4

我正在寻找优化选项,查看了一些SO问题后,没有看到我想要的答案。希望这并不意味着我所做的是一个不好的实践!

我有一个内部网络应用程序,通过ajax调用php文件来加载页面内容。许多php文件包含了一些PHP、JavaScript甚至HTML,针对它们加载到主界面上的特定接口功能。我在想是否可以对这些文件进行缩小或压缩。有什么方法可以做到这一点,还是因为我混合了语言而被卡住了?

更新:关于接受的答案:

我已经接受了wildpeaks的答案,因为我认为它最接近我的原始问题。然而,这是我希望我能够接受两个答案之一的时候,因为我认为Igor Zinov'yev提供的答案给我提供了更重要的设计决策需要考虑。因此,我为他的回答+1,我想别人也会这样做。希望这是明智的选择,并符合SO规则。


将JS复制到一个新文件中,压缩它,然后再粘贴回去? - James Allardice
优化选项?您是否真正面临着优化需求,还是只是为了好玩而创造一些工作? - hakre
使用HTTP级别的压缩。它将处理整个页面,而不考虑所使用的语言:http://php.net/manual/zh/function.ob-gzhandler.php - Marc B
@hakre :) 或许我在做多余的工作。我对这种应用程序开发还很新,很多“最佳实践”阅读材料都表明缩小文件是推荐的。 - Carvell Fenton
@James Allardice 是的,也许那是一个选项,但我认为在我拥有的众多文件中这将非常费力。 - Carvell Fenton
1
最佳实践是在需要时进行优化,而不是提前进行。优化需要通过分析获得实际指标,而不是通过“最佳实践”建议来获取,这些建议通常是无用的,因为每个应用程序在设计和使用上都有所不同。 - hakre
2个回答

4

你的PHP脚本生成Javascript代码,因此它可以在输出之前缩小代码大小:将代码生成到一个变量中,然后将该变量传递给压缩软件,最后再输出到浏览器。

这里有一个用于此目的的PHP库


不错的工具!你知道有没有任何基准测试吗?它的速度足够快吗? - Igor Zinov'yev

2
你的优化方式有误。如果你在 PHP 文件中硬编码了 JavaScript、HTML 和其他内容,那么你需要重构代码。即使没有这种情况,你也不应该直接对代码进行缩小,因为这样会更难维护。
将其分离出来,从小处开始,最终你会达成目标。
更新:我本来想用评论回复,但是我决定在这里详细解释为什么要这样回答你的问题。
我在谈论关注点分离。你的服务器端代码文件不适合放置客户端代码。到目前为止,我看到的所有这样做的解决方案迟早都会变成一个无法维护的混乱状态。
如果你想返回一段 HTML 代码,请将其放入模板中,并为该模板提供当前情况下特定的变量。你可以使用Smarty来实现这一点。这样,你将获得以下好处之一:
  • 不要一遍又一遍地重复标记 - 可以使用模板循环
  • 可以在多个地方重用现有模板
  • 与模板一起工作的开发人员不需要进入您的服务器端代码
  • 您的服务器端代码变得更加清洁,也变得更易读!

稍后,当您将逻辑与展示分离时,也许会发现您不再需要将 JavaScript 代码与 HTML 片段一起发送。也许您会创建一个单独的 JS 引擎(构建时会进行缩小),只需在加载时触发某些事件。


有时需要动态传递JavaScript变量,因此因此要求而不进行代码压缩将是一件遗憾的事情。 - Jacco
这可能是一个初学者的问题,但我还是要问一下:如果我使用php作为创建新接口通过ajax返回的地方,而你说静态js不应该在那个文件中,但当该接口处于活动状态时,我需要那个js,它从哪里来?我将其提取到单独的js文件中,然后在php中包含一个脚本标记,其中src设置为js文件吗? - Carvell Fenton
1
@Igor 感谢您抽出时间更新原始答案。我理解您所说的逻辑,这也是我会编写“老派语言”代码的方式。我的一些设计受到了我在学习技术和设计系统的同时进行的影响,我的一些设计选择可能是错误的!我会认真考虑这个问题。虽然这不是我来这里寻找的答案,但也许您已经回答了更重要的问题! - Carvell Fenton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接