Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Front End Workflow
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Matt Bailey
October 17, 2015
Technology
1.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Front End Workflow
A look at current front end workflow - tools, techniques, methodologies.
Matt Bailey
October 17, 2015
More Decks by Matt Bailey
See All by Matt Bailey
How I acheived a pretty good Google PageSpeed Insights score
mattbailey
1
150
Workshop: Making Responsive Websites Fast
mattbailey
0
70
GPMD - Our Journey
mattbailey
0
85
Other Decks in Technology
See All in Technology
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
190
書籍セキュアAPIについて
riiimparm
0
390
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
2
200
1台から試せる!Edge IoTを使った位置情報の活用設計【SORACOM Discovery 2026】
soracom
PRO
0
110
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
770
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
170
VPCセキュリティ対応の最新事情
nagisa53
1
350
エンタープライズデータへ安全につなぐ Production-ready なエージェント設計 ― AI × MCP リファレンスアーキテクチャ ― #AIDevDay
cdataj
1
300
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
260
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
1.6k
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
100
AI研修(Day2)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
1.5k
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
My Coaching Mixtape
mlcsv
0
180
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The agentic SEO stack - context over prompts
schlessera
0
850
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Transcript
Front End Workflow
None
My Journey Where I’ve Come From Where I Am Now
What’s Next
Matt Bailey @_mattbailey mattbailey.io
Creative Director gpmd.co.uk
Design Front End Development
My Journey
Where I’ve Come From
The Transition From Analogue To Digital
None
None
Where I Am Now
It’s still very much a journey Learning new things on
a daily basis
Responsive Web Design
None
Responsive Web Design Has Created Significant Challenges A Need For
A More ‘Agile’ Approach In Our Design Process
None
None
None
Design & Development Tools Have Changed Dramatically
None
None
Countless Frameworks, Platforms, Content Management Systems, Site Generators etc.
None
Source code and version control management
Consistent Development Environments
None
Multi-device testing
None
Dependency And Package Managers, Preprocessors, Build Tools, And Methodologies
None
Coding Languages, Coding Style And Methodologies
CSS Preprocessors Less Sass (SCSS) Stylus
Huge Increase In Efficiency More Like A ‘Proper’ Programming Language
Variables Mixins Functions Extends And so on…
BEM Block Element Modifier
.block {} .block__element {} .block__element--modifier {}
BEM helps us write CSS that… Easy to scale Is
clear and obvious in its purpose Is self-documenting http://www.gpmd.co.uk/blog/our-approach-to-bem/
ITCSS Inverted Triangle CSS Harry Roberts (CSS Wizardry)
Settings Tools Generic Base Objects Vendor Components Trumps
A Highly Modular Way Of Structuring CSS Starts With Low
Specificity (HTML tags) Rules Ends With High Specificity/Complexity Rules http://www.gpmd.co.uk/blog/scalable-css/
my-project/ `- src/ `- styles/ |- settings/ # Variables |-
tools/ # Functions, mixins etc. |- generic/ # Low-specificity (normalize) |- base/ # Unclassed HTML elements |- objects/ # Design-free objects & patterns |- vendor/ # Third party components |- components/ # Modules, widgets etc. (theme) `- trumps/ # Helper classes and overrides
Sassbase https://github.com/gpmd/sassbase
Performance & Optimisation
Image Optimisation & Delivery
‘picture’ element, & ’srcset’ and ‘sizes’ Content Delivery Networks Image
Management Pipeline - Dynamically deliver different image sizes and file formats (WebP, JPEGXR etc.) to end users
Critical Rendering Path
Methods And Best Practices For Improving The Render Time Of
Our Pages Minify/uglifying Remove render blocking CSS/JavaScript Load JavaScript asynchronously Inline critical CSS in the head etc…
A Hugely Diverse Role
Coding Standards & Conventions Style Guides and Pattern Libraries Dependency
Management & Package Managers Build Systems Regression Testing Performance Optimisation Continuous Integration Documentation
Designer & Front End Architect
–Elyse Holladay “I want to build systems, architectures. I want
my users to be my fellow developer and designers as much as the end user. I want to make a site where the code on the inside looks as great as the outside, and make it easy to do things like theme, A/B test, and build new modules.”
Let’s Do This
None
Project Structure
my-project/ # Project (Git) root | |- public_html/ # Web
root | `- themes/ | `- my-theme/ # (dist) Build destination | |- src/ # Source files | |- bower_components/ # Front end components |- bower.json | |- node_modules/ # Build dependencies |- package.json | `- Gruntfile.js # Build config
Dependency Management
Build System Dependencies
grunt grunt-autoprefixer grunt-concurrent grunt-contrib-clean grunt-contrib-concat grunt-contrib-copy grunt-contrib-cssmin grunt-contrib-imagemin grunt-contrib-jshint grunt-contrib-uglify
grunt-contrib-watch grunt-csscss grunt-modernizr grunt-sass grunt-scss-lint grunt-spritesmith grunt-stylestats load-grunt-config jshint-stylish time-grunt
Front End Components
picturefill modernizr normalize.css normalize-opentype.css jquery respond jquery-hoverIntent smooth-scroll owl-carousel2 background-size-polyfill
jquery-replacetext CSS3MultiColumn isotope imagesloaded tablesaw
Build System
Task Manager
Gruntfile.js load-grunt-config - separate out task configs build environments -
‘prod’ and ‘dev’
module.exports = function(grunt) { # Use load-grunt-config require('load-grunt-config')(grunt, { jitGrunt:
true, # Use fast plugin loader init: true, data: { # $ grunt --env=prod (or) --env=dev env: grunt.option('env') || 'prod', # src and dynamic dist locations project: { src: 'src', dist: '<% if (env === "prod") { %>tmp<% } else { %>dist<% } %>' } } }); };
Grunt Task Configs In Separate Files
my-project/ | |- grunt/ | |- sass.js | |- uglify.js
| |- watch.js | `- # etc. | `- Gruntfile.js
aliases.js
module.exports = function(grunt, data) { var env = data.env ||
'prod'; return { default: { # Default build tasks: [env] }, dev: { # Dev build tasks tasks: [ ‘concurrent:devFirst', 'concurrent:devSecond' ] }, prod: { # Production build tasks tasks: [ 'concurrent:prodFirst', 'concurrent:prodSecond' ] } }; };
concurrent.js
module.exports = { options: { limit: 3 }, devFirst: [
# 1st dev target 'clean:dev' ], devSecond: [ # 2nd dev target 'sass:dev', 'uglify:dev' ], prodFirst: [ # 1st production target 'clean:prod' ], prodSecond: [ # 2nd production target 'sass:prod', 'uglify:prod' ] };
Sass Tasks grunt-sass - Uses fast libsass compiler grunt-scss-lint -
Lint your SCSS files css-min - Efficient CSS minifier
CSS Reporting Tasks grunt-csscss - Find duplicated declarations grunt-stylestats -
Evaluate & report CSS stats
And the rest… grunt-autoprefixer grunt-modernizr grunt-contrib-concat grunt-contrib-imagemin grunt-spritesmith grunt-contrib-jshint grunt-contrib-uglify
grunt-contrib-watch etc…
Gruntbase https://github.com/gpmd/gruntbase
Git Hooks
post-merge Runs after a `git merge` or `git pull`
1. Checks for changed files 2. Runs npm install &&
npm prune 3. Runs bower install && bower prune 4. Runs grunt
pre-commit Runs before a `git commit`
1. Runs grunt 2. Won’t commit if build fails git
commit -m “My Message” -n
my-project/ | |- .git | `- hooks | |- post-merge
-> ../../githooks/post-merge | `- pre-commit -> ../../githooks/pre-commit | `- githooks |- post-merge `- pre-commit
Initial Setup
setup.sh > 1. githooks.sh # Creates Git hook symlinks 2.
build.sh # Installs dependencies and runs build
What’s Next?
None
CSS Namespacing
More transparent code http://csswizardry.com/2015/03/more- transparent-ui-code-with-namespaces/
o- # object c- # Component u- # utility t-
# theme s- # Scope is-, has- # State _ # Hack js- # Javascript qa- # QA
‘Living’ Style Guides
None
SC5 Styleguide Generator Hologram Pattern Lab Fabricator SourceJS http://www.smashingmagazine.com/2015/04/an-in- depth-overview-of-living-style-guide-tools/
Visual Regression Testing
None
BackstopJS Resemble.js PhantomCSS
Deployment Server Continuous Integration (Lite)
One server for all builds All the build tools and
dependencies in one place Push only built code to production server
That’s All Folks
None
Thank You speakerdeck.com/mattbailey/front-end-workflow @_mattbailey mattbailey.io