Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Проблемы • количество файлов статики на странице • размеры файлов • Less, Stylus => CSS • Co3eeScript, ClojureScript => JavaScript • компиляция шаблонов на клиенте

Slide 3

Slide 3 text

К чему они приводят • появляется огромный script.js (style.css), в котором много тысяч строк • комментариев нет • код плохо читается • табуляция вместо пробелов (экономия байтов же!) • Less, Co3eeScript и т.п. не используются

Slide 4

Slide 4 text

Что нужно от инструмента • объединение файлов статики в один • минификация и gzip-сжатие кода • поддержка Less, Stylus, Co3eeScript и т.д. • прозрачная и незаметная работа • удобная отладка

Slide 5

Slide 5 text

Что уже есть • django_compressor • webassets • другие библиотеки, похожие на webassets • django-gears (порт Sprockets)

Slide 6

Slide 6 text

django_compressor {% load compress %} {% compress js %} {% endcompress %} script>

Slide 7

Slide 7 text

webassets register('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" %} {% endassets %}

Slide 8

Slide 8 text

django-gears /* * application.js * * =require models * =require collections * =require_directory templates * =require views * =require router */ $(function() { new Router(); Backbone.history.start({pushState: true}); });

Slide 9

Slide 9 text

django-gears

Slide 10

Slide 10 text

django-gears: отладка {% load gears %} {% js_asset_tag "js/application.js" %}

Slide 11

Slide 11 text

django-gears: отладка

Slide 12

Slide 12 text

django-gears • http://git.io/gears • обертка над библиотекой Gears • еще есть Flask-Gears и gears-cli

Slide 13

Slide 13 text

Зависимости • require • require_self • require_directory • require_tree (скоро) • depend_on (скоро)

Slide 14

Slide 14 text

Компиляция в CSS и JS • Из коробки поддерживаются: • Less • Stylus • Co3eeScript • Handlebars • Цепочка расширений определяет процедуру компиляции: • application.js.co3ee • style.css.styl

Slide 15

Slide 15 text

Минификация • slimit (Python) • cssmin (Python) • UglifyJS (node.js) • clean-css (node.js)

Slide 16

Slide 16 text

Использование python manage.py runserver

Slide 17

Slide 17 text

Использование python manage.py collectassets python manage.py collectstatic

Slide 18

Slide 18 text

Спасибо за внимание Вопросы? • @yumatov • http://trilandev.com • https://github.com/yumike • https://github.com/trilan