SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
The new way to
write a front-end
software.
JavaScript Applications Evolution
JS (alias Vanilla)
jQuery
Umbrella Js
…
AngularJS
Flux (React)
…
AngularJS 2
Redux
…
Js (alias Vanilla)
1995-2006 JS (simple, without libraries, `chior`)
★ No functions
★ Very bad memory management
★ Have alert command (yuhuu!)
★ Have the text blink feature
★ Have the change text color feature
★ Have the change background color feature
JavaScript Applications Evolution
JS (alias Vanilla)
jQuery
Umbrella Js
…
AngularJS
Flux (React)
…
AngularJS 2
Redux
…
Js (alias Vanilla)
2006 - 2981
★ jQuery revolutionising the javascript

programming.
★ Thanks to ECMAScript, jQuery received an

improvement on memory management.
★ Best DOM element selectors.
★ jQuery UI.
★ Hide/Show/Animation.
★ Function and “classes”.
★ Culture of “functional programming”.
★ jQuery remains the most widely 

used JavaScript library on the Web.
★ 1 or more js files.
JavaScript Applications Evolution
JS (alias Vanilla)
jQuery
Umbrella Js
…
AngularJS
Flux (React)
…
AngularJS 2
Redux
…
Js (alias Vanilla)
2010 - 2016
★ MVC Pattern
★ Real single page app
★ Modularization
★ HTML5 + SASS + JS = ♥
★ Grunt / Gulp ♥
★ Thousand of libraries (UI, helpers…)
★ 1 single js file (minified + uglified)
JavaScript Applications Evolution
JS (alias Vanilla)
jQuery
Umbrella Js
…
AngularJS
Flux (React)
…
AngularJS 2
Redux
…
Js (alias Vanilla)
2016 - 201?
★ Component Arhitecture
★ Best modularization
★ TypeScript + ECMAScript 6
★ Webpack
★ Server Side Rendering
★ Reactive Programming
★ Node Package Manager
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
MAIN PROJ
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
MAIN PROJ
if (… $#$^#@
DEV 2
git merge
SHARED MODULE
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
MAIN PROJ
if (… $#$^#@
DEV 2
git merge
SHARED MODULE
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)
MAIN PROJ
SHARED MODULE
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
1 pers
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
2 pers
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
PM
new app

We need an Auth system, also

we want to use the same ui element

like on project 1
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
PM
new app

We need an Auth system, also

we want to use the same ui element

like on project 1
PROJect 1?

I am new …

ahh, OK. i see …

copy/paste … copy/paste
DEV 45
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
PM
new app

We need an Auth system, also

we want to use the same ui element

like on project 1
PROJect 1?

I am new …

ahh, OK. i see …

copy/paste … copy/paste
DEV 45
AFTER 3 WEEKS
PM
$@#$@##$%!@#
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
PM
new app

We need an Auth system, also

we want to use the same ui element

like on project 1
PROJect 1?

I am new …

ahh, OK. i see …

copy/paste … copy/paste
DEV 45
AFTER 3 WEEKS
PM
$@#$@##$%!@#
Yuppyyy

we have a new auth system
DEV 45
An example of an application architecture (2013-2014)
if (… $#$^#@
DEV 1
if (… $#$^#@
DEV 2
git merge
QA 1
WT…?

MAIN PROJ version?

SHARED MODULE version?

buuuug ON SHARED

rollback app(both)

OHHH NO … AUTHHH MODULE? NOW?
if (… $#$^#@
DEV 3
AUTH MODULE
MAIN PROJ
SHARED MODULE
AFTER 2 WEEKS

0 BUG
MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
DEPLOY DAY
n pers + (n+1) pers
A NEW PROJ AFTER 6 MONTHS
PM
new app

We need an Auth system, also

we want to use the same ui element

like on project 1
PROJect 1?

I am new …

ahh, OK. i see …

copy/paste … copy/paste
DEV 45
AFTER 3 WEEKS
PM
$@#$@##$%!@#
Yuppyyy

we have a new auth system
DEV 45
QA 81
hmm new module. ok.

in the next 2 weeks i will test this 

feature
So … times are
changing.
we need a new processes for development
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
MAIN PROJ
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
MAIN PROJ
SHARED MODULE
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
MAIN PROJ
SHARED MODULE
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
QA 1
bug on shared module

rollback to v1.4.0 & DEPLOY
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
QA 1
bug on shared module

rollback to v1.4.0 & DEPLOY
prod server

NPM RUN documentation

1.bundle.js (12kb) 2.bundle.js (22kb) …

nPm RUN deploy prod

NPM RUN dePLOY TEST

NPM TEST
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
QA 1
bug on shared module

rollback to v1.4.0 & DEPLOY
prod server

NPM RUN documentation

1.bundle.js (12kb) 2.bundle.js (22kb) …

nPm RUN deploy prod

NPM RUN dePLOY TEST

NPM TEST
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
QA 1
bug on shared module

rollback to v1.4.0 & DEPLOY
prod server

NPM RUN documentation

1.bundle.js (12kb) 2.bundle.js (22kb) …

nPm RUN deploy prod

NPM RUN dePLOY TEST

NPM TEST
PM
new app

We need an Auth …
An example of an application architecture (2014-201?)
if (… $#$^#@
DEV 1
MAIN PROJ

master
DEV 2
if (… $#$^#@
Shared module

master
AUTH MODULE
MAIN PROJ
SHARED MODULE
DEV 3
if (… $#$^#@
AUTH module

master
@bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
npm install @bsf/auth@1.2.2
QA 1
bug on shared module

rollback to v1.4.0 & DEPLOY
prod server

NPM RUN documentation

1.bundle.js (12kb) 2.bundle.js (22kb) …

nPm RUN deploy prod

NPM RUN dePLOY TEST

NPM TEST
PM
new app

We need an Auth …
it is very easy to do:

Npm install @bsf/auth
Thanks for
watching!
Ionita Dragos Cristian
Business Software Frontend
https://www.linkedin.com/in/
dragos-ionita-8ab20756

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (7)

Dagger 2. Right way to do Dependency Injection
Dagger 2. Right way to do Dependency InjectionDagger 2. Right way to do Dependency Injection
Dagger 2. Right way to do Dependency Injection
 
Dagger 2. The Right Way to Dependency Injections
Dagger 2. The Right Way to Dependency InjectionsDagger 2. The Right Way to Dependency Injections
Dagger 2. The Right Way to Dependency Injections
 
Angular 2... so can I use it now??
Angular 2... so can I use it now??Angular 2... so can I use it now??
Angular 2... so can I use it now??
 
2 years of angular: lessons learned
2 years of angular: lessons learned2 years of angular: lessons learned
2 years of angular: lessons learned
 
Dagger for dummies
Dagger for dummiesDagger for dummies
Dagger for dummies
 
Architecture for scalable Angular applications
Architecture for scalable Angular applicationsArchitecture for scalable Angular applications
Architecture for scalable Angular applications
 
Introduction to angular 2
Introduction to angular 2Introduction to angular 2
Introduction to angular 2
 

Andere mochten auch

Andere mochten auch (6)

Reactive programming - Observable
Reactive programming - ObservableReactive programming - Observable
Reactive programming - Observable
 
Hybrid Mobile Application with Ionic Framework
Hybrid Mobile Application with Ionic FrameworkHybrid Mobile Application with Ionic Framework
Hybrid Mobile Application with Ionic Framework
 
Powerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best PracticesPowerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best Practices
 
Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!
 
Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...
 
Google Tag Manager (GTM)
Google Tag Manager (GTM)Google Tag Manager (GTM)
Google Tag Manager (GTM)
 

Ähnlich wie The new way to write a frontend software

Modeling Patterns for JavaScript Browser-Based Games
Modeling Patterns for JavaScript Browser-Based GamesModeling Patterns for JavaScript Browser-Based Games
Modeling Patterns for JavaScript Browser-Based Games
Ray Toal
 

Ähnlich wie The new way to write a frontend software (20)

Research @ RELEASeD (presented at SATTOSE2013)
Research @ RELEASeD (presented at SATTOSE2013)Research @ RELEASeD (presented at SATTOSE2013)
Research @ RELEASeD (presented at SATTOSE2013)
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
 
Building full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio CodeBuilding full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio Code
 
Myths of Angular 2: What Angular Really Is
Myths of Angular 2: What Angular Really IsMyths of Angular 2: What Angular Really Is
Myths of Angular 2: What Angular Really Is
 
Modularization in java 8
Modularization in java 8Modularization in java 8
Modularization in java 8
 
Modeling Patterns for JavaScript Browser-Based Games
Modeling Patterns for JavaScript Browser-Based GamesModeling Patterns for JavaScript Browser-Based Games
Modeling Patterns for JavaScript Browser-Based Games
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016
 
SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진
 
What's New in Groovy 1.6?
What's New in Groovy 1.6?What's New in Groovy 1.6?
What's New in Groovy 1.6?
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 
Oracle GoldenGate Studio Intro
Oracle GoldenGate Studio IntroOracle GoldenGate Studio Intro
Oracle GoldenGate Studio Intro
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
 
Djangocon 09 Presentation - Pluggable Applications
Djangocon 09 Presentation - Pluggable ApplicationsDjangocon 09 Presentation - Pluggable Applications
Djangocon 09 Presentation - Pluggable Applications
 
Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3
 
Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.
 
From Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOSFrom Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOS
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
 
Play framework
Play frameworkPlay framework
Play framework
 

Kürzlich hochgeladen

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+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 new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
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
 

Kürzlich hochgeladen (20)

%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
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%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
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%+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...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
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 new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
+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...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 

The new way to write a frontend software

  • 1. The new way to write a front-end software.
  • 2. JavaScript Applications Evolution JS (alias Vanilla) jQuery Umbrella Js … AngularJS Flux (React) … AngularJS 2 Redux … Js (alias Vanilla) 1995-2006 JS (simple, without libraries, `chior`) ★ No functions ★ Very bad memory management ★ Have alert command (yuhuu!) ★ Have the text blink feature ★ Have the change text color feature ★ Have the change background color feature
  • 3. JavaScript Applications Evolution JS (alias Vanilla) jQuery Umbrella Js … AngularJS Flux (React) … AngularJS 2 Redux … Js (alias Vanilla) 2006 - 2981 ★ jQuery revolutionising the javascript
 programming. ★ Thanks to ECMAScript, jQuery received an
 improvement on memory management. ★ Best DOM element selectors. ★ jQuery UI. ★ Hide/Show/Animation. ★ Function and “classes”. ★ Culture of “functional programming”. ★ jQuery remains the most widely 
 used JavaScript library on the Web. ★ 1 or more js files.
  • 4. JavaScript Applications Evolution JS (alias Vanilla) jQuery Umbrella Js … AngularJS Flux (React) … AngularJS 2 Redux … Js (alias Vanilla) 2010 - 2016 ★ MVC Pattern ★ Real single page app ★ Modularization ★ HTML5 + SASS + JS = ♥ ★ Grunt / Gulp ♥ ★ Thousand of libraries (UI, helpers…) ★ 1 single js file (minified + uglified)
  • 5. JavaScript Applications Evolution JS (alias Vanilla) jQuery Umbrella Js … AngularJS Flux (React) … AngularJS 2 Redux … Js (alias Vanilla) 2016 - 201? ★ Component Arhitecture ★ Best modularization ★ TypeScript + ECMAScript 6 ★ Webpack ★ Server Side Rendering ★ Reactive Programming ★ Node Package Manager
  • 6. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1
  • 7. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 MAIN PROJ
  • 8. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 MAIN PROJ if (… $#$^#@ DEV 2 git merge SHARED MODULE
  • 9. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 MAIN PROJ if (… $#$^#@ DEV 2 git merge SHARED MODULE QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both)
  • 10. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) MAIN PROJ SHARED MODULE
  • 11. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE
  • 12. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB)
  • 13. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY 1 pers
  • 14. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY 2 pers
  • 15. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers
  • 16. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS
  • 17. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS PM new app
 We need an Auth system, also
 we want to use the same ui element
 like on project 1
  • 18. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS PM new app
 We need an Auth system, also
 we want to use the same ui element
 like on project 1 PROJect 1? I am new … ahh, OK. i see … copy/paste … copy/paste DEV 45
  • 19. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS PM new app
 We need an Auth system, also
 we want to use the same ui element
 like on project 1 PROJect 1? I am new … ahh, OK. i see … copy/paste … copy/paste DEV 45 AFTER 3 WEEKS PM $@#$@##$%!@#
  • 20. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS PM new app
 We need an Auth system, also
 we want to use the same ui element
 like on project 1 PROJect 1? I am new … ahh, OK. i see … copy/paste … copy/paste DEV 45 AFTER 3 WEEKS PM $@#$@##$%!@# Yuppyyy we have a new auth system DEV 45
  • 21. An example of an application architecture (2013-2014) if (… $#$^#@ DEV 1 if (… $#$^#@ DEV 2 git merge QA 1 WT…?
 MAIN PROJ version? SHARED MODULE version? buuuug ON SHARED rollback app(both) OHHH NO … AUTHHH MODULE? NOW? if (… $#$^#@ DEV 3 AUTH MODULE MAIN PROJ SHARED MODULE AFTER 2 WEEKS 0 BUG MIN, UGLY, GIT PULL ORIGIN MASTER => APP.PROD.JS (5844KB) DEPLOY DAY n pers + (n+1) pers A NEW PROJ AFTER 6 MONTHS PM new app
 We need an Auth system, also
 we want to use the same ui element
 like on project 1 PROJect 1? I am new … ahh, OK. i see … copy/paste … copy/paste DEV 45 AFTER 3 WEEKS PM $@#$@##$%!@# Yuppyyy we have a new auth system DEV 45 QA 81 hmm new module. ok. in the next 2 weeks i will test this 
 feature
  • 22. So … times are changing. we need a new processes for development
  • 23. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1
  • 24. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master MAIN PROJ
  • 25. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master MAIN PROJ SHARED MODULE
  • 26. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master MAIN PROJ SHARED MODULE @bsf/main-proj@1.0.1 @bsf/shared@1.5.2
  • 27. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
  • 28. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2
  • 29. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2
  • 30. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2 QA 1 bug on shared module rollback to v1.4.0 & DEPLOY
  • 31. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2 QA 1 bug on shared module rollback to v1.4.0 & DEPLOY prod server
 NPM RUN documentation
 1.bundle.js (12kb) 2.bundle.js (22kb) …
 nPm RUN deploy prod
 NPM RUN dePLOY TEST
 NPM TEST
  • 32. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2 QA 1 bug on shared module rollback to v1.4.0 & DEPLOY prod server
 NPM RUN documentation
 1.bundle.js (12kb) 2.bundle.js (22kb) …
 nPm RUN deploy prod
 NPM RUN dePLOY TEST
 NPM TEST
  • 33. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2 QA 1 bug on shared module rollback to v1.4.0 & DEPLOY prod server
 NPM RUN documentation
 1.bundle.js (12kb) 2.bundle.js (22kb) …
 nPm RUN deploy prod
 NPM RUN dePLOY TEST
 NPM TEST PM new app
 We need an Auth …
  • 34. An example of an application architecture (2014-201?) if (… $#$^#@ DEV 1 MAIN PROJ master DEV 2 if (… $#$^#@ Shared module master AUTH MODULE MAIN PROJ SHARED MODULE DEV 3 if (… $#$^#@ AUTH module master @bsf/main-proj@1.0.1 @bsf/shared@1.5.2 @bsf/auth@1.2.2 npm install @bsf/auth@1.2.2 QA 1 bug on shared module rollback to v1.4.0 & DEPLOY prod server
 NPM RUN documentation
 1.bundle.js (12kb) 2.bundle.js (22kb) …
 nPm RUN deploy prod
 NPM RUN dePLOY TEST
 NPM TEST PM new app
 We need an Auth … it is very easy to do: Npm install @bsf/auth
  • 35. Thanks for watching! Ionita Dragos Cristian Business Software Frontend https://www.linkedin.com/in/ dragos-ionita-8ab20756