SlideShare a Scribd company logo
Internal
Architecting your Frontend
Your mileage may vary
Ruben Teijeiro
@rteijeiro
Senior Software Architect
Tieto, CEM
ruben.teijeiro@tieto.com
Internal
Frontend
(of a device or program) interface directly
accessed by the user and allowing access to
further devices, programs, or databases.
© Tieto Corporation
Internal
Frontend
3
http://bradfrost.com/blog/post/frontend-design
© Tieto Corporation
Internal
Frontend Design
4
http://bradfrost.com/blog/post/frontend-design
• Frontend design involves creating the HTML, CSS, and
presentational JavaScript code that makes up a user
interface.
• A Frontend Designer understands UX principles and best
practices.
• It’s crucial to treat frontend development as a core part of
the design process.
© Tieto Corporation
Internal
User eXperience
5
© Tieto Corporation
Internal
VR GUIs
6
Internal
Frontend Frameworks
© Tieto Corporation
Internal
Frontend Frameworks
• CSS Frameworks
• JavaScript Frameworks
• Mobile Frameworks
8
Internal
CSS Frameworks
© Tieto Corporation
Internal
CSS Frameworks
• MaterializeCSS: http://materializecss.com
• Bootstrap: http://getbootstrap.com
• Foundation: http://foundation.zurb.com
10
© Tieto Corporation
Internal
MaterializeCSS
Based on Material Design by Google
http://www.google.com/design/spec/material-design
11
© Tieto Corporation
Internal
Bootstrap
Created by Twitter
12
© Tieto Corporation
Internal
Foundation
13
Internal
JavaScript Frameworks
Internal
JavaScript Frameworks
© Tieto Corporation
Internal
JavaScript Frameworks
• Angular: https://angularjs.org
• Ember: http://emberjs.com
• Backbone: http://backbonejs.org
• React: https://facebook.github.io/react
16
© Tieto Corporation
Internal
JavaScript Frameworks
17
http://blog.bitovi.com/longevity-or-lack-thereof-in-javascript-frameworks
© Tieto Corporation
Internal
JavaScript Frameworks
18
Internal
Mobile Frameworks
© Tieto Corporation
Internal
Mobile Frameworks
• Ionic: http://ionicframework.com
• React Native: https://facebook.github.io/react-native
• Meteor: https://www.meteor.com
20
© Tieto Corporation
Internal
Ionic
21
© Tieto Corporation
Internal
React Native
22
© Tieto Corporation
Internal
Meteor
23
Internal
Frontend Architecture
A practical case with BackboneJS
© Tieto Corporation
Internal
Frontend Architecture
• Models
• Collections
• Views
• Events
• Routers
• Templates
25
© Tieto Corporation
Internal
Models
• Models are the entity of an application that store data and
contain some logic around data such as validation,
conversion, and data interaction.
26
© Tieto Corporation
Internal
Models
var User = Backbone.Model.extend({
defaults: {
firstname: "",
lastname: "",
address: "",
city: "",
phone: ""
}
});
27
© Tieto Corporation
Internal
Collections
• A collection is a group of models that includes a lot of
functionality as well as Underscore utility methods to help
you work on multiple data models.
28
© Tieto Corporation
Internal
Collections
var Users = Backbone.Collection.extend({
model: User
});
29
© Tieto Corporation
Internal
Views
• Views present an idea of organizing your Document
Object Model (DOM) interface into logical blocks, and
represent the model and collection data in them.
30
© Tieto Corporation
Internal
Views
var usersView = Backbone.View.extend({
template: _.template( usersTemplate ),
events: {
'dblclick label': 'edit'
},
render: function() {
this.$el.html( this.template( this.model.attributes ) );
return this;
},
edit: function(e) {
console.log(e.target + ' was double clicked.');
}
});
31
© Tieto Corporation
Internal
Events
• Events are a basic inversion of control. Instead of having
one function call another by name, the second function is
registered as a handler to be called when a specific event
occurs.
32
© Tieto Corporation
Internal
Events
Backbone.on('event', function() {
console.log('Handled Backbone event');
});
Backbone.trigger('event');
// logs: Handled Backbone event
33
© Tieto Corporation
Internal
Routers
• In Backbone, routers provide a way for you to connect
URLs (either hash fragments, or real) to parts of your
application. Any piece of your application that you want to
be bookmarkable, shareable, and back-button-able,
needs a URL.
34
© Tieto Corporation
Internal
Routers
var AppRouter = Backbone.Router.extend({
routes: {
"*actions": "getHome",
"users": "getUsers",
},
getHome: function() {
console.log("You are in the homepage.");
},
getUsers: function() {
var users = new usersView();
users.render();
}
});
35
© Tieto Corporation
Internal
Templates
• Templates are used to create the visual elements of your
interface using HTML markup. They should not include
the logic of your application.
36
© Tieto Corporation
Internal
Templates
<ul>
<li>{{firstname}}</li>
<li>{{lastname}}</li>
<li>{{address}}</li>
<li>{{city}}</li>
<li>{{phone}}</li>
</ul>
37
© Tieto Corporation
Internal
Organizing your code
38
© Tieto Corporation
Internal
Organizing your code
• Separate every component in different files (models,
collections, views and routers).
• Define an entry point of the application.
• Use namespaces.
39
© Tieto Corporation
Internal
Application Directory Structure
40
.
|-- assets
| |-- css
| |-- fonts
| `-- img
|-- src
| |-- models
| |-- views
| | |-- users
| | |-- products
| | `-- customers
| `-- collections
`-- templates
© Tieto Corporation
Internal
Modular Directory Structure
41
.
|-- app
| |-- modules
| | |-- user
| | | |-- models
| | | |-- views
| | | |-- collections
| | `-- customer
| | | |-- ...
| |-- utils
| `-- auth
.
Internal
Module Bundlers
© Tieto Corporation
Internal
Module Bundlers
• Webpack: https://webpack.github.io
• Browserify: http://browserify.org
43
© Tieto Corporation
Internal
Browserify
44
© Tieto Corporation
Internal
Webpack
45
© Tieto Corporation
Internal
Webpack
46
Internal
Frontend Tools
© Tieto Corporation
Internal
Package Managers
48
© Tieto Corporation
Internal
Package Managers
• npm: https://www.npmjs.com
• Bower: http://bower.io
49
© Tieto Corporation
Internal
Task Runners
50
© Tieto Corporation
Internal
Task Runners
• Grunt: http://gruntjs.com
• Gulp: http://gulpjs.com
51
© Tieto Corporation
Internal
CSS Preprocessors
52
© Tieto Corporation
Internal
CSS Preprocessors
• SASS: http://sass-lang.com
• LESS: http://lesscss.org
• Compass: http://compass-style.org
53
© Tieto Corporation
Internal
Template Systems
54
© Tieto Corporation
Internal
Template Systems
• Handlebars: http://handlebarsjs.com
• Mustache: https://mustache.github.io
• Underscore: http://underscorejs.org
55
© Tieto Corporation
Internal
Linting
56
© Tieto Corporation
Internal
Linting Tools
• CSSLint: http://csslint.net
• ESLint: http://eslint.org
57
© Tieto Corporation
Internal
Testing
58
© Tieto Corporation
Internal
Testing
• QUnit: https://qunitjs.com
• CasperJS: http://casperjs.org
• Jasmine: http://jasmine.github.io
• PhantomJS: http://phantomjs.org
59
© Tieto Corporation
Internal
Visual Regression
60
© Tieto Corporation
Internal
http://shoov.io
61
Internal
WebServices
A practical case with Drupal
Internal
Questions
Internal
Ruben Teijeiro
@rteijeiro
Senior Software Architect
Tieto, CEM
ruben.teijeiro@tieto.com

