Обзор препроцессоров и task runners для frontend разработки

Содержание

Слайд 2

WAT???

WAT???

Слайд 3

Какие технологии крутятся на frontend?

Какие технологии крутятся на frontend?

Слайд 4

Пакетные менеджеры

Пакетные менеджеры

Слайд 5

Установка и https://nodejs.org/en/ 1) Установить 2) Установить пакетный менеджер https://yarnpkg.com/en/docs/install Ну

Установка и

https://nodejs.org/en/

1) Установить

2) Установить пакетный менеджер

https://yarnpkg.com/en/docs/install

Ну тут больше делать ничего не

надо, npm идет в комплекте с nodejs
Слайд 6

Инициализация проекта Установка пакета Обновление пакета Удаление пакета Установка зависимостей Вывод

Инициализация проекта

Установка пакета

Обновление пакета

Удаление пакета

Установка зависимостей

Вывод списка зависимостей

yarn init (-y)

npm init

(-y)

yarn add

npm install --save

yarn upgrade

npm upgrade

yarn remove

npm uninstall

yarn / yarn install

npm i / npm install

yarn list (--depth=0)

npm ls (--depth=0)

Слайд 7

Yarn может работать оффлайн yarn add --offline yarn add @version --offline

Yarn может работать оффлайн
yarn add --offline
yarn add @version --offline

Слайд 8

Слайд 9

HTML HTML-препроцессоры Плагины Emmet PugJS (Jade)

HTML

HTML-препроцессоры

Плагины

Emmet

PugJS (Jade)

Слайд 10

Установка: Установить ruby, затем gem install haml npm: npm i gulp-haml yarn: yarn add gulp-haml

Установка:
Установить ruby, затем gem install haml
npm: npm i gulp-haml
yarn: yarn add

gulp-haml
Слайд 11

Syntax: %h1 Hello World! - -> Hello World! .content Hello World!

Syntax:
%h1 Hello World! - ->

Hello World!


.content Hello World! - ->

Hello World!

#main Yeah!!! -->
Yeah!!!

%span{:class => “code”, :id => “main”} What’s up!
%span.code#main What’s up!
%span
Multiline
text
Слайд 12

PugJS (Jade) npm: npm i gulp-pug yarn: yarn add gulp-pug

PugJS (Jade)

npm: npm i gulp-pug
yarn: yarn add gulp-pug

Слайд 13

Syntax: h1 Hello World! - -> Hello World! .content Hello World!

Syntax:
h1 Hello World! - ->

Hello World!


.content Hello World! - ->

Hello World!

#main Yeah!!! -->
Yeah!!!

span(class=“code”, id=“main”) What’s up!
span.code#main What’s up!

PugJS (Jade)

Слайд 14

