【问题标题】:Handlebars minify HTML车把缩小 HTML
【发布时间】:2015-11-23 23:34:20
【问题描述】:

在 Node.js Express 应用程序中,有没有一种方法可以在将所有 Handlebars 模板发送到渲染器之前缩小它们?

我考虑创建一个 Express 中间件来对 HTML 响应正文进行缩小 - 但我很快意识到这是非常无效的,因为缩小会发生在每个 HTTP 请求上。

必须有一种方法来缩小 .hbs 模板并在服务器端缓存它们?

【问题讨论】:

    标签: node.js express handlebars.js


    【解决方案1】:

    您可以即时缩小文件,但出于性能原因,我建议您事先使用外部缩小器缩小文件,因此您只需执行一次。否则每次调用文件时都必须缩小 html。

    因此,另一种解决方案是在命令行中使用html-minifier,并带有选项

    --ignore-custom-fragments "/{{[{]?(.*?)[}]?}}/"

    此正则表达式将忽略 {{}} 之间的所有内容,并对其余部分进行 HTML 缩小。

    【讨论】:

    • 这没有帮助。 Minifier 应该是 Express 进程的一部分,而不是一些外部命令
    • @HoangLam 您可以即时缩小,但出于性能原因,我建议您事先使用外部缩小器缩小文件,因此您只需执行一次。否则,每次调用文件时都必须缩小 html。
    【解决方案2】:

    只添加下一个标志“--continue-on-parse-error”,以下命令对我有用:

    html-minifier --input-dir [SOURCE_DIR] --output-dir [TARGET_DIR] --file-ext hbs --collapse-whitespace --continue-on-parse-error --remove-comments --minify-css true --minify-js true
    

    【讨论】:

      【解决方案3】:

      这成功了: https://github.com/helpers/handlebars-helper-minify

      唯一的小问题是您必须在每个模板中手动包含帮助程序:

      来自模块的 Github 页面:

      {{#minify removeComments="true"}}
        {{> header }}
      {{/minify}}
      
      {{#minify removeEmptyElements="true"}}
        {{> body }}
      {{/minify}}
      
      {{#minify removeComments="true"}}
        {{> footer }}
      {{/minify}} 
      

      【讨论】:

      • 缩小模板的输出,而不是模板本身。
      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 2012-04-23
      • 2018-09-23
      相关资源
      最近更新 更多