【问题标题】:How can I output a single-line JavaScript from a PHP object?如何从 PHP 对象输出单行 JavaScript?
【发布时间】:2011-06-15 19:20:14
【问题描述】:

我的 PHP 代码:

include "something.php"
$mysite = writeContent();

//footer.php
ob_start();
echo "<script...all my javascript here...</script>";
$object = ob_get_contents();
ob_end_clean();

$search = array("\n","\r");
$replace = array("","");
$object = str_replace($search, $replace, $object);
echo $object;

那么我的 JavaScript 格式错误并且无法正常工作。

我知道我可以使用gzip 来提高速度(这不是我要的),但我真正想要的是从代码中删除多余的空间。

【问题讨论】:

  • 只要确保在每一行的末尾都有分号和括号,你可以把它们放在任何地方,它应该可以正常工作......你能提供一个你的'坏'JS的例子吗?跨度>
  • 请您添加一个您想要输出的 JavaScript 示例和格式错误的结果吗?
  • FWIW,仅仅因为您使用数组作为 str_replace 的搜索部分并不意味着您需要一个数组进行替换。你可以给它一个空字符串。
  • 谢谢 josh,我会接受,但你没有回复,这就是问题所在;]

标签: php javascript object


【解决方案1】:

您是否遇到过分号问题?您可能想validate your JavaScript first 看看出了什么问题,但这里有许多可能性之一:

var foo = 0 // This works fine
var bar = 1
// #=>
var foo = 0var bar = 1 // This doesn't

// And FWIW, this is what you want:
var foo = 0;
var bar = 1;

【讨论】:

    【解决方案2】:

    理想情况下,您应该 LINT 您的 JS,然后通过经过适当测试的压缩程序运行它。对于 PHP,我使用 jsmin-php 取得了巨大成功。

    【讨论】:

    • 包括“includes/jsmin.php”;回声 JSMin::minify($object); = 不错!
    • 是的,我在大型系统中大量使用它,以及 CSSMin-php。我们动态组合和缩小我们的内容,并将其写入具有哈希名称的缓存文件,这样就不必在下一页加载时重新组合和缩小。
    【解决方案3】:

    由于乔希没有将他的评论作为答案,我会的。

    当您替换换行符并且您的 JavaScript 缺少分号时,解释器无法检测到语句的结尾。因此,只需确保脚本中的每一行都有一个“;”。或者,您可以用分号替换所有新行,连续两个分号不是语法错误。不理想,但可以解决问题。

    JAAulde 的建议,通过最小化器运行它是最好的方法。这是一个 php https://github.com/rgrove/jsmin-php/

    Combining and Compressing multiple JavaScript files in php

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 2015-11-25
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多