SlideShare a Scribd company logo
1 of 144
Download to read offline
OPTIMISING YOUR
FRONT END
WORKFLOW
MATTHEW
DAVIS
@mdavis1982
PhpSpec

phpspec/nyan-formatters
PhpSpec

R!
WW
AW
R
phpspec/nyan-formatters
Terrible at jokes
Terrible at jokes

Sorry!
Advances in back end code
D
DD

COM
POSI
TION
ENICS
STH
CALI

Advances in back end code
Y
R
D

TDD

PSR

ES
FAC
TER
IN

SOLID
COMPOSER
When we look at front end code…
Cool tools for front end code
BOWER

S
S
LE
SASS

ANGULAR

GRU

NT
I PT
R for front end code
SC
E tools
Cool
FFE
CO
IG
W
GU
T
LP
N
MA
EO
Y
REQUI
RE JS
* more
And a GAZILLION
* more
And a GAZILLION

*approximately
Lack of practical examples
😢
Let’s change that!
😄
Example Project

https://github.com/mdavis1982/workflow
Example Project
Simple Article Management

https://github.com/mdavis1982/workflow
Example Project
Simple Article Management
Administration Area
https://github.com/mdavis1982/workflow
Twig
Insanely powerful
Insanely powerful
Compiled and cached
Insanely powerful
Compiled and cached
Often overlooked
Translate all the things
Translations are notoriously
messy
But it’s easy to keep them
organised
config.yml

framework:

translator:

{ fallback: "%locale%" }
Article.php
/**

* The title of the Article

*

* @var string

*

* @ORMColumn(type="string", length=255)

*

* @AssertNotBlank(message="article.title.not_blank")

* @AssertLength(

*
max=255,

*
maxMessage="article.title.length.max"

* )

*/

protected $title;
validators.en.yml
article:

title:

not_blank: You must enter a title

length:

max: The title cannot be longer than {{ limit }}
characters



content:

not_blank: You must enter some content

ArticleType.php
$builder

->add(

'title',

'text',

[

'label' => 'article.label.title'

]

)
ArticleType.php
$builder

->add(

'title',

'text',

[

'label' => 'article.label.title'

]

)	

For all properties in the form
forms.en.yml
article:

label:

title: Title

content: Content

submit: Save

forms.en.yml?!
ArticleType.php
/**

* {@inheritdoc}

*/

public function setDefaultOptions(OptionsResolverInterface $resolver)

{

$resolver->setDefaults([

'data_class'
=> 'MDEntityArticle',

'translation_domain' => 'forms'

]);

}
When your translations don’t
work…
CLEAR THE CACHE!
CLEAR THE CACHE!

Even in the dev environment
Translate everything
Translate everything
All titles, actions, single words
Translate everything
All titles, actions, single words
Translations per ‘section’
admin.en.yml
article:

title:

list: All Articles

create: Add a New Article



action:

create: Add New

cancel: Cancel

list.html.twig
{% block body %}

<h1>{{ 'article.title.list'|trans({}, 'admin') }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans({}, 'admin') }}	
</a>

{% endblock body %}
Messy
Template Inheritance
Default base template
base.html.twig
<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>{% block title %}Welcome!{% endblock %}</title>

{% block stylesheets %}{% endblock %}

<link rel="icon" type="image/x-icon"
href="{{ asset('favicon.ico') }}" />

</head>

<body>

{% block body %}{% endblock %}

{% block javascripts %}{% endblock %}

</body>

</html>
Doesn’t promote great code
base.html.twig
<!doctype html>



<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7 ]>
<html lang="en" class="no-js ie7 lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8 ]>
<html lang="en" class="no-js ie8 lt-ie9"> <![endif]-->

<!--[if IE 9 ]>
<html lang="en" class="no-js ie9"> <![endif]-->

<!--[if (gt IE 9)|!(IE)]><!-->

<html lang="en" class="no-js"><!--<![endif]-->

<head>

<meta charset="utf-8" />

<title>{% block title %}{% endblock title %}</title>



<!-- Set up mobile viewport for responsive design -->

<meta name="viewport" content="width=device-width" />



{% block stylesheets %}{% endblock stylesheets %}

</head>

<body>

{% block content %}{% endblock content %}

