如何去除 ERB 模板中的 HTML 空格?

发布于 2024-12-26 04:31:07 字数 91 浏览 3 评论 0原文

有没有办法使用 Sinatra 去除 ERB 模板中的 HTML 空格?

Slim 引擎可以做到开箱即用,但我不知道 ERB 如何才能做到同样的事情。

Is there a way to strip HTML whitespaces in ERB templates, using Sinatra?

The Slim engine does it out-of-the-box, but I don't know how can ERB do the same.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

久随 2025-01-02 04:31:07

使用下面的正则表达式从 HTML 中去除空格。这不是更好的方法(由于 HTML 的本质不适合正则表达式)。但是,效果很好。

(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}

Use below regular expression to strip whitespaces from HTML. It's not preferable method (due to HTML's nature that is not fit for regular expressions). But, it works well.

(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}
一生独一 2025-01-02 04:31:07

使用 Rack::Deflater 中间件进行 gzip 压缩(常规 HTTP 内容)。

中间件使用方法:http://www.sinatrarb.com/intro#Rack%20Middleware

Use the Rack::Deflater middleware to gzip compress (regular HTTP stuff).

How to use the middleware: http://www.sinatrarb.com/intro#Rack%20Middleware

一曲琵琶半遮面シ 2025-01-02 04:31:07

Sinatra 允许您创建自己的中间件,一个可能的解决方案(对我有用)是创建一个自定义类(Sinatra 术语中的中间件)并使用它。自定义类使用正则表达式删除所有空格,尊重内容:

class ObfuscateHTML
  def initialize(app, options = {})
    @app = app
  end

  def call(env)
    status, headers, response = @app.call(env)

    if headers["Content-Type"] =~ /\bhtml\b/
      response[0] = response[0].gsub(/\s*(<[^>]+>)\s*/, '\1')
      headers["Content-Length"] = response[0].size.to_s
    end

    [status, headers, response]
  end
end

use ObfuscateHTML

Sinatra lets you create your own middleware, a possible solution (that works for me) is to create a custom class (middleware in Sinatra's terms) and use it. The custom class uses a regexp to remove all whitespaces, respecting the content:

class ObfuscateHTML
  def initialize(app, options = {})
    @app = app
  end

  def call(env)
    status, headers, response = @app.call(env)

    if headers["Content-Type"] =~ /\bhtml\b/
      response[0] = response[0].gsub(/\s*(<[^>]+>)\s*/, '\1')
      headers["Content-Length"] = response[0].size.to_s
    end

    [status, headers, response]
  end
end

use ObfuscateHTML
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文