【问题标题】:Minify HTML files in text/html templates在 text/html 模板中缩小 HTML 文件
【发布时间】:2012-09-04 18:38:05
【问题描述】:

我使用小胡子/车把模板。

例如:

<script id="contact-detail-template" type="text/html">
    <div>... content to be compressed </div>
</script>

我希望在模板中压缩/缩小我的 HTML 文件以获得最佳压缩效果。

YUIcompressor,关闭不起作用,因为他们认为它是脚本并给我脚本错误。

HTMLCompressor 不会触碰它们,即使它认为它是一个脚本。

如何缩小 text/html 类型的脚本标签中的内容? 我可以使用图书馆吗? 如果不是,sed 或 egrep 是更好的方法吗?你有 sed/egrep 语法来删除空行(只有空格或制表符)、删除所有制表符、修剪多余的空格吗?

谢谢。

【问题讨论】:

    标签: sed mustache handlebars.js yui-compressor http-compression


    【解决方案1】:

    sed -e "s/^[ \t]*//g" -e "/^$/d" yourfile 这将从开头删除所有多余的空格和制表符,并删除所有空行。

    sed -e "s/^[ \t]*//g" -e ":a;N;$!ba;s/\n//g" yourfile这将从开头删除所有多余的空格和制表符,并连接所有代码。

    对不起,如果我错过了什么。

    【讨论】:

    • 如果您不在 Windows 上,请从双引号改为单引号。
    • 谢谢。它已关闭,但不会删除选项卡。经过一番研究,我发现 \t 不起作用。您应该执行 ctrl+v,然后在命令行上单击选项卡。输入脚本,您应该点击一个制表符而不是 \t。否则它会起作用。谢谢。
    • 在 mac iterm2 上,当我在终端上复制和粘贴时,它不工作 sed -e "s/^[ \t]*//g" -e ":a;N;$basename utility.js;s/\n//g" 也不能在 mac 终端上工作
    【解决方案2】:

    尝试使用Pretty Diff 来缩小这种代码。如果没有 mime 类型或者类型是各种 JavaScript 类型之一,它只会假设 script 标签内的内容是 JavaScript。它也很聪明,可以知道可以删除哪些空白,而不会破坏内容的输出或以后对代码的递归美化。

    【讨论】:

    • 谢谢。该工具很有前途,但缺少一个简单的类似命令的工具 - minify.sh 等。其他工具如 htmlcompressor、yui 使用起来相当简单。如果我们在 node.js 应用程序中使用“Pretty diff”很简单,但如果在普通应用程序中使用它会非常复杂。您必须构建一个 Maven 类型的脚本,然后执行。如果删除制表符/空格是目的,我更喜欢 sed 而不是这个 Pretty Diff。
    • 它使用 WSH 在 Windows 中提供本机命令行支持。请参阅 prettydiff.com/prettydiff.wsf 作为 WSH 的 api。我目前正在开发一个扩展,以允许目录和子目录比较,而不是单纯的文件比较。对于其他系统,我确实使用文件 api.js 为 Node.js 提供了一些支持。 Node.js 支持有点过时了,我计划尽快更新。
    • 不幸的是,我使用的是 mac。如果可能的话,我建议您添加一个可以作为 .sh 运行的 .jar。如果没有,自定义 .sh 对 unix 用户来说会很好。我喜欢这个库,并期待在我可以访问 .sh 文件时使用它。
    • 据我所知,Bash shell 不提供对 JavaScript 的解释,而当前的 Unix 和 Linux 发行版也不像提供 Perl 解释器那样提供 JavaScript 解释。在这种情况下,您必须安装一个附加程序,例如 Node.js。我没有太多使用 Mac 的经验,所以我可能完全错了。
    【解决方案3】:

    使用sed ':a;N;$!ba;s/&gt;\s*&lt;/&gt;&lt;/g' file,它可以让您删除不需要的空格和换行符。与 ghaschel 示例不同,此 不会删除行开头的那些有用的空格,因为它保留了 &lt;pre&gt;&lt;p&gt; 标记。

    这很有用,因为您可以删除&gt;&lt; 之间的空格,这是放大 html 文件的常用方法。此示例还可用于 XML 文件,例如 atom feedrss feed

    我个人在site generator 中使用它作为管道,这可以减少正常文件大小和can be use in conjunction with gzip

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 2012-07-25
      • 2014-02-04
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多