{% block javascripts %}{% endblock javascripts %}

</body>

</html>

Gives us a better foundation
The same HTML structure and
assets per ‘section’?
New ‘Layouts’ Directory
Directory Structure
admin.html.twig
{% extends "::base.html.twig" %}



{% block title %}	
{{ 'defaults.title'|trans({}, 'admin') }}	
{% endblock title %}



{% block content %}

{% block body %}{% endblock body %}

{% endblock content %}

frontend.html.twig
{% extends "::base.html.twig" %}



{% block title %}{{ 'defaults.title'|trans }}{% endblock title %}



{% block content %}

{% block header %}{% endblock header %}

{% block body %}{% endblock body %}

{% block footer %}{% endblock footer %}

{% endblock content %}
What?!
Change the extends
list.html.twig
{% extends "MDMainBundle:Layouts:admin.html.twig" %}



{% block body %}

<h1>{{ 'article.title.list'|trans({}, 'admin') }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans({}, 'admin') }}	
</a>

{% endblock body %}

Given ourselves flexible base
Given ourselves flexible base
All boilerplate code is DRY
Given ourselves flexible base
All boilerplate code is DRY
Defaults per ‘section’
trans_default_domain
list.html.twig
{% extends "MDMainBundle:Layouts:admin.html.twig" %}



{% trans_default_domain "admin" %}



{% block body %}

<h1>{{ 'article.title.list'|trans }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans }}	
</a>

{% endblock body %}

But wait!
admin.html.twig

{% trans_default_domain "admin" %}
NOPE
And it won’t be fixed
Node.js

http://nodejs.org
Node.js
Server-side JavaScript

http://nodejs.org
Node.js
Server-side JavaScript
Adds extra functionality
http://nodejs.org
npm
npm
Composer for node
npm
Composer for node
Install globally or into project
OMG!!1!
Bower

http://bower.io
Demo:
Installing Bower With No Sudo - Eek!
👎
Demo:
Installing Bower Successfully - Yay!
👍
Getting stuff into your project
Find dependencies
Demo:
Using Bower To Search For Packages - Modernizr
Install dependencies
Demo:
Using Bower To Install Packages - Modernizr
We can do better
.bowerrc
Demo:
Using .bowerrc To Customise Installation Directory
Better
Better
Save dependencies
bower.json
Demo:
Using Bower To Save Dependencies To bower.json
Don’t forget .gitignore
Easy to reference assets
Easy to reference assets
{% block javascripts %}
<script src="{{ asset('/vendor/modernizr/modernizr.js') }}"></script>
{% endblock javascripts %}
Easy to reference assets
{% block javascripts %}
<script src="{{ asset('/vendor/modernizr/modernizr.js') }}"></script>
{% endblock javascripts %}

Globally or per ‘section’
Different locations?
Non-standard install
Non-standard install
Make it clear
Non-standard install
Make it clear
Potentially more flexibility
Gulp

http://gulpjs.com
Build tool
“

Every week someone who doesn’t
understand Make writes a new build
system in JavaScript.
#gruntjs #gearjs #gulpjs #broccolijs.
Laugh or cry?
https://twitter.com/aslak_hellesoy/status/435506106496851968
Streaming
Plugin architecture
Demo:
Installing Gulp Globally With npm
One extra step
Demo:
Installing Gulp and Gulp-Util Into A Project With npm
Don’t forget .gitignore
Minify JavaScript
Demo:
Using Gulp To Minify JavaScript
Use it in our project
frontend.html.twig

{% block javascripts %}

<script src="{{ asset('/web/js/vendor/modernizr.js') }}"></script>

{% endblock javascripts %}
ITCHY NOSE!!!
We have 2 copies in web/
We have 2 copies in web/
Bower install to /assets/vendor
We have 2 copies in web/
Bower install to /assets/vendor
Prevents source being public
(S)CSS
Normal SCSS workflow
frontend.scss
@import "assets/vendor/normalize-scss/normalize";



$body-width: 60% !default;



body

{

width: $body-width;

margin: 0 auto;

}

gulpfile.js
var scss = require('gulp-sass');	
!
!
gulp.task('scss', function() {

return gulp.src('assets/scss/*.scss')

.pipe(scss())

.pipe(gulp.dest('web/css'));

});
frontend.html.twig

