Shower Presentation Engine
Yours Truly, Famous Inc.
Что сегодня будет
- Проблема
- Варианты решения
- Разбор инструмента
Еще раз
Я Владик
, люблю говорить про СSS
- Ленивый прокрастинатор
- Пишу фронтенд
- Делаю митапы и конференции
- Бегаю за проблемами (о чем мы сегодня в первой части доклада и
поговорим)
Современные разработчики положили 🔩 на то, что является результатом их работы
- SPA
- Preprocessor
- But it will work only once
Впринципе хромает качество
- Новичок
- Нет человека свыше
- Наше любимое "ну оно же работает"
- Коммуникация с другими участниками
Проблемы новичка
Никто не проверяет
Для нас почему то
Качество != (Accessability & SEO )
Почему так? 🤷
- Отсутствие фундамента
- Нет возможности проверить качество своей работы
- Пофигизм
Решения 🧞♂️
- Ментор, наставник, любой, кто сможет сказать что не так с твоим кодом
- Код ревью
- Самопроверка
Принцип работы 💡:
Очки теперь присуждаются не за выполнение правил, а за скорость.
$ npm install -g lighthouse
$ lighthouse https://beetroot.academy/
Cамый крутой кейс использования
npm i --save-dev https://github.com/GoogleChromeLabs/lighthousebot
.travis.yml
after_success:
- npm run lhouse --perf=95 https://your-app-link.com/
after_success:
- npm run lhouse --perf=95 https://your-app-link.com/
запускаем скрипт lighthousebot
пропустить ПР, если перфоманс >=95
- npm run lhouse -- https://your-app-link.com/
- npm run lhouse -- --perf=93 --seo=100
https://your-app-link.com/
--perf # performance
--pwa # progressive web app score
--a11y # accessibility score
--bp # best practices score
--seo # SEO score
Сжимаем все текстовые файлы, которые можно сжать (html, css, js)
Изображения конвертируем в WEBP
var webp = require("gulp-webp");
gulp.task("webp", function () {
return gulp.src("source/img/**/*.{png,jpg}")
.pipe(webp({quality: 90}))
.pipe(gulp.dest("build/img"));
});
Изображения конвертируем в WEBP
<picture>
<source srcset="photo-01-370x209.webp" type="image/webp">
<source srcset="photo-01-370x209.jpg" type="image/jpeg">
<img src="photo-01-370x209.jpg" alt="clever man">
</picture>
Используйте правильные форматы для медиа
ffmpeg -i name-file.mp4 -map_metadata -1 -c:a libfdk_aac -c:v libx264 -crf 24 -preset veryslow -profile:v main
-pix_fmt yuv420p -movflags +faststart -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" new-name.h264.mp4
Вынесите критический css в head
Помни о конечном результате
Полная проверка, после всех этапов разработки.
Знайте, что подключается на вашей странице и для чего
Доступность
Разберитесь с ARIA
Вам не нужно знать все aria аттрибуты наизусть. Просто обращайте на них внимание и заполняйте
осмысленно
Договоритесь с дизайнером о контрасте
Договоритесь с дизайнером о контрасте
У всего должно быть текстовое описание
У всего должно быть текстовое описание
<li>
<a href="some-link.html">
<span class="visually-hidden" > facebook </span >
<i class="fa fa-facebook"> </i>
</a>
</li>
У всего должно быть текстовое описание
.visually-hidden{
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
padding:0 !important;
border:0 !important;
height: 1px !important;
width: 1px !important;
overflow: hidden;
}
У всего должно быть текстовое описание
<li>
<a href="some-link.html" aria-label='facebook'>
<i class="fa fa-facebook">
</a>
</li>
Ваш HTML должен быть валидным
Best Practices
Остается заданием на дом 📗
3 заповеди разработчика
Делайте то, что приносит вам кайф
Спасибо за внимание
Вопросы/Cоветы