4

我在我的 Pylons 网站中使用 Mako 模板系统,但在剥离空白时遇到了一些问题。

我剥离空格的原因是生成的 HTML 文件以 12363 行代码的形式出现。我认为这就是 Internet Explorer 在尝试加载它时挂起的原因。

我希望能够让我的 HTML 文件看起来漂亮整洁,这样我就可以轻松地对其进行更改,并使生成的输出看起来像减少文件大小和内存使用所需的那样丑陋和凌乱。

Mako 文档http://www.makotemplates.org/docs/filtering.html说您可以使用该trim标志,但这似乎不起作用。示例代码:

<div id="content">
    ${next.body() | trim}
</div>

我能够去除换行符的唯一方法是在\每行的末尾添加一个(反斜杠)。这在对视图进行编码时相当烦人,我更希望有一个集中的解决方案。

如何删除空格/换行符?

4

3 回答 3

0

我不相信 IE 挂起是由于文件大小。您可能刚刚发现了一个标记组合,它遇到了一个导致它冻结的 IE 错误。尝试修剪您的文档,直到不再发生冻结以隔离有问题的标记模式(然后避免标记模式),或者尝试更改标记直到不再发生这种情况。

另一件好事是通过 HTML 验证器运行您的页面并修复报告的任何问题。

于 2010-09-27T04:31:18.237 回答
0

您可以创建自己的简单 WSGI 中间件,以便在模板渲染后从模板中去除空格(可能使用此答案中描述的方法)。

下面是一个可以帮助您入门的快速示例。 注意:我在没有测试甚至运行的情况下编写了这段代码;它可能第一次工作,但它可能不适合您的需求,因此您需要自己扩展它。

class HTMLMinifyMiddleware(object):
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        resp_body = self.app(environ, start_response)

        for i, part in enumerate(resp_body):
            resp_body[i] = ' '.join(part.split())

        return resp_body
于 2010-12-10T18:19:28.200 回答
0

I'm guessing that the trim filter is treating your html as a single string, and only stripping the leading and trailing whitespace characters. You want it to strip whitespace from every line. I would create a filter and iterate over each line.

<%!
    def better_trim(html):
        clean_html = ''
        for line in html:
            clean_html += line.strip()
        return clean_html
%>

<div id="content">
    ${next.body() | better_trim}
</div>
于 2010-09-27T04:25:39.110 回答