4

Pylons Web サイトで 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 のバグにヒットするマークアップの組み合わせを見つけたに違いありません。フリーズが発生しなくなるまでドキュメントを縮小して、問題のあるマークアップ パターンを分離する (そしてマークアップ パターンを回避する) か、フリーズが発生しなくなるまでマークアップを変更してみてください。

もう 1 つの良い方法は、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

トリム フィルターは html を単一の文字列として扱い、先頭と末尾の空白文字のみを削除していると思います。すべての行から空白を削除したい。フィルターを作成し、各行を繰り返し処理します。

<%!
    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 に答える