Работа со статикой в Django

18

Click here to load reader

Transcript of Работа со статикой в Django

Page 1: Работа со статикой в Django

Работа со статикой в Django

Page 2: Работа со статикой в Django

Проблемы

• количество файлов статики на странице

• размеры файлов

• Less, Stylus => CSS

• Co3eeScript, ClojureScript => JavaScript

• компиляция шаблонов на клиенте

Page 3: Работа со статикой в Django

К чему они приводят

• появляется огромный script.js (style.css), в котором много тысяч строк

• комментариев нет

• код плохо читается

• табуляция вместо пробелов (экономия байтов же!)

• Less, Co3eeScript и т.п. не используются

Page 4: Работа со статикой в Django

Что нужно от инструмента

• объединение файлов статики в один

• минификация и gzip-сжатие кода

• поддержка Less, Stylus, Co3eeScript и т.д.

• прозрачная и незаметная работа

• удобная отладка

Page 5: Работа со статикой в Django

Что уже есть

• django_compressor

• webassets

• другие библиотеки, похожие на webassets

• django-gears (порт Sprockets)

Page 6: Работа со статикой в Django

django_compressor

{% load compress %}{% compress js %} <script src="/static/js/models.js"></script> <script src="/static/js/collections.js"></script> <script src="/static/js/views.js"></script> <script src="/static/js/router.js"></script> <script src="/static/js/application.js"></script>{% endcompress %}

<!-- на выходе будет нечто подобное: -->

<script src="/static/CACHE/js/34fe95a4b234.js"></ script>

Page 7: Работа со статикой в Django

webassetsregister('application', Bundle( 'js/models.js', 'js/collections.js', 'js/views.js', 'js/router.js', 'js/application.js', output='js/gen/application.js',))

# в шаблоне:

{% load assets %}{% assets "application" %} <script src="{{ ASSET_URL }}"></script>{% endassets %}

Page 8: Работа со статикой в Django

django-gears/* * application.js * * =require models * =require collections * =require_directory templates * =require views * =require router */

$(function() { new Router(); Backbone.history.start({pushState: true});});

Page 9: Работа со статикой в Django

django-gears

<script src="{{ STATIC_URL }}js/application.js"></script>

Page 10: Работа со статикой в Django

django-gears: отладка

{% load gears %}{% js_asset_tag "js/application.js" %}

Page 11: Работа со статикой в Django

django-gears: отладка

<!-- DEBUG = True -->

<script src="/static/js/models.js?body=1"></script><script src="/static/js/collections.js?body=1"></script><script src="/static/js/views.js?body=1"></script><script src="/static/js/router.js?body=1"></script><script src="/static/js/application.js?body=1"></script>

<!-- DEBUG = False -->

<script src="/static/js/application.js"></script>

Page 12: Работа со статикой в Django

django-gears

• http://git.io/gears

• обертка над библиотекой Gears

• еще есть Flask-Gears и gears-cli

Page 13: Работа со статикой в Django

Зависимости

• require

• require_self

• require_directory

• require_tree (скоро)

• depend_on (скоро)

Page 14: Работа со статикой в Django

Компиляция в CSS и JS

• Из коробки поддерживаются:

• Less• Stylus• Co3eeScript• Handlebars

• Цепочка расширений определяет процедуру компиляции:

• application.js.co3ee• style.css.styl

Page 15: Работа со статикой в Django

Минификация

• slimit (Python)

• cssmin (Python)

• UglifyJS (node.js)

• clean-css (node.js)

Page 16: Работа со статикой в Django

Использование

python manage.py runserver

Page 17: Работа со статикой в Django

Использование

python manage.py collectassetspython manage.py collectstatic

Page 18: Работа со статикой в Django

Спасибо за вниманиеВопросы?

• @yumatov

• http://trilandev.com

• https://github.com/yumike

• https://github.com/trilan