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
Build automation statics
Search
TriLan
April 09, 2014
Programming
0
1.5k
Build automation statics
TriLan
April 09, 2014
Tweet
Share
More Decks by TriLan
See All by TriLan
TopExpert
webdev2014
0
62
Secret formula management
webdev2014
1
76
Angular JS
webdev2014
0
1.5k
CSS animations and transitions
webdev2014
0
1.4k
Preprocessors CSS
webdev2014
1
1.5k
Mobile apps
webdev2014
0
1.5k
Gathering statistics of the department with the monitor output
webdev2014
0
1.5k
Creating interfaces in resource-limited settings
webdev2014
0
1.4k
Design vs usability
webdev2014
0
1.6k
Other Decks in Programming
See All in Programming
Swift Concurrency 年表クイズ
omochi
2
140
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
110
CSC305 Lecture 10
javiergs
PRO
0
310
Webサーバーサイド言語としてのRustについて
kouyuume
1
5k
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
1
110
エンジニアインターン「Treasure」とHonoの2年、そして未来へ / Our Journey with Hono Two Years at Treasure and Beyond
carta_engineering
0
450
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
1.9k
KoogではじめるAIエージェント開発
hiroaki404
1
170
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
660
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
110
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
220
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
120
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Six Lessons from altMBA
skipperchong
29
4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Unsuck your backbone
ammeep
671
58k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Visualization
eitanlees
150
16k
Writing Fast Ruby
sferik
630
62k
Transcript
Сборка статики
Препроцессоры
Препроцессоры решают одни и создают новые проблемы
Раньше было так — Редактируем код — Запускаем тесты
А стало так — Редактируем код — Компилируем его в
CSS/JS — Запускаем тесты
Варианты — Ручная компиляция — При сохранении файла — При
обновлении страницы
Отладка
Положение ошибки в сообщении косоли браузера не соответствует тому, где
она находится в исходном коде
Source maps (карты кода) позволяют указать соответствия между исходным и
скомпилированным кодом
Объединение файлов
Хочется разбить скрипты приложения на модули
Пример из проекта — CoffeeScript, Handlebars — 80 тысяч строк
кода — 1,3 тысячи файлов
Версионирование
Нет гарантий, что после обновления статики на сервере, она обновится
в браузере клиента
Версия в URL ресурса — http://example.com/static/css/style.css?v=1.1 — http://example.com/static/css/style.a6ebc32.css
Содержимое ресурса, доступного по URL’у, гарантированно не меняется
Кэшируем навсегда location /static/ { expires 1y; add_header Cache-Control public;
add_header ETag ""; alias /var/www/project/static/; }
Минификация и сжатие
Пример из проекта Без минификации и сжатия 4 Мб С
минификацией 2,4 Мб Со сжатием 450 Кб С минификацией и сжатием 330 Кб
Сжимаем заранее location /static/ { gzip_static on; expires 1y; add_header
Cache-Control public; add_header ETag ""; alias /var/www/project/static/; }
Системы сборки статики — Grunt (http://gruntjs.com) — Gulp (http://gulpjs.com) —
Sprockets (https://github.com/.../sprockets) — Gears (https://github.com/gears) (На самом деле их много)
Вопросы? —
[email protected]
— http://github.com/yumike — http://twitter.com/yumatov