Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tools and Workflow - London Ajax

Tools and Workflow - London Ajax

Learn about how in a responsive world we can look at using tools and adapting our workflow to become more producting

Jonathan Fielding

April 09, 2014
Tweet

More Decks by Jonathan Fielding

Other Decks in Technology

Transcript

  1. @jonthanfielding #FrontendTooling
    Tools and Workflow
    Jonathan Fielding - @jonthanfielding
    !
    Please use hashtag #FrontendTooling for this talk

    View Slide

  2. @jonthanfielding #FrontendTooling
    With responsive design,
    our jobs as developers is
    getting harder

    View Slide

  3. @jonthanfielding #FrontendTooling

    View Slide

  4. @jonthanfielding #FrontendTooling
    It’s important we get the
    most out of our workflow

    View Slide

  5. @jonthanfielding #FrontendTooling
    What tools can I use to enhance
    my web development?
    Where do these tools fit in a
    development workflow?

    View Slide

  6. @jonthanfielding #FrontendTooling
    The problem was…

    View Slide

  7. @jonthanfielding #FrontendTooling
    I found a sea of tools

    View Slide

  8. @jonthanfielding #FrontendTooling
    I found a sea of tools

    View Slide

  9. @jonthanfielding #FrontendTooling
    But how do I sift
    between them all?

    View Slide

  10. @jonthanfielding #FrontendTooling
    How do I know which
    tools suit the way I work?

    View Slide

  11. @jonthanfielding #FrontendTooling
    First we can split them
    into the parts of our
    workflow

    View Slide

  12. @jonthanfielding #FrontendTooling

    View Slide

  13. @jonthanfielding #FrontendTooling
    Scaffolding

    View Slide

  14. @jonthanfielding #FrontendTooling
    What do scaffolding tools do?
    • Setup a boilerplate
    • Install dependencies
    and sometimes -
    • configure build tools
    • setup source control

    View Slide

  15. @jonthanfielding #FrontendTooling
    What tools can I use for scaffolding
    Grunt-init
    Yeoman

    View Slide

  16. @jonthanfielding #FrontendTooling
    Yeoman

    View Slide

  17. @jonthanfielding #FrontendTooling
    Install Yeoman

    View Slide

  18. @jonthanfielding #FrontendTooling
    Install a Yeoman Generator

    View Slide

  19. @jonthanfielding #FrontendTooling
    Install a Yeoman Generator

    View Slide

  20. @jonthanfielding #FrontendTooling
    Scaffold with a Yeoman
    Generator

    View Slide

  21. @jonthanfielding #FrontendTooling
    Scaffold with a Yeoman
    Generator

    View Slide

  22. @jonthanfielding #FrontendTooling
    Project structure

    View Slide

  23. @jonthanfielding #FrontendTooling
    Demo

    View Slide

  24. @jonthanfielding #FrontendTooling
    Grunt-init

    View Slide

  25. @jonthanfielding #FrontendTooling
    Install Grunt-init

    View Slide

  26. @jonthanfielding #FrontendTooling
    Install Grunt-init template

    View Slide

  27. @jonthanfielding #FrontendTooling
    Run Grunt-init

    View Slide

  28. @jonthanfielding #FrontendTooling
    Run Grunt-init

    View Slide

  29. @jonthanfielding #FrontendTooling
    Project structure

    View Slide

  30. @jonthanfielding #FrontendTooling
    Demo

    View Slide

  31. @jonthanfielding #FrontendTooling
    Abstractions

    View Slide

  32. @jonthanfielding #FrontendTooling
    What are abstractions?
    • Abstract away from the languages
    of the web
    • Aim to make development quicker,
    simpler
    • Compile to the browsers native
    language

    View Slide

  33. @jonthanfielding #FrontendTooling
    Examples of abstractions
    • CSS Preprocessors 

    e.g Sass, Stylus and Less
    • HTML Abstractions 

    e.g HAML, Markdown
    • Javascript Abstractions 

    e.g Typescript, CoffeeScript, Dart

    View Slide

  34. @jonthanfielding #FrontendTooling
    CSS Preprocessors

    View Slide

  35. @jonthanfielding #FrontendTooling
    Features of CSS Preprocessors
    • Variables
    • Nesting
    • Import stylesheets
    • Mixins
    • Functions

    View Slide

  36. @jonthanfielding #FrontendTooling
    What CSS Preprocessors are
    available
    Less
    Sass

    View Slide

  37. @jonthanfielding #FrontendTooling

    View Slide

  38. @jonthanfielding #FrontendTooling
    What is Sass?
    An abstraction of CSS called a 

    CSS pre-processor which is
    written in Ruby

    View Slide

  39. @jonthanfielding #FrontendTooling
    Install Sass

    View Slide

  40. @jonthanfielding #FrontendTooling
    Sass Syntax
    @import “variables";!
    @import “mixins";!
    !
    .class-name {!
    background: #000;!
    p {!
    @include font-size(14px);!
    color: $text-color;!
    !
    span {!
    color: #eee;!
    }!
    }!
    }
    Import other
    Sass files
    Use mixin
    to generate
    CSS
    Nesting
    Use variable
    to define color

    View Slide

  41. @jonthanfielding #FrontendTooling
    Compile Sass

    View Slide

  42. @jonthanfielding #FrontendTooling
    Compiled CSS
    /* line 1, ../sass/screen.scss */!
    .class-name {!
    background: #000;!
    }!
    /* line 3, ../sass/screen.scss */!
    .class-name p {!
    font-size: 14px;!
    color: #fff;!
    }!
    /* line 6, ../sass/screen.scss */!
    .class-name p span {!
    color: #eee;!
    }!

    View Slide

  43. @jonthanfielding #FrontendTooling

    View Slide

  44. @jonthanfielding #FrontendTooling
    What is Less?
    An abstraction of CSS called a 

    CSS pre-processor which is
    written in JavaScript

    View Slide

  45. @jonthanfielding #FrontendTooling
    Install Less

    View Slide

  46. @jonthanfielding #FrontendTooling
    Less Syntax
    @import “variables.less”;!
    @import “mixin.less”!
    !
    .class-name {!
    background: #000;!
    p {!
    ! ! .font14();!
    color: #fff;!
    !
    span {!
    color: #eee;!
    }!
    }!
    }
    Import other
    Sass files
    Use mixin
    to generate
    CSS
    Nesting

    View Slide

  47. @jonthanfielding #FrontendTooling
    Compile Less

    View Slide

  48. @jonthanfielding #FrontendTooling
    Compiled CSS
    .class-name {!
    background: #000;!
    }!
    !
    .class-name p {!
    font-size: 14px;!
    color: #fff;!
    }!
    !
    .class-name p span {!
    color: #eee;!
    }!

    View Slide

  49. @jonthanfielding #FrontendTooling
    HTML Abstractions

    View Slide

  50. @jonthanfielding #FrontendTooling

    View Slide

  51. @jonthanfielding #FrontendTooling
    What is Markdown?
    A text formatting engine that can
    be compiled into other
    languages, commonly used to
    generate HTML

    View Slide

  52. @jonthanfielding #FrontendTooling
    Install Markdown

    View Slide

  53. @jonthanfielding #FrontendTooling
    Markdown Syntax
    #Main Heading!
    !
    ##Secondary Heading!
    !
    Integer posuere erat a ante venenatis dapibus
    posuere velit aliquet.!
    !
    Integer posuere erat a ante venenatis dapibus
    posuere velit aliquet.!
    !
    ###Todo List!
    !
    * Compile markdown
    Heading 1
    Paragraphs
    Heading 2
    Heading 3
    List

    View Slide

  54. @jonthanfielding #FrontendTooling
    Compile Markdown

    View Slide

  55. @jonthanfielding #FrontendTooling
    Compiled HTML
    Main Heading
    !
    Secondary Heading
    Integer posuere erat a ante venenatis dapibus posuere velit
    aliquet.
    Integer posuere erat a ante venenatis dapibus posuere velit
    aliquet.
    !
    Todo List

    Compile markdown

    View Slide

  56. @jonthanfielding #FrontendTooling
    Iteration

    View Slide

  57. @jonthanfielding #FrontendTooling
    What is Iteration?
    • Every time we save our code
    and view it in our browser we
    are creating an iteration of the
    site
    • We save, refresh our browser,
    go back to our editor

    View Slide

  58. @jonthanfielding #FrontendTooling
    What are iteration tools?
    • Tools that enable us to quickly
    iterate by automating steps we
    need to take after each save

    View Slide

  59. @jonthanfielding #FrontendTooling
    What tools can I use for iterating
    Grunt
    Bower

    View Slide

  60. @jonthanfielding #FrontendTooling
    Grunt

    View Slide

  61. @jonthanfielding #FrontendTooling
    What is Grunt?
    Grunt is a task runner which
    enables us to automate tasks by
    defining tasks it should run

    View Slide

  62. @jonthanfielding #FrontendTooling
    What tasks can Grunt run?
    • Compilation of Abstractions
    • Unit Testing
    • Linting
    • Concatenation
    • Minification
    • and many more

    View Slide

  63. @jonthanfielding #FrontendTooling
    Installing Grunt
    Grunt comes in two parts:
    Install Command Line Tool Globally
    !
    Install grunt locally

    View Slide

  64. @jonthanfielding #FrontendTooling
    Create a Gruntfile.js
    module.exports = function(grunt) {
    //Grunt configuration goes here
    grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    !
    });
    };

    View Slide

  65. @jonthanfielding #FrontendTooling
    Setting up a task
    In the console

    View Slide

  66. @jonthanfielding #FrontendTooling
    Setting up a task
    In the Gruntfile.js
    grunt.initConfig({!
    pkg: grunt.file.readJSON('package.json'),!
    compass: {!
    dev: {!
    options: {!
    sassDir: 'sass',!
    cssDir: 'css',!
    imagesDir: 'images',!
    environment: 'development',!
    httpGeneratedImagesPath: ' images'!
    }!
    }!
    }!
    });!
    Task
    Target

    View Slide

  67. @jonthanfielding #FrontendTooling
    Setting up a task
    In the Gruntfile.js
    grunt.loadNpmTasks(‘grunt-contrib-compass’);!
    !
    grunt.registerTask('default', ['compass:dev']);

    View Slide

  68. @jonthanfielding #FrontendTooling
    Demo

    View Slide

  69. @jonthanfielding #FrontendTooling
    Bower

    View Slide

  70. @jonthanfielding #FrontendTooling
    What is Bower?
    Bower is a package manager
    that enables us to install
    dependencies

    View Slide

  71. @jonthanfielding #FrontendTooling
    Install Bower

    View Slide

  72. @jonthanfielding #FrontendTooling
    Install a package using
    Bower

    View Slide

  73. @jonthanfielding #FrontendTooling
    Demo

    View Slide

  74. @jonthanfielding #FrontendTooling
    Splitting out the tools into
    steps of our workflow is
    great

    View Slide

  75. @jonthanfielding #FrontendTooling
    But tools don’t always fit
    into one part of our
    process

    View Slide

  76. @jonthanfielding #FrontendTooling

    View Slide

  77. @jonthanfielding #FrontendTooling
    Any questions?

    View Slide

  78. @jonthanfielding #FrontendTooling
    Check out my new book
    • Learn how to make your
    sites responsive
    • Chapter on
    development tools
    and workflow
    • http://bitly.com/NXusZn
    • Discount code: 30HT14

    View Slide

  79. @jonthanfielding #FrontendTooling
    TalkTalk is hiring
    • Looking for 2-3 Senior Developers
    • Looking for 1-2 Mid-weight Developers
    • Grab me if your interested

    View Slide

  80. @jonthanfielding #FrontendTooling
    Find out more about
    frontend workflow at
    frontendworkflow.com

    View Slide