Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Работа со статикой в Django
Search
Mike Yumatov
May 29, 2012
Programming
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Работа со статикой в Django
Mike Yumatov
May 29, 2012
More Decks by Mike Yumatov
See All by Mike Yumatov
SaltStack
yumike
0
500
Python
yumike
3
990
VCS
yumike
1
310
Other Decks in Programming
See All in Programming
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.9k
Press start. Python's next generation.
willingc
PRO
3
270
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
270
T3DD26: From RAGs to Riches
martinhelmich
0
120
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
200
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
290
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
530
React本体のコードリーディング
high_g_engineer
1
160
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
510
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
250
Deep dive into the select statement (GopherCon UK)
jespino
0
150
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
310
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
220
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Chasing Engaging Ingredients in Design
codingconduct
0
290
The Cult of Friendly URLs
andyhume
79
7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
450
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Transcript
Работа со статикой в Django
Проблемы • количество файлов статики на странице • размеры файлов
• Less, Stylus => CSS • Co3eeScript, ClojureScript => JavaScript • компиляция шаблонов на клиенте
К чему они приводят • появляется огромный script.js (style.css), в
котором много тысяч строк • комментариев нет • код плохо читается • табуляция вместо пробелов (экономия байтов же!) • Less, Co3eeScript и т.п. не используются
Что нужно от инструмента • объединение файлов статики в один
• минификация и gzip-сжатие кода • поддержка Less, Stylus, Co3eeScript и т.д. • прозрачная и незаметная работа • удобная отладка
Что уже есть • django_compressor • webassets • другие библиотеки,
похожие на webassets • django-gears (порт Sprockets)
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>
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" %} <script src="{{ ASSET_URL }}"></script> {% endassets %}
django-gears /* * application.js * * =require models * =require
collections * =require_directory templates * =require views * =require router */ $(function() { new Router(); Backbone.history.start({pushState: true}); });
django-gears <script src="{{ STATIC_URL }}js/application.js"></script>
django-gears: отладка {% load gears %} {% js_asset_tag "js/application.js" %}
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>
django-gears • http://git.io/gears • обертка над библиотекой Gears • еще
есть Flask-Gears и gears-cli
Зависимости • require • require_self • require_directory • require_tree (скоро)
• depend_on (скоро)
Компиляция в CSS и JS • Из коробки поддерживаются: •
Less • Stylus • Co3eeScript • Handlebars • Цепочка расширений определяет процедуру компиляции: • application.js.co3ee • style.css.styl
Минификация • slimit (Python) • cssmin (Python) • UglifyJS (node.js)
• clean-css (node.js)
Использование python manage.py runserver
Использование python manage.py collectassets python manage.py collectstatic
Спасибо за внимание Вопросы? • @yumatov • http://trilandev.com • https://github.com/yumike
• https://github.com/trilan