2

ちょっとした背景... 新しいサイトの基本テンプレートをセットアップしており、AngularJS、Bootstrap の JavaScript ファイル、Underscore.js などの一般的な JavaScript ライブラリをいくつか含めています。もちろん、これらのファイルを {% compress js %} でラップします。以下のコード例:

{% compress js %}
    <script src="{{ STATIC_URL }}new_js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
    <script>window.jQuery || document.write('<script src="{{ STATIC_URL }}new_js/vendor/jquery-1.8.3.min.js"><\/script>');</script>
    <script src="{{ STATIC_URL }}new_js/vendor/bootstrap.js"></script>

    <!-- Angular -->
    <script src="{{ STATIC_URL }}new_js/vendor/angular.min.js"></script>
    <script src="{{ STATIC_URL }}new_js/angular/directives.js"></script>
    <script src="{{ STATIC_URL }}new_js/angular/services.js"></script>
    <script src="{{ STATIC_URL }}new_js/vendor/underscore-1.4.3.min.js"></script>

    {% block extra_js %}{% endblock %}
{% endcompress %}

django-compressor は縮小フィルターのみを実行することを知っているため、おそらく縮小フィルターが正しい Javascript 出力を生成していない可能性があります。

JSMin で表示される JS エラーは次のとおりです。

SyntaxError: invalid increment operand
http://localhost:8000/site_media/static/cache/js/0f5eb5fb3b24.js
Line 448

そして、SlimIt によって生成されたファイルからのエラー:

SyntaxError: missing ; after for-loop initializer
http://localhost:8000/site_media/static/cache/js/7fbdf61f5abb.js
Line 1

ここで何が起こっているのか完全にはわかりませんが、ミニファイヤがこれらの一般的な js ライブラリで間違ったファイルを生成するとは信じがたいようです。

django-compressor の Javascript フィルタが共通ライブラリを台無しにするという問題に遭遇した人はいますか?

4

1 に答える 1

1

私は IRC に参加し、誰かが私に良いヒントをくれました。Javascript ファイルの縮小されていないバージョンを使用するように言われました。そうすれば、開発環境でデバッグできます。それは私の問題のほとんどを解決しました。

Underscore.js 1.4.3 の最新バージョンにはまだ問題がありましたが、開発ブランチで修正されました。

https://github.com/jonthornton/jquery-timepickerにも問題がありました。なので、とりあえず {% nocompress js %} に入れておきます。

于 2012-12-20T05:30:46.093 に答える