一些背景...我正在设置我的新网站的基本模板,我包括一些流行的JavaScript库,例如AngularJS,Bootstrap的javascript文件和Underscore.js。当然,我将这些文件包装在{%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只运行缩小过滤器,所以可能是minifiers没有生成正确的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
我不完全确定这里发生了什么,似乎很难相信minifiers会在这些常见的js库上生成不正确的文件。
有没有人遇到django-compressor的Javascript过滤器搞乱公共库的问题?
答案 0 :(得分:1)
我上了IRC,有人给了我一个很好的建议。他们告诉我使用非缩小版的Javascript文件。这样,您就可以在开发环境中进行调试。这解决了我的大多数问题。
最新版本的Underscore.js 1.4.3仍然存在问题,但它已在其开发分支中修复。
https://github.com/jonthornton/jquery-timepicker也存在问题。所以我现在把它放在{%nocompress js%}中。