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

Tooling for Modern Web App Developer

Tooling for Modern Web App Developer

Front-end development workflow is becoming increasingly demanding as the complexity of the environment grows. Thankfully, there are many tools that can make your life as a front-end developer easier and perhaps, more rewarding.

The primary objective of this session is to get an idea about end-to-end front-end workflow and useful tools. We will discuss hot tools like Yeoman, Grunt and Bower. But the session is not limited to these tools - we will touch each phase of front-end development like boiler-plating, preprocessors, performance, documentation, code quality, reporting and architecture etc.

praveen vijayan

August 07, 2013
Tweet

More Decks by praveen vijayan

Other Decks in Programming

Transcript

  1. Javascript CSS HTML Boilerplate Backbone Angular Backbone + amd Normalize.css

    HTML5 Boilerplate Mobile Boilerplates Emailer Boilerplate Authoring abstractions Coffeescript Typescript Dart SCSS LESS Stylus Markdown JADE HAML Frameworks jQuery, Backbone, Angular, Ember Bootstrap, Topcoat, Pure, Foundation Bootstrap, html5 Boilerplate Iteration workflow Grunt, Brunch, Yeoman, Codekit, Prepros, Livereload Performance tuning and code quality Chrome dev tools, Heap profile, Timeline, Tracing, linting Frame rate Continuous painting Selector profile CSSLint Recess Network panel Validation W3C validator HTML inspector DOM Monster Optimization Uglifyjs Closure compiler r.js Cssmin YUI compressor cssoo Htmlmin Image optimization Shared understanding YUI Doc Docco KSS Styledocco
  2. Model View View Adapter Structure JS MV * Model View

    Presenter Model View Controller Model View ViewController Model View ViewModel
  3. Modular Javascript Combine related scripts together Minifies it via UglifyJS/

    Closure Compiler Optimize CSS r.js optimizer $ node r.js -o baseUrl=. paths. jquery=some/other/jquery name=main out=main- built.js
  4. TDD / BDD Why TDD? Design your code well Build

    confidence to use your code Don’t let same bug popup twice Seamless change requests adaption Automatic Documentation Continuous Integration
  5. Continuous Integration Continuous integration – the practice of frequently integrating

    one's new or changed code with the existing code repository – should occur frequently enough that no intervening window remains between commit and build, and such that no errors can arise without developers noticing them and correcting them immediately CI -wikipedia
  6. CSS

  7. What is CSS Preprocessors Stylesheet meta language that is interpreted

    into CSS $basecolor: #f1f1f1; body{ background: $basecolor } body { background: #f1f1f1; } SC SS C SS
  8. Compiling Deployment Server Client Local Compile as part of deployment

    process (Capistrano, Fabric). Compile and cache up on request. Compile using javascript at browser end (not recommended) Compile using tools.
  9. OOCSS Purpose of OOCSS is to identify common pattern &

    encourage code reuse Main principles Separate structure and skin Separate container and content
  10. BEM Block : A block is an independent entity. Element

    : An element is a part of a block that performs a certain function. Blocks and elements constitute page content. Modifier : Similar block with slightly altered its appearance or behavior..
  11. SMACSS Base : Base rules are the defaults. Layout :

    Divide the page into sections. Layouts hold one or more modules together. Module : are the reusable, modular parts of our design. State : are ways to describe how our modules or layouts will look when in a particular state. Is it hidden or expanded? Theme : are similar to state rules in that they describe how modules or layouts might look.
  12. KSS style guide /* A button suitable for giving stars

    to someone. :hover - Subtle hover highlight. .stars-given - A highlight indicating you've already given a star. .stars-given:hover - Subtle hover highlight on top of stars-given styling. .disabled - Dims the button to indicate it cannot be used. Styleguide 2.1.3. */ a.button.star{ ... } a.button.star.stars-given{ ... } a.button.star.disabled{ ... }
  13. Performance optimization tools Minify CSS, HTML, JS Concat CSS, JS

    Optimise image using optipng, jpegtran etc..
  14. Lightning-fast scaffolding Great build process Automatically compile CoffeeScript & Compass

    Automatically lint your scripts Built-in preview server Awesome Image Optimization Killer package management PhantomJS Unit Testing Yeoman It's a workflow collection of tools and best practices
  15. Yeoman Install npm install -g yo grunt-cli bower npm install

    -g generator-webapp yo webapp Usage grunt server grunt test grunt