More Related Content

PDF
PDF
Contributing to Drupal 8 - Frankfurt
PPTX
From React to React Native - Things I wish I knew when I started
PDF
Speedrun: Build a Website with Panels, Media, and More in 45 Minutes
PPTX
Drupal 7 vs. Drupal 8: A Contrast of Multilingual Support
PDF
The Workflow Methodology to Train Your Team on Drupal 8
PDF
Drupal 8 and Pantheon
PPTX
Lightning Distribution for Drupal: Build Advanced Authoring Experiences in Dr...
Contributing to Drupal 8 - Frankfurt
From React to React Native - Things I wish I knew when I started
Speedrun: Build a Website with Panels, Media, and More in 45 Minutes
Drupal 7 vs. Drupal 8: A Contrast of Multilingual Support
The Workflow Methodology to Train Your Team on Drupal 8
Drupal 8 and Pantheon
Lightning Distribution for Drupal: Build Advanced Authoring Experiences in Dr...

What's hot (10)

PDF
Nuxeo & React Native
PDF
One year solving infrastructure management with FusionDirectory and OpenLDAP,...
 
PPTX
The potential in Drupal 8.x and how to realize it
PDF
AUFaculty: A Case Study for Responsive GWT Application Development
PDF
Choosing Drupal as your Content Management Framework
PPTX
How is Drupal Ensuring the Web Accessibility Standards?
PDF
What to Expect in Drupal 8
PDF
[drupalday2017] - Behat per Drupal: test automatici e molto di più
PDF
What in store in drupal 8
PDF
Everything You Need to Know About the Top Changes in Drupal 8
Nuxeo & React Native
One year solving infrastructure management with FusionDirectory and OpenLDAP,...
 
The potential in Drupal 8.x and how to realize it
AUFaculty: A Case Study for Responsive GWT Application Development
Choosing Drupal as your Content Management Framework
How is Drupal Ensuring the Web Accessibility Standards?
What to Expect in Drupal 8
[drupalday2017] - Behat per Drupal: test automatici e molto di più
What in store in drupal 8
Everything You Need to Know About the Top Changes in Drupal 8
Ad

Viewers also liked (20)