{% block stylesheets %}

<link rel="stylesheet" href="{{ asset('/css/frontend.css') }}" />

{% endblock stylesheets %}
matt at Chloe in ~/Sites/workflow.dev on dev *	
🍔 $ gulp scss	
[gulp] Using file /Users/matt/Sites/workflow.dev/gulpfile.js	
[gulp] Working directory changed to /Users/matt/Sites/workflow.dev	
[gulp] Running 'scss'...	
[gulp] Finished 'scss' in 11 ms
Running commands manually
gets old real fast
Watching!
gulpfile.js

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

gulp.watch('assets/scss/**/*.scss', ['scss']);

});
Demo:
Gulp Watch In Action
Awesomesauce!
Only scratching the surface!
Gulp plugins
TESTS

T
IN
L

CONCAT
ONS plugins
ATIGulp
IFIC
OT
N
IG
W
T
SE
I
TIM
BROW
P
O
SERIF
Y

RENAME

COP
Y

GI

T
Custom actions are easy
Setting up a project can be
tedious
Can be taken much further!
GAZILLIONS of tools available
GAZILLIONS of tools available
Don’t use all of them!
Plan it!
Plan it!

**groan**
Questions?
Thanks!
@mdavis1982

More Related Content

What's hot

Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor Oeste
Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor OesteOpus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor Oeste
Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor OesteKP Business
 
Marwa heights-apartments-at-jumeirah-village-brochure -brochure en
Marwa heights-apartments-at-jumeirah-village-brochure -brochure enMarwa heights-apartments-at-jumeirah-village-brochure -brochure en
Marwa heights-apartments-at-jumeirah-village-brochure -brochure enMOHAMMAD ALKHAIL
 
Miracle in the gulf of mexico
Miracle in the gulf of mexicoMiracle in the gulf of mexico
Miracle in the gulf of mexicoJohn Hutchison
 
Correta escolha da caixa de som
Correta escolha da caixa de somCorreta escolha da caixa de som
Correta escolha da caixa de somMarques Valdo
 
Introduction to Javascript Unit Testing With xUnit.js
Introduction to Javascript Unit Testing With xUnit.jsIntroduction to Javascript Unit Testing With xUnit.js
Introduction to Javascript Unit Testing With xUnit.jsSalesforce Developers
 
Owning Ourselves Zine April 4.pdf
Owning Ourselves Zine April 4.pdfOwning Ourselves Zine April 4.pdf
Owning Ourselves Zine April 4.pdfTheMamawiProject
 
SCHEINERMAN, E. R. Matemática discreta.pdf
SCHEINERMAN, E. R. Matemática discreta.pdfSCHEINERMAN, E. R. Matemática discreta.pdf
SCHEINERMAN, E. R. Matemática discreta.pdfGeovana Thiara
 
Genesis Freguesia - Leduca
Genesis  Freguesia - Leduca Genesis  Freguesia - Leduca
Genesis Freguesia - Leduca Web Lançamentos
 
The strip mall
The strip mallThe strip mall
The strip mallZayed Home
 
F5 m instruction manual
F5 m instruction manualF5 m instruction manual
F5 m instruction manualToàn Huỳnh
 
YHR: Spring 2021
YHR: Spring 2021YHR: Spring 2021
YHR: Spring 2021YHRUploads
 
YOU - Brookfield Goiânia
YOU - Brookfield GoiâniaYOU - Brookfield Goiânia
YOU - Brookfield GoiâniaRenato Serra
 
VCO Simulation with Cadence Spectre
VCO Simulation with Cadence SpectreVCO Simulation with Cadence Spectre
VCO Simulation with Cadence SpectreHoopeer Hoopeer
 
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...Ronald G. Shapiro
 
Sonata Private Residences at Shaw Boulevard Mandaluyong City
Sonata Private Residences at Shaw Boulevard Mandaluyong CitySonata Private Residences at Shaw Boulevard Mandaluyong City
Sonata Private Residences at Shaw Boulevard Mandaluyong CityRobinsons Land Corporation
 
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)Habro Group
 
傲大決招
傲大決招傲大決招
傲大決招5045033
 
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdfTRANGGLETV
 

