用于 Django 的 JavaScript 工具
项目描述
aino-jstools 是一组用于处理 JavaScript 和 Django 的工具。它主要编译javascripts。
设计背景
我们想要制作一个工具,使在模板中包含一堆 JavaScript 变得简单而干净,并将所有这些 JavaScript 编译成生产中的打包片段以获得最佳性能。我们想要实现的另一个目标是将urls.py、MEDIA_URL、DEBUG设置中定义的 url 公开给 JavaScript 代码。我们的未来包括在 JavaScript 中为 i18n 提供比 Django 提供的更简洁的实现。
要求
Django 1.x
Python 2.5+
Java(用于编译 JavaScript)
安装
在项目设置中的INSTALLED_APPS中包含jstools 。可以选择在 urls.py 中包含 jstools/ urls.py:
(r'^jstools/', include('jstools.urls'))
模板使用
首先在模板中定义您的脚本,如下所示:
{% scripts "js/mysite-min.js" %}
http://yui.yahooapis.com/3.1.0/build/yui/yui-min.js
js/a.js
js/b.js
{% url jshelper %}
{% endscripts %}
当settings.DEBUG为True时,这将转换为:
<script src="http://yui.yahooapis.com/3.1.0/build/yui/yui-min.js"></script>
<script src="{{ MEDIA_URL }}js/a.js"></script>
<script src="{{ MEDIA_URL }}js/b.js"></script>
<script src="{% url jshelper %}"></script>
当settings.DEBUG为False时,这将转换为:
<script src="{{ MEDIA_URL }}js/mysite-min.js?TIMESTAMP"></script>
其中TIMESTAMP基于 {{ MEDIA_ROOT }}js/myste-min.js的修改日期
编译
编译所有定义的脚本就像运行一样简单:
python manage.py buildjs
如果您使用默认文件系统和/或 app_directories ,此管理命令将查找所有带有 {% scripts %}标签的模板并将其内容编译到标签的第一个参数中。
jshelper 视图
此视图将输出命名 url、settings.MEDIA_URL、settings.DEBUG (我建议您在模板中覆盖它,除非您想在更改DEBUG设置时重新编译脚本)以用于您的 JavaScript 代码。默认情况下,您将可以访问名为JSTOOLS的 JavaScript 对象,您可以通过设置JSTOOLS_NAMESPACE来更改名称。
- JSTOOLS.settings.MEDIA_URL
settings.MEDIA_URL
- JSTOOLS.settings.DEBUG
设置.DEBUG
- JSTOOLS.get_url
此函数将获得在您的urls.py中定义的命名 url 。第一个参数是命名 url 的名称,后续参数是传递给该模式的参数。例子:
JSTOOLS.get_url('jshelper'); JSTOOLS.get_url('blog_entry', 2010, 04, 25, 'aino-jstools');