PDF
Headless Drupal 8
PDF
Frontend SPOF
PDF
Sinau Bareng Frontend Web Development @ DiLo Malang
PDF
User eXperience & Front End Development
PDF
Front End Tooling and Performance - Codeaholics HK 2015
PPTX
Front end Tips Tricks & Tools
PDF
Frontend automation and stability
PDF
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
PDF
建立前端开发团队 (Front-end Development Environment)
PDF
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
PDF
Wrangling Large Scale Frontend Web Applications
PDF
A modern front end development workflow for Magnolia at Atlassian
PPTX
Frontend technologies
PDF
How to Build Front-End Web Apps that Scale - FutureJS
PPTX
W3 conf hill-html5-security-realities
PPTX
Modern Frontend Technology
PDF
Frontend at Scale - The Tumblr Story
PDF
TechTalk #85 : Latest Frontend Technologies
PDF
Front End Development Workflow Tools
PDF
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Headless Drupal 8
Frontend SPOF
Sinau Bareng Frontend Web Development @ DiLo Malang
User eXperience & Front End Development
Front End Tooling and Performance - Codeaholics HK 2015
Front end Tips Tricks & Tools
Frontend automation and stability
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
建立前端开发团队 (Front-end Development Environment)
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Wrangling Large Scale Frontend Web Applications
A modern front end development workflow for Magnolia at Atlassian
Frontend technologies
How to Build Front-End Web Apps that Scale - FutureJS
W3 conf hill-html5-security-realities
Modern Frontend Technology
Frontend at Scale - The Tumblr Story
TechTalk #85 : Latest Frontend Technologies
Front End Development Workflow Tools
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Ad

Similar to Architecting your Frontend (20)

PDF
Developing Backbonejs Applications Early Release Addy Osmani
KEY
Single Page Applications - Desert Code Camp 2012
PDF
Rp 6 session 2 naresh bhatia
PPTX
Building Advanced Web UI in The Enterprise World
PDF
Instant download Developing Backbone js Applications Addy Osmani pdf all chapter
PDF
Developing Backbone js Applications Addy Osmani
PDF
Backbonetutorials
PDF
Developing Backbone js Applications Addy Osmani
PDF
Little Opinions, Big Possibilities: The Tools and Patterns for Building Larg...
PDF
Javascript Web Applications Otx Alex Maccaw
PPTX
Building high performance web applications
PDF
Director x Backbone = :)
PDF
Pablo Villalba -
PDF
Top 11 Front-End Web Development Tools To Consider in 2020
PDF
An approach to responsive, realtime with Backbone.js and WebSockets
PPTX
AFTAB AHMED.pptx
PPTX
Frontend_Frameworks_and_Libraries[1][1].pptx
PDF
jQquerysummit - Large-scale JavaScript Application Architecture
PDF
Structured web apps
PPTX
Streaming Processes: Creating a Start-up Within a Big Corporate (Mohammad Sha...
Developing Backbonejs Applications Early Release Addy Osmani
Single Page Applications - Desert Code Camp 2012
Rp 6 session 2 naresh bhatia
Building Advanced Web UI in The Enterprise World
Instant download Developing Backbone js Applications Addy Osmani pdf all chapter
Developing Backbone js Applications Addy Osmani
Backbonetutorials
Developing Backbone js Applications Addy Osmani
Little Opinions, Big Possibilities: The Tools and Patterns for Building Larg...
Javascript Web Applications Otx Alex Maccaw
Building high performance web applications
Director x Backbone = :)
Pablo Villalba -
Top 11 Front-End Web Development Tools To Consider in 2020
An approach to responsive, realtime with Backbone.js and WebSockets
AFTAB AHMED.pptx
Frontend_Frameworks_and_Libraries[1][1].pptx
jQquerysummit - Large-scale JavaScript Application Architecture
Structured web apps
Streaming Processes: Creating a Start-up Within a Big Corporate (Mohammad Sha...

More from Ruben Teijeiro (10)

PDF
Startup Wars
PDF
Contributing to Drupal 8
PDF
Drupal Heroes
PDF
Drupal8 Front-end Automated Testing
PDF
Front-end Automated Testing
PDF
Drupal Mobile
PDF
Twittalicious - Organiza tus Redes Sociales
PDF
Twittalicious - Desarrollo de un Producto con Drupal
PDF
Metodologia de Trabajo en Proyectos con Drupal
ODP
Drush - More Beer, Less Effort
Startup Wars
Contributing to Drupal 8
Drupal Heroes
Drupal8 Front-end Automated Testing
Front-end Automated Testing
Drupal Mobile
Twittalicious - Organiza tus Redes Sociales
Twittalicious - Desarrollo de un Producto con Drupal
Metodologia de Trabajo en Proyectos con Drupal
Drush - More Beer, Less Effort

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Machine learning based COVID-19 study performance prediction
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
A Presentation on Artificial Intelligence
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Dropbox Q2 2025 Financial Results & Investor Presentation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MYSQL Presentation for SQL database connectivity
Machine learning based COVID-19 study performance prediction
NewMind AI Monthly Chronicles - July 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Spectral efficient network and resource selection model in 5G networks
Network Security Unit 5.pdf for BCA BBA.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows

Architecting your Frontend