What's hot (20)

Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor Oeste
Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor OesteOpus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor Oeste
Opus Boulevard Des Roses, 4 suítes, 239 a 305 m2, Setor Oeste
 
Marwa heights-apartments-at-jumeirah-village-brochure -brochure en
Marwa heights-apartments-at-jumeirah-village-brochure -brochure enMarwa heights-apartments-at-jumeirah-village-brochure -brochure en
Marwa heights-apartments-at-jumeirah-village-brochure -brochure en
 
Beef hind quarter
Beef hind quarterBeef hind quarter
Beef hind quarter
 
Miracle in the gulf of mexico
Miracle in the gulf of mexicoMiracle in the gulf of mexico
Miracle in the gulf of mexico
 
Correta escolha da caixa de som
Correta escolha da caixa de somCorreta escolha da caixa de som
Correta escolha da caixa de som
 
Introduction to Javascript Unit Testing With xUnit.js
Introduction to Javascript Unit Testing With xUnit.jsIntroduction to Javascript Unit Testing With xUnit.js
Introduction to Javascript Unit Testing With xUnit.js
 
Owning Ourselves Zine April 4.pdf
Owning Ourselves Zine April 4.pdfOwning Ourselves Zine April 4.pdf
Owning Ourselves Zine April 4.pdf
 
SCHEINERMAN, E. R. Matemática discreta.pdf
SCHEINERMAN, E. R. Matemática discreta.pdfSCHEINERMAN, E. R. Matemática discreta.pdf
SCHEINERMAN, E. R. Matemática discreta.pdf
 
Genesis Freguesia - Leduca
Genesis  Freguesia - Leduca Genesis  Freguesia - Leduca
Genesis Freguesia - Leduca
 
The strip mall
The strip mallThe strip mall
The strip mall
 
F5 m instruction manual
F5 m instruction manualF5 m instruction manual
F5 m instruction manual
 
YHR: Spring 2021
YHR: Spring 2021YHR: Spring 2021
YHR: Spring 2021
 
YOU - Brookfield Goiânia
YOU - Brookfield GoiâniaYOU - Brookfield Goiânia
YOU - Brookfield Goiânia
 
VCO Simulation with Cadence Spectre
VCO Simulation with Cadence SpectreVCO Simulation with Cadence Spectre
VCO Simulation with Cadence Spectre
 
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...
Mind Games For Henry Barnard School: Think, Learn & Have Fun!!! Henry Barnard...
 
Sonata Private Residences at Shaw Boulevard Mandaluyong City
Sonata Private Residences at Shaw Boulevard Mandaluyong CitySonata Private Residences at Shaw Boulevard Mandaluyong City
Sonata Private Residences at Shaw Boulevard Mandaluyong City
 
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)
MANUAL DA MESA DE SOM MACKIE 402 VLZ4 (PORTUGUÊS)
 
傲大決招
傲大決招傲大決招
傲大決招
 
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf
트랭글 사용자설명서 [1편] 트랭글로 운동하고 기록등록하기_20220407.pdf
 
Control de bajos
Control de bajosControl de bajos
Control de bajos
 

Viewers also liked

Automating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with GulpAutomating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with GulpAnderson Aguiar
 
Front-end style guides - fronteers @ WHITE (30/08/12)
Front-end style guides - fronteers @ WHITE (30/08/12)Front-end style guides - fronteers @ WHITE (30/08/12)
Front-end style guides - fronteers @ WHITE (30/08/12)Stijn Janssen
 
Managing packages with Bower and NuGet in ASP.NET Core
Managing packages with Bower and NuGet in ASP.NET CoreManaging packages with Bower and NuGet in ASP.NET Core
Managing packages with Bower and NuGet in ASP.NET CorePhilip Domingo
 
Frontend asset management with Bower and Gulp.js
Frontend asset management with Bower and Gulp.jsFrontend asset management with Bower and Gulp.js
Frontend asset management with Bower and Gulp.jsRenan Gonçalves
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworksparkfabrik
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twigmarkstory
 
Front end engineering, YUI Gallery, and your future
Front end engineering, YUI Gallery, and your futureFront end engineering, YUI Gallery, and your future
Front end engineering, YUI Gallery, and your futureLuke Smith
 
