压缩器创建JavaScript语法错误
有点背景......我建立了我的新网站的基本模板,并且包含了一些流行的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只运行缩小过滤器,所以它可能是缩小器不能生成正确的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过滤器混淆了常见库的问题?
我去了IRC,有人给了我一个很好的建议。 他们告诉我使用非缩小版的Javascript文件。 这样,你可以在开发环境中进行调试。 这解决了我的大部分问题。
最新版本的Underscore.js 1.4.3仍然存在问题,但它已在其开发分支中修复。
https://github.com/jonthornton/jquery-timepicker也存在问题。 所以我现在只是把它放在{%nocompress js%}中。
链接地址: http://www.djcxy.com/p/68511.html