Современный фронтенд

Автоматизация и ускорение работы

Рутина мешает работать

Level-up

Модульность

Автоматизация

Оптимизация

GIT

Доступность

HTML

HTML

Шаблонизаторы

Jade, Haml, Slim

Emmet

PostHTML

HTML > Emmet

ul.foo>(li.foo__bar>a[href=#$]{Link $})*5^+button{Submit}
<ul class="foo">
	<li class="foo__bar"><a href="#1">Link 1</a></li>
	<li class="foo__bar"><a href="#2">Link 2</a></li>
	<li class="foo__bar"><a href="#3">Link 3</a></li>
	<li class="foo__bar"><a href="#4">Link 4</a></li>
	<li class="foo__bar"><a href="#5">Link 5</a></li>
</ul>
<button>Submit</button>

HTML > Шаблонизаторы

JADE

HTML > Шаблонизаторы

HTML

HTML > Jade

Преимущества

Синтаксический сахар

Совместимость с Emmet

Миксины (DRY)

Прозрачность

Модульность

Markdown

HTML > Jade

Как применить?

Node.js

jade-php

pyjade

jader

jade-cli, gulp-jade

HTML > PostHTML

Для чего?

HTML.Next

Custom Elements

(web components)

Расширяемость

Привычный синтаксис

CSS

CSS

Препроцессоры

LESS, SASS, Stylus

Emmet-livestyle

PostCSS

CSS > Препроцессоры

Синтаксический сахар

Переменные

Миксины

Циклы, условия, массивы и т.д.

Математика

Работа с цветом

Вложенные селекторы

CSS > Препроцессоры

Stylus

CSS

CSS > PostCSS

CSS

Парсер

Плагины

Генератор

CSS

CSS > PostCSS

Плагины

  • Autoprefixer
  • postcss-sorting
  • postcss-bem
  • rtlcss
  • postcss-sprites
  • stylelint + stylefmt
  • font-magician
  • csso
  • postcss-fixes
  • postcss-colorblind
  • и многие другие

CSS > PostCSS

Autoprefixer

.foo-bar {
  background: linear-gradient(to top, black, white);
  display: flex
}
.foo-bar {
  background: -webkit-linear-gradient(bottom, black, white);
  background: linear-gradient(to top, black, white);
  display: -webkit-box;
  display: -webkit-flex;
  display: -moz-box;
  display: -ms-flexbox;
  display: flex
}

CSS > PostCSS

postcss-bem

@b nav {                        /* @b - определение блока */
    @e item {                   /* @e - определение элемента */
        display: inline-block;
    }
    @m placement_header {       /* @m - определение модификатора */
        background-color: red;
    }
}
.nav {}
.nav__item {
    display: inline-block
}
.nav--placement_header {
    background-color: red
}

CSS > PostCSS

Использование

Node.js

postcss

postcss-cli

gulp-postcss

JavaScript

JavaScript

TypeScript

CoffeeScript

EcmaScript 6

Node.js

JavaScript > Node.js

Backend на JavaScript

Среда исполнения JavaScript

Мобильные приложения

Десктопные приложения

Разработка игр

Программирование микроконтроллеров

Спутники

Системы сборки

Системы сборки

Gulp.js

Grunt.js

Webpack

Системы сборки > Gulp.js

Таск-раннер

Препроцессоры

Минификация

Конкатенация

Оптимизация изображений

Работа со шрифтами

Git

Тестирование

Системы сборки > Gulp.js

Как работает?

var gulp    = require('gulp');
var stylus  = require('gulp-stylus');


gulp.task('stylus', function() {

  return gulp
    .src('source/styles/main.styl')
    .pipe( stylus() )
    .pipe( gulp.dest( 'dev/css' ) );

});

Системы сборки > Gulp.js

Где применять?

Статичная верстка

Фреймворки

CMS

Повседневная жизнь

Я простой верстальщик.

Что мне делать?

Инструменты - не панацея

Тяжело в учении — легко в бою

Спасибо за внимание

Вопросы?

Автоматизация и ускорение фронтенда

By Исмаил

Автоматизация и ускорение фронтенда

  • 485