Syntax: span --> |some --> some |text --> text --> input(

Syntax:
span -->
|some --> some
|text --> text
-->

input( -->

type=”checkbox” name=”agreement>
type=”checkbox”
name=”agreement”
)

PugJS (Jade)

Слайд 15

CASE - var friends = 10 case friends when 0 p

CASE
- var friends = 10
case friends
when 0
p you have

no friends
when 1
p you have a friend
default
p you have #{friends} friends

you have 10 friends


PugJS (Jade)

CODE
for (var x = 0; x < 3; x++)
li item

  • item

  • item

  • item

  • COMMENTS
    //(-) some comment

    Слайд 16

    CONDITIONALS - var authorised = false #user if !authorised h2.green Not

    CONDITIONALS
    - var authorised = false
    #user
    if !authorised
    h2.green Not Authorised
    else

    if authorised
    h2.blue Authorised

    Not Authorised



    PugJS (Jade)

    Слайд 17

    INCLUDES //index.pug include includes/head.pug body h1 some header //head.pug head title

    INCLUDES
    //index.pug
    include includes/head.pug
    body
    h1 some header
    //head.pug
    head
    title My Site

    PugJS (Jade)


    My Site


    some

    header

    Слайд 18

    ITERATION ul each val, index in ['zero', 'one', 'two'] li= index

    ITERATION
    ul
    each val, index in ['zero', 'one', 'two']
    li= index +

    ': ' + val

    • 0: zero

    • 1: one

    • 2: two


    PugJS (Jade)

    MIXINS
    mixin pet(name)
    li.pet= name
    ul
    +pet('cat')
    +pet('dog')


    • cat

    • dog


    Слайд 19

    Emmet Syntax: > - вложенность + - следующий элемент на том

    Emmet

    Syntax:
    > - вложенность
    + - следующий элемент на том же уровне
    ^ -

    расположить элемент на уровне выше
    . - класс
    # - идентификатор
    *(number) - дублировать элемент
    () - группировка
    {} - текст внутри тега
    [] - аттрибуты
    $(@-) - заменяется на цифры
    Слайд 20

    CSS CSS-препроцессоры Плагины Emmet

    CSS

    CSS-препроцессоры

    Плагины

    Emmet

    Слайд 21

    Установка: npm: npm i gulp-sass yarn: yarn add gulp-sass Установка через

    Установка:
    npm: npm i gulp-sass
    yarn: yarn add gulp-sass

    Установка через app:
    compass.app, koala, livereload,

    prepros, scout-app
    Слайд 22

    Syntax: Variables: $main-color: red; body { color: $main-color; } body {

    Syntax:
    Variables:
    $main-color: red;
    body {
    color: $main-color;
    }
    body {
    color: red;
    }

    Nesting:
    body {

    font-size: 14px;
    .content {
    line-height: 1px;
    }
    }
    body {
    font-size: 14px;
    }
    body .content {
    line-height: 1px;
    }
    Слайд 23

    Syntax: Partials: _partials.scss @import “partials” Mixins: @mixin border-radius($radius) { -webkit-border-radius: $radius;

    Syntax:
    Partials:
    _partials.scss
    @import “partials”

    Mixins:
    @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius:

    $radius; border-radius: $radius; } .box { @include border-radius(10px); }
    Слайд 24

    Syntax: Extends: %message-shared { border: 1px solid #ccc; padding: 10px; color:

    Syntax:
    Extends:
    %message-shared { border: 1px solid #ccc; padding: 10px; color: #333; }
    .success

    { @extend %message-shared; border-color: green; }

    Operators:
    - / * %

    Слайд 25

    Установка: npm: npm i gulp-less yarn: yarn add gulp-less

    Установка:
    npm: npm i gulp-less
    yarn: yarn add gulp-less

    Слайд 26

    Syntax: Variables: @main-color: red; body { color: @main-color; } body {

    Syntax:
    Variables:
    @main-color: red;
    body {
    color: @main-color;
    }
    body {
    color: red;
    }

    Nesting:
    .main {

    font-size: 14px;
    &_content {
    line-height: 1px;
    }
    }
    .main {
    font-size: 14px;
    }
    .main_.content {
    line-height: 1px;
    }
    Слайд 27

    Syntax: Merge: .mixin() { box-shadow+: inset 0 0 10px #555; }

    Syntax:
    Merge:
    .mixin() { box-shadow+: inset 0 0 10px #555; } .myclass { .mixin();

    box-shadow+: 0 0 20px black; }

    .myclass { box-shadow: inset 0 0 10px #555, 0 0 20px black; }

    Слайд 28

    Syntax: Mixins: .my-hover-mixin() { &:hover { border: 1px solid red; }

    Syntax:
    Mixins:
    .my-hover-mixin() { &:hover { border: 1px solid red; } } button { .my-hover-mixin(); }

    Imports:
    @import

    (less) "foo.css";
    Слайд 29

    Установка: npm: npm i gulp-stylus yarn: yarn add gulp-stylus

    Установка:
    npm: npm i gulp-stylus
    yarn: yarn add gulp-stylus

    Слайд 30

    Syntax: Variables: main-color = #f1f1f1 body { color: main-color } body

    Syntax:
    Variables:
    main-color = #f1f1f1
    body {
    color: main-color
    }
    body {
    color: #f1f1f1;
    }

    . []

    ! ~ + - is defined ** * / % + - ... .. <= >= < > in == is != is not isnt is a && and || or ?: = := ?= += -= *= /= %= not if unless
    Слайд 31

    Syntax: Mixins: border-radius(n) -webkit-border-radius n -moz-border-radius n border-radius n form input[type=button]

    Syntax:
    Mixins:
    border-radius(n) -webkit-border-radius n -moz-border-radius n border-radius n form input[type=button] border-radius(5px)

    form input[type=button] {

    -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
    Слайд 32

    Syntax: Functions: add(a, b = a) a + b add(10, 5)

    Syntax:
    Functions:
    add(a, b = a) a + b add(10, 5) // =>

    15 add(10) // => 20
    Слайд 33

    Syntax: @import and @require: @require ‘header’ @import ‘footer.css’ @extend: .message {

    Syntax:
    @import and @require:
    @require ‘header’
    @import ‘footer.css’

    @extend:
    .message { padding: 10px; border: 1px solid

    #eee; } .warning { @extend .message; color: #E2E21E; }
    Слайд 34

    Emmet Syntax: + - добавить свойство * { m0+p0 } *

    Emmet

    Syntax:
    + - добавить свойство
    * {
    m0+p0
    }
    * {
    margin: 0;
    padding: 0;
    }

    Слайд 35

    Слайд 36

    Слайд 37

    Слайд 38

    Слайд 39

    Слайд 40

    CSS Новый CSS

    CSS

    Новый CSS

    Слайд 41

    Слайд 42

    Преимущества: Скорость Модульность Функции, невозможные на Sass

    Преимущества:
    Скорость
    Модульность
    Функции, невозможные на Sass

    Слайд 43

    Новый проект

    Новый проект

    Слайд 44

    Слайд 45

    Слайд 46

    Task runners Grunt

    Task runners

    Grunt

    Слайд 47

    Установка: npm: npm i grunt-cli -g npm i grunt -D touch

    Установка:
    npm: npm i grunt-cli -g
    npm i grunt -D
    touch Gruntfile.js
    yarn:

    yarn add grunt
    touch Gruntfile.js

    Grunt

    Слайд 48

    Grunt

    Grunt

    Слайд 49

    Grunt

    Grunt

    Слайд 50

    Установка: npm: npm i gulp-cli -g npm i gulp -D touch

    Установка:
    npm: npm i gulp-cli -g
    npm i gulp -D
    touch gulpfile.js
    yarn:

    yarn add gulp
    touch gulpfile.js
    Слайд 51

    Слайд 52

    Vinyl FS

    Vinyl FS

    Слайд 53

    Слайд 54

    Слайд 55

    Слайд 56

    Слайд 57

    Webpack

    Webpack

    Слайд 58

    Вопросы?

    Вопросы?