SlideShare une entreprise Scribd logo
1  sur  34
Front End Workshops
I. General Overview. Past, present
and future of Front End Web
Development
Marc Torrent Vernetta
mtorrent@visual-engin.com
Infinita dilemmas frontend et
backend programmatio
(Neverending contests between Front-end and Back-end
programming)
aha! I know! it’s about building things that are not Back-End!
What the hell is Front End
Development ???
aha! I know! it’s about building things that are not Back-End!
What the hell is Front End
Development ???
very clever ….
Sure! It’s about building the core technology and functionality of a
website. It’s about Data Bases and strongly built Java frameworks that, well,
sometimes (but very few times) you could substitute by a much simplistic and naive
programming language such as python and something called Django. Which I’m sure I won’t
ever use it because it doesn’t even have typed variables !!!! And then appeared Ruby on Rails that very few
used it and more recently those hippsteric fan boys wanted us to adopt something called nodeJS. ETC, ETC, ETC, ETC, ETC, ETC
Could you please tell me what do you
understand for Back End
Development ???
Ok! I got ya!
It’s about what designers do with HTML and CSS to have a nice
presentation of the Website.
I understand... but more precisely,
Front End Development is about...
And they also use JavaScript, which is used for cool effects and transitions and
also for Form validations.
Come on! Let’s speak seriously! It doesn’t even have Classes, variables are
whatever you want ...
Horrendously
Obfuscated
Yawnful
Option
Yawnful
adjective
1.
causing or arousing yawns,
especially as the result of
boredom,tedium, or the like:
a yawnful story about her
childhood.
Just being polite… I
could tell it with
some other words...
Exactly! It’s the layout, it’s the cool designs from PSD to a Web site.
Ok, so Front End is about what you
can see and interact in a website!
But please, don’t think about JS as a serious programming
language nor consider Front End developers as TRUE
programmers !!!
Exactly! It’s the layout, it’s the cool designs from PSD to a Web site.
Ok, so Front End is about what you
can see and interact in a website!
But please, don’t think about JS as a serious programming
language nor consider Front End developers as TRUE
programmers !!!
<html>
<head>
<script type=”text/javascript”>
perfection = {
nonLeaking: [“one”, “two”, “three”]
}, unsense = {
retainer: {}
};
while(unsense.retainer){
var myFunc = function(MyVar){
if (perfection) MyVar.retainer =
perfection.nonLeaking;
};
myFunc(unsense);
perfection = null;
}
</script>
</head>
<body>
<h1>Awesome!!!</h1>
</body>
</html>
This developer is proud of his code:
This developer is strongly convinced of:
And will have a manager position by means of:
And will have a manager position by means of:
historica perfectiorem
technicam
(Technolgy historical development)
Javascript’s History
1995
JS Birth -
Netscape
DHTML
1998
ECMAScript3,
DOM Scripting
2000
2004
XHR - AJAX
JQuery
2006
2008
V8
2009
ECMAScript5,
nodeJS
2010
HTML5,
CSS3
BackboneJS,
AngularJS
2011
2012
EmberJS,
requireJS
2013
ReactJS,
IONIC
WebPack
2014
2015
ECMAScript6,
ReactNative
A child is Born
● Developed by Brendan Eich - 1995
● Initially called Mocha, then TypeScript
● IE followed it with JScript - 1996
● DHTML techniques for “cool” effects
DHTML vs. DOM Scripting
isIE=document.all?true:false;
isNS4=document.layers?true:false;
isNS6=document.getElementById?true:false;
isOpera=navigator.appName.indexOf('opera')!=-
1?true:false;
if(isIE && !isOpera){
content=document.all.tags('p')[2].innerText;
content=content.replace(/^w+/,'badger');
document.all.tags('p')[2].innerText=content;
}
if(isNS6 && !isOpera){
content=document.getElementsByTagName('p')[2]
.innerHTML;
content=content.replace(/^w+/,'badger');
document.getElementsByTagName('p')[2].innerHT
ML =content;
}
if(isNS4 || isOpera){
alert('Your browser is not supported,
please download a newer one');
}
if(!document.getElementsByTagName){return;}
var
paragraphs=document.getElementsByTagName('p')
;
if(paragraphs.length>=3){
var
content=paragraphs[2].firstChild.nodeValue;
content=content.replace(/^w+/,'badger');
paragraphs[2].firstChild.nodeValue=content;
}
DHTML vs. DOM Scripting
isIE=document.all?true:false;
isNS4=document.layers?true:false;
isNS6=document.getElementById?true:false;
isOpera=navigator.appName.indexOf('opera')!=-
1?true:false;
if(isIE && !isOpera){
content=document.all.tags('p')[2].innerText;
content=content.replace(/^w+/,'badger');
document.all.tags('p')[2].innerText=content;
}
if(isNS6 && !isOpera){
content=document.getElementsByTagName('p')[2]
.innerHTML;
content=content.replace(/^w+/,'badger');
document.getElementsByTagName('p')[2].innerHT
ML =content;
}
if(isNS4 || isOpera){
alert('Your browser is not supported,
please download a newer one');
}
if(!document.getElementsByTagName){return;}
var
paragraphs=document.getElementsByTagName('p')
;
if(paragraphs.length>=3){
var
content=paragraphs[2].firstChild.nodeValue;
content=content.replace(/^w+/,'badger');
paragraphs[2].firstChild.nodeValue=content;
}
JavaScript, the misunderstood
● The name: Java != JavaScript
● ECMAScript3 is poorly documented
● There were bad books until the 2000’s
● Amateur programmers making a bad use of JavaScript
Object Oriented?
● It has objects and constructors, but doesn’t have Classes
● Prototype-oriented inheritance
● Building objects by inheritance (is-a) and by aggregation
(has-a) in which JS excels.
● Surpases classical inheritance due to its dynamic nature:
new design patterns used
XHR - AJAX
● XmlHttpRequest
● AJAX: Asynchronous Javascript and XML (or AJAJ if
JSON is returned)
● Jesse James Garret - 2004
● New paradigm as there’s no need to navigate in order
to change the content of the page and to communicate
with the server.
● Security Issues appear: Cross Domain Requests, XSS
Attacks
● New perspectives towards RESTful Web apps.
JS Libraries, Welcome!!
● John Resig - 2006
● DOM manipulation made easy and with cross browser
support.
● Coherent Event handling
● Animations made easy
● AJAX support with cross browser handling
● Extensibility through the Plugin method.
● QUnit - First JS Testing Library.
● The most important and used JS library in the world
(65% of the top 10 million worldwide websites)
● The basis for other more structured frameworks (dojo,
BackboneJS)
JavaScript is Fast
● V8 Google compile engine for Webkit and nodeJS
● JS is as fast as C or C++ with V8 engine
● JS is 20% faster than Java EE Servlet
● JS is 300% faster than Python PyPy
● JS is 400% faster than PHP
● JS is 3000% faster than LUA
● JS is 5000% faster than Ruby
● JS is 7000% faster than Python 2.7.6 and 8000% faster
than Python 3.4.0 (Both used in Django)
*http://blog.carlesmateo.com/2014/10/13/performance-of-several-
languages/#comments
*https://dzone.com/articles/performance-comparison-between
NodeJS vs. Java EE
*https://dzone.com/articles/performance-comparison-between
Concurrent Requests Average Response Time (ms) Requests / second
10 23 422
50 119 416
100 243 408
150 363 411
Concurrent Requests Average Response Time (ms) Requests / second
10 19 509
50 109 453
100 196 507
150 294 506
Java EE
NodeJS
(20% faster)
But the DOM is VERY SLOW!!
● It is memory intensive because it has to keep all the
nodes hierarchy.
● A small modification releases a series of reflows and
re-rendering.
● It has a very poorly optimized algorithm
HTML5 & CSS3
SEMANTICS
CONNECTIVITY
OFFLINE &
STORAGE
MULTIMEDIA
3D GRAPHICS &
EFFECTS
PERFORMANCE
& INTEGRATION
DEVICE ACCESS
STYLING - CSS3
We have all what we need to build a mobile web app !!!
But the DOM is mainly the SAME!!
But there have been Creative Engineers that have
developed new techniques to improve the performance
of the DOM by means of ...
That’s TRUE!!
JavaScript Design Patterns
Modern Frameworks
Model View Controller
Model View ViewModel
Model View Controller
Strongly Opinionated
It’s about Data Binding !!
Reactive Programming
● It’s the V of the MVC
● Virtual DOM
● Stateful Components
● One Way Data Flow
Observer Pattern with Event
Streams that can be
manipulated and transformed
with an Scheduler.
The data flows in one
direction
Useful Build Tools
The Future is now The Present
Hybrid Mobile Apps
High Performance
Coding Efficiency
Redesigned modern language
What about that clever developer?
He’s probably anchored at 2004 ...
Let’s open our mind and understand this
apparently simple but very complex language.
… and remember …
Thanks for your attention!
Leave your
questions on
the comments
section
Workshop Intro: FrontEnd General Overview

Contenu connexe

Tendances

General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
Spike Brehm
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
Ran Mizrahi
 
Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
Spike Brehm
 
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran MizrahiIntro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
Ran Mizrahi
 

Tendances (20)

Jsp
JspJsp
Jsp
 
RequireJS
RequireJSRequireJS
RequireJS
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
Expressjs
ExpressjsExpressjs
Expressjs
 
Ember.js - A JavaScript framework for creating ambitious web applications
Ember.js - A JavaScript framework for creating ambitious web applications  Ember.js - A JavaScript framework for creating ambitious web applications
Ember.js - A JavaScript framework for creating ambitious web applications
 
Java script tutorial
Java script tutorialJava script tutorial
Java script tutorial
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
 
Introduction to AJAX In WordPress
Introduction to AJAX In WordPressIntroduction to AJAX In WordPress
Introduction to AJAX In WordPress
 
AngularJS with RequireJS
AngularJS with RequireJSAngularJS with RequireJS
AngularJS with RequireJS
 
SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
 
JSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic AppsJSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic Apps
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
 
Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
 
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran MizrahiIntro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
 
Java scriptforjavadev part1
Java scriptforjavadev part1Java scriptforjavadev part1
Java scriptforjavadev part1
 
AngularJS application architecture
AngularJS application architectureAngularJS application architecture
AngularJS application architecture
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
 
Workshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJSWorkshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJS
 

En vedette (6)

JavaScript Design Patterns
JavaScript Design PatternsJavaScript Design Patterns
JavaScript Design Patterns
 
Integrating Ember.js into legacy applications
Integrating Ember.js into legacy applicationsIntegrating Ember.js into legacy applications
Integrating Ember.js into legacy applications
 
Javascript Common Design Patterns
Javascript Common Design PatternsJavascript Common Design Patterns
Javascript Common Design Patterns
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
 
Angular2 and TypeScript
Angular2 and TypeScriptAngular2 and TypeScript
Angular2 and TypeScript
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 

Similaire à Workshop Intro: FrontEnd General Overview

There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
jbandi
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
MrAbbas
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
MrAbas
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
Kevin Whinnery
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
Kevin Whinnery
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Spike Brehm
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Stack Learner
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Chris Love
 

Similaire à Workshop Intro: FrontEnd General Overview (20)

Daniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého SchizmaDaniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého Schizma
 
GTUG JS will save us all
GTUG JS will save us allGTUG JS will save us all
GTUG JS will save us all
 
10 Years of JavaScript
10 Years of JavaScript10 Years of JavaScript
10 Years of JavaScript
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
 
React native - under the bridge - react week NYC
React native - under the bridge - react week NYCReact native - under the bridge - react week NYC
React native - under the bridge - react week NYC
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In Bangla
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Catching-up web technologies - an endless story
Catching-up web technologies - an endless storyCatching-up web technologies - an endless story
Catching-up web technologies - an endless story
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
 
Java Script recruiting
Java Script recruitingJava Script recruiting
Java Script recruiting
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 
Kevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScriptKevin Whinnery: Write Better JavaScript
Kevin Whinnery: Write Better JavaScript
 
Jquery react angular
Jquery react angularJquery react angular
Jquery react angular
 

Plus de Visual Engineering

Plus de Visual Engineering (20)

Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
Workshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensionesWorkshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensiones
 
Workshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - StructuresWorkshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - Structures
 
Workhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de SwiftWorkhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de Swift
 
Workshop 26: React Native - The Native Side
Workshop 26: React Native - The Native SideWorkshop 26: React Native - The Native Side
Workshop 26: React Native - The Native Side
 
Workshop 25: React Native - Components
Workshop 25: React Native - ComponentsWorkshop 25: React Native - Components
Workshop 25: React Native - Components
 
Workshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testingWorkshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testing
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux Advanced
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux Middleware
 
Workshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & ReduxWorkshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & Redux
 
Workshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionWorkshop 19: ReactJS Introduction
Workshop 19: ReactJS Introduction
 
Workshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effectsWorkshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effects
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
 
Workshop 15: Ionic framework
Workshop 15: Ionic frameworkWorkshop 15: Ionic framework
Workshop 15: Ionic framework
 
Workshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIWorkshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte III
 
Workshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte IIWorkshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte II
 
Workshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototypingWorkshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototyping
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 

Dernier

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Dernier (20)

WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 

Workshop Intro: FrontEnd General Overview

  • 1. Front End Workshops I. General Overview. Past, present and future of Front End Web Development Marc Torrent Vernetta mtorrent@visual-engin.com
  • 2. Infinita dilemmas frontend et backend programmatio (Neverending contests between Front-end and Back-end programming)
  • 3. aha! I know! it’s about building things that are not Back-End! What the hell is Front End Development ???
  • 4. aha! I know! it’s about building things that are not Back-End! What the hell is Front End Development ??? very clever ….
  • 5. Sure! It’s about building the core technology and functionality of a website. It’s about Data Bases and strongly built Java frameworks that, well, sometimes (but very few times) you could substitute by a much simplistic and naive programming language such as python and something called Django. Which I’m sure I won’t ever use it because it doesn’t even have typed variables !!!! And then appeared Ruby on Rails that very few used it and more recently those hippsteric fan boys wanted us to adopt something called nodeJS. ETC, ETC, ETC, ETC, ETC, ETC Could you please tell me what do you understand for Back End Development ???
  • 6. Ok! I got ya! It’s about what designers do with HTML and CSS to have a nice presentation of the Website. I understand... but more precisely, Front End Development is about... And they also use JavaScript, which is used for cool effects and transitions and also for Form validations. Come on! Let’s speak seriously! It doesn’t even have Classes, variables are whatever you want ...
  • 7. Horrendously Obfuscated Yawnful Option Yawnful adjective 1. causing or arousing yawns, especially as the result of boredom,tedium, or the like: a yawnful story about her childhood. Just being polite… I could tell it with some other words...
  • 8. Exactly! It’s the layout, it’s the cool designs from PSD to a Web site. Ok, so Front End is about what you can see and interact in a website! But please, don’t think about JS as a serious programming language nor consider Front End developers as TRUE programmers !!!
  • 9. Exactly! It’s the layout, it’s the cool designs from PSD to a Web site. Ok, so Front End is about what you can see and interact in a website! But please, don’t think about JS as a serious programming language nor consider Front End developers as TRUE programmers !!!
  • 10. <html> <head> <script type=”text/javascript”> perfection = { nonLeaking: [“one”, “two”, “three”] }, unsense = { retainer: {} }; while(unsense.retainer){ var myFunc = function(MyVar){ if (perfection) MyVar.retainer = perfection.nonLeaking; }; myFunc(unsense); perfection = null; } </script> </head> <body> <h1>Awesome!!!</h1> </body> </html> This developer is proud of his code:
  • 11. This developer is strongly convinced of:
  • 12. And will have a manager position by means of:
  • 13. And will have a manager position by means of:
  • 15. Javascript’s History 1995 JS Birth - Netscape DHTML 1998 ECMAScript3, DOM Scripting 2000 2004 XHR - AJAX JQuery 2006 2008 V8 2009 ECMAScript5, nodeJS 2010 HTML5, CSS3 BackboneJS, AngularJS 2011 2012 EmberJS, requireJS 2013 ReactJS, IONIC WebPack 2014 2015 ECMAScript6, ReactNative
  • 16. A child is Born ● Developed by Brendan Eich - 1995 ● Initially called Mocha, then TypeScript ● IE followed it with JScript - 1996 ● DHTML techniques for “cool” effects
  • 17. DHTML vs. DOM Scripting isIE=document.all?true:false; isNS4=document.layers?true:false; isNS6=document.getElementById?true:false; isOpera=navigator.appName.indexOf('opera')!=- 1?true:false; if(isIE && !isOpera){ content=document.all.tags('p')[2].innerText; content=content.replace(/^w+/,'badger'); document.all.tags('p')[2].innerText=content; } if(isNS6 && !isOpera){ content=document.getElementsByTagName('p')[2] .innerHTML; content=content.replace(/^w+/,'badger'); document.getElementsByTagName('p')[2].innerHT ML =content; } if(isNS4 || isOpera){ alert('Your browser is not supported, please download a newer one'); } if(!document.getElementsByTagName){return;} var paragraphs=document.getElementsByTagName('p') ; if(paragraphs.length>=3){ var content=paragraphs[2].firstChild.nodeValue; content=content.replace(/^w+/,'badger'); paragraphs[2].firstChild.nodeValue=content; }
  • 18. DHTML vs. DOM Scripting isIE=document.all?true:false; isNS4=document.layers?true:false; isNS6=document.getElementById?true:false; isOpera=navigator.appName.indexOf('opera')!=- 1?true:false; if(isIE && !isOpera){ content=document.all.tags('p')[2].innerText; content=content.replace(/^w+/,'badger'); document.all.tags('p')[2].innerText=content; } if(isNS6 && !isOpera){ content=document.getElementsByTagName('p')[2] .innerHTML; content=content.replace(/^w+/,'badger'); document.getElementsByTagName('p')[2].innerHT ML =content; } if(isNS4 || isOpera){ alert('Your browser is not supported, please download a newer one'); } if(!document.getElementsByTagName){return;} var paragraphs=document.getElementsByTagName('p') ; if(paragraphs.length>=3){ var content=paragraphs[2].firstChild.nodeValue; content=content.replace(/^w+/,'badger'); paragraphs[2].firstChild.nodeValue=content; }
  • 19. JavaScript, the misunderstood ● The name: Java != JavaScript ● ECMAScript3 is poorly documented ● There were bad books until the 2000’s ● Amateur programmers making a bad use of JavaScript Object Oriented? ● It has objects and constructors, but doesn’t have Classes ● Prototype-oriented inheritance ● Building objects by inheritance (is-a) and by aggregation (has-a) in which JS excels. ● Surpases classical inheritance due to its dynamic nature: new design patterns used
  • 20. XHR - AJAX ● XmlHttpRequest ● AJAX: Asynchronous Javascript and XML (or AJAJ if JSON is returned) ● Jesse James Garret - 2004 ● New paradigm as there’s no need to navigate in order to change the content of the page and to communicate with the server. ● Security Issues appear: Cross Domain Requests, XSS Attacks ● New perspectives towards RESTful Web apps.
  • 22. ● John Resig - 2006 ● DOM manipulation made easy and with cross browser support. ● Coherent Event handling ● Animations made easy ● AJAX support with cross browser handling ● Extensibility through the Plugin method. ● QUnit - First JS Testing Library. ● The most important and used JS library in the world (65% of the top 10 million worldwide websites) ● The basis for other more structured frameworks (dojo, BackboneJS)
  • 23. JavaScript is Fast ● V8 Google compile engine for Webkit and nodeJS ● JS is as fast as C or C++ with V8 engine ● JS is 20% faster than Java EE Servlet ● JS is 300% faster than Python PyPy ● JS is 400% faster than PHP ● JS is 3000% faster than LUA ● JS is 5000% faster than Ruby ● JS is 7000% faster than Python 2.7.6 and 8000% faster than Python 3.4.0 (Both used in Django) *http://blog.carlesmateo.com/2014/10/13/performance-of-several- languages/#comments *https://dzone.com/articles/performance-comparison-between
  • 24. NodeJS vs. Java EE *https://dzone.com/articles/performance-comparison-between Concurrent Requests Average Response Time (ms) Requests / second 10 23 422 50 119 416 100 243 408 150 363 411 Concurrent Requests Average Response Time (ms) Requests / second 10 19 509 50 109 453 100 196 507 150 294 506 Java EE NodeJS (20% faster)
  • 25. But the DOM is VERY SLOW!! ● It is memory intensive because it has to keep all the nodes hierarchy. ● A small modification releases a series of reflows and re-rendering. ● It has a very poorly optimized algorithm
  • 26. HTML5 & CSS3 SEMANTICS CONNECTIVITY OFFLINE & STORAGE MULTIMEDIA 3D GRAPHICS & EFFECTS PERFORMANCE & INTEGRATION DEVICE ACCESS STYLING - CSS3 We have all what we need to build a mobile web app !!!
  • 27. But the DOM is mainly the SAME!! But there have been Creative Engineers that have developed new techniques to improve the performance of the DOM by means of ... That’s TRUE!! JavaScript Design Patterns
  • 28. Modern Frameworks Model View Controller Model View ViewModel Model View Controller Strongly Opinionated It’s about Data Binding !!
  • 29. Reactive Programming ● It’s the V of the MVC ● Virtual DOM ● Stateful Components ● One Way Data Flow Observer Pattern with Event Streams that can be manipulated and transformed with an Scheduler. The data flows in one direction
  • 31. The Future is now The Present Hybrid Mobile Apps High Performance Coding Efficiency Redesigned modern language
  • 32. What about that clever developer? He’s probably anchored at 2004 ... Let’s open our mind and understand this apparently simple but very complex language. … and remember …
  • 33. Thanks for your attention! Leave your questions on the comments section