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
67
Secret formula management
webdev2014
1
80
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
ロボットのための工場に灯りは要らない
watany
12
3.2k
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.4k
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
100
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
430
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.2k
Feature Toggle は捨てやすく使おう
gennei
0
370
AI活用のコスパを最大化する方法
ochtum
0
340
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
240
Ruby and LLM Ecosystem 2nd
koic
1
1.3k
モダンOBSプラグイン開発
umireon
0
180
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
270
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
150
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.8M
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
What's in a price? How to price your products and services
michaelherold
247
13k
BBQ
matthewcrist
89
10k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Scaling GitHub
holman
464
140k
Designing for humans not robots
tammielis
254
26k
Accessibility Awareness
sabderemane
0
86
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
Code Reviewing Like a Champion
maltzj
528
40k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
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