Front-End Intelligence
Front-End IntelligenceFront-End Intelligence
Front-End IntelligenceJudy T Raj
 
Workflow User Interfaces Patterns
Workflow User Interfaces PatternsWorkflow User Interfaces Patterns
Workflow User Interfaces PatternsJean Vanderdonckt
 
Unit testing of java script and angularjs application using Karma Jasmine Fra...
Unit testing of java script and angularjs application using Karma Jasmine Fra...Unit testing of java script and angularjs application using Karma Jasmine Fra...
Unit testing of java script and angularjs application using Karma Jasmine Fra...Samyak Bhalerao
 
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow
 
Introduction to Express and Grunt
Introduction to Express and GruntIntroduction to Express and Grunt
Introduction to Express and GruntPeter deHaan
 
Insights on Protractor testing
Insights on Protractor testingInsights on Protractor testing
Insights on Protractor testingDejan Toteff
 
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...busitec GmbH
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayBojan Veljanovski
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)Cezar Luiz
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend developmentsparkfabrik
 
Fast Prototyping Strategies for UI design
Fast Prototyping Strategies for UI designFast Prototyping Strategies for UI design
Fast Prototyping Strategies for UI designLuis Daniel Rodriguez
 

Viewers also liked (20)

Automating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with GulpAutomating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with Gulp
 
Twig tips and tricks
Twig tips and tricksTwig tips and tricks
Twig tips and tricks
 
Front-end style guides - fronteers @ WHITE (30/08/12)
Front-end style guides - fronteers @ WHITE (30/08/12)Front-end style guides - fronteers @ WHITE (30/08/12)
Front-end style guides - fronteers @ WHITE (30/08/12)
 
Love Twig
Love TwigLove Twig
Love Twig
 
Managing packages with Bower and NuGet in ASP.NET Core
Managing packages with Bower and NuGet in ASP.NET CoreManaging packages with Bower and NuGet in ASP.NET Core
Managing packages with Bower and NuGet in ASP.NET Core
 
Frontend asset management with Bower and Gulp.js
Frontend asset management with Bower and Gulp.jsFrontend asset management with Bower and Gulp.js
Frontend asset management with Bower and Gulp.js
 
Async navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 frameworkAsync navigation with a lightweight ES6 framework
Async navigation with a lightweight ES6 framework
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twig
 
Front end engineering, YUI Gallery, and your future
Front end engineering, YUI Gallery, and your futureFront end engineering, YUI Gallery, and your future
Front end engineering, YUI Gallery, and your future
 
Front-End Intelligence
Front-End IntelligenceFront-End Intelligence
Front-End Intelligence
 
Workflow User Interfaces Patterns
Workflow User Interfaces PatternsWorkflow User Interfaces Patterns
Workflow User Interfaces Patterns
 
Unit testing of java script and angularjs application using Karma Jasmine Fra...
Unit testing of java script and angularjs application using Karma Jasmine Fra...Unit testing of java script and angularjs application using Karma Jasmine Fra...
Unit testing of java script and angularjs application using Karma Jasmine Fra...
 
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External SystemJoget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
 
Introduction to Express and Grunt
Introduction to Express and GruntIntroduction to Express and Grunt
Introduction to Express and Grunt
 
Insights on Protractor testing
Insights on Protractor testingInsights on Protractor testing
Insights on Protractor testing
 
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
 
Fast Prototyping Strategies for UI design
Fast Prototyping Strategies for UI designFast Prototyping Strategies for UI design
Fast Prototyping Strategies for UI design
 

Similar to Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp

[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress DevelopmentAdam Tomat
 
cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123Parag Gajbhiye
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Stéphane Bégaudeau
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrMichael Enslow
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Joao Lucas Santana
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017Matt Raible
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki HIRAI
 
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Ted Kulp
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSSdanpaquette
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsNathan Smith
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!David Gibbons
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 

Similar to Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp (20)

[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
 
Using HTML5 sensibly
Using HTML5 sensiblyUsing HTML5 sensibly
Using HTML5 sensibly
 
Going web native
Going web nativeGoing web native
Going web native
 
cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123cdac@parag.gajbhiye@test123
cdac@parag.gajbhiye@test123
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking Modernizr
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 

Recently uploaded

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 

Recently uploaded (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 

Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp