SlideShare a Scribd company logo
Angular
Morning to understand
About LINAGORA
Services Software Assurance Software Editor
Hello!
I am Maxime ROBERT
Web developper
Javascript & Angular lover
Working at Linagora on an Angular project since 6+ months
You can find me at maxime1992 on
It’s just Angular
1 . x . y : AngularJs
2+ . x . y : Angular
https://angular.io/presskit.html
Table of content
1. What’s new in Angular ?
■ Semantic versioning
■ Typescript
■ Web components
■ Focus on performance
2. More than a framework, a platform
■ Cli
■ Material
■ Mobile kit
■ Universal
■ Protractor
3. State management and data flow
■ RxJs
■ Redux
What’s new in Angular1
Semantic Versioning
Breaking
Major : 4.0.0
◇ New features
◇ Potential breaking
changes
Feature
Minor : 4.1.0
◇ New features
◇ No breaking
changes
Fix
Patch : 4.0.1
◇ No features
◇ No breaking
changes
2.x.y
4.0.0Wait … What ?
Why v3 has been
skipped ?
@angular/core 2.x.y
@angular/compiler 2.x.y
@angular/http 2.x.y
@angular/router 3.x.y
Misalignment of the router package version
Why v3 has been
skipped ?
@angular/core 4.x.y
@angular/compiler 4.x.y
@angular/http 4.x.y
@angular/router 4.x.y
Predictable, transparent &
incremental evolutions
● Patch version every week
● Minor version every month
● Major version every 6 months
Typescript
◇ Typed Javascript
Typescript
◇ Typed Javascript
◇ Avoid runtime errors as much as possible
Typescript
◇ Typed Javascript
ES6
ES5
Compatibility
◇ Avoid runtime errors as much as possible
◇ ES6 features compiled into ES5
Typescript
◇ Typed Javascript
ES6
ES5
◇ Avoid runtime errors as much as possible
◇ ES6 features compiled into ES5
◇ Documentation
Typescript
◇ Typed Javascript
ES6
ES5
Compatibility
◇ Syntax similar to Java
Classes, inheritance, decorators, interfaces, etc
◇ Avoid runtime errors as much as possible
◇ ES6 features compiled into ES5
◇ Documentation
Web components
◇ A component has it’s own :
App
Comp 1 Comp 2
Comp 3 Comp 4
- Style (.css | .less | .sass)
◇ Angular app → component tree
- Template (.html)
- Logic (.ts)
Comp 4
◇ Reuse components
Focus on performance
HTMLJavascript
Component
Compile HTML
x30, x50, x100, + ?
Render
Javascript
Component
Compile HTML
Render
JIT AOT
Ahead Of Time compilation
JIT 625 kB AOT 300 kB
Core (118 kB)
Core (112 kB)Compiler (318 kB)
Tree
Shaking
Focus on performance
◇ Split your code by modules
(good practice)
◇ Load only the modules you need
when you need them
◇ Nice on desktop
Must have for tablets and mobiles
Lazy loading made easy !
Chunk size : 56.8 KB Chunks size : 574.6 KB
Do not preload lazy loaded routes
Preload lazy loaded routes
More than a framework
a platform2
Prelude
Javascript ecosystem, 2014 to 2016
Tired …I’m just tired
Angular (v2 and up) - Morning to understand - Linagora
I HAVE A DREAM
THAT ONE DAY I’LL BE ABLE
TO FOCUS ON CODE
New project
Time spent on a project
Find the appropriate
tool(s)
Setup
Code
Bug fix
Deliver
Code
Deliver
Other project
...
...
Time spent on a project
Code
Tests
Bug fix
Opti°
Deliver
Time spent on a project
Find the appropriate
tool(s)
Setup
Code
Bug fix
Deliver
Time spent on a project
More than a framework
a Platform2
Angular ecosystem
◇ Cli
◇ Material
◇ Mobile kit
◇ Universal
◇ Protractor
https://cli.angular.io
https://material.angular.io
https://mobile.angular.io
https://universal.angular.io
https://protractor.angular.io
Angular Cli
◇ Start a new project < 3mn
◇ Same footprint, easier to operate on ≠ projects
◇ Webpack : Import, export, build for production
◇ Generate components, services, modules, etc
◇ Livereload, Sass, Less
Angular Material
◇ Material components ready to use
◇ API to interact with them (in and out)
◇ Ready for production but not every
components available yet
Angular Mobile
◇ Keep the discoverability of the web
◇ Automatic Progressive Web Apps
◇ App Shell, Service Worker, Application Manifest
Ex : https://ng2-weather-pwa2.firebaseapp.com
◇ Not ready yet with the CLI but integration on
the way
Angular Universal
◇ Better performance
◇ Render HTML at first paint
◇ Optimized SEO (Search Engine Optimization)
Angular Protractor
◇ Write actions to do in a browser like a user
would
◇ Make sure your final product is working well at
anytime
◇ Continuous integration : Check on every commit
Before we take a break
◇ It’s just Angular
◇ Typescript is a perfect replacement for Javascript
◇ Angular has better performance than AngularJs
◇ Components for clarity and reusability
◇ Angular doesn’t come alone
Platform offers a huge boost for devs
Focus on business code
What you should keep in mind from part 1 & 2
What’s coming next ?
◇ How to handle our data ?
◇ How to create sustainable web apps ?
◇ How to de like ?
State management
and
Data flow
3
RxJs Reactive Programming
Why you’ll love it !
◇ Think of your data as an event or
a stream :
They evolve over time
◇ Functional programming
◇ Great documentation
◇ More than 60 operators, just look
for what you need
What could go wrong ?
◇ Big learning curve
◇ Potential memory leaks if devs
don’t fully understand what
they’re doing
cc Rob Wormald’s slides
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html
Stream 2
a
b
c
d
e
f
Street
Secure building
Stream 1 Stream 2
Stream 1
When the input changes
Debounce 400ms
T = 400ms T = 400ms
T < 400ms
Continue only if input has changed
Fetch Wikipedia with the text to search
Display values over time
cc Thoughtram article and the demo
{
firstname : 'Maxime' ,
lastname : 'Robert' ,
age: 24
}
Redux
{
firstname : 'Maxime' ,
lastname : 'Robert' ,
age: 25
}
Why you’ll love it !
◇ Centralized store
◇ Plays well with asynchronous
◇ API to introduce middlewares
◇ Nice documentation
◇ Pure functions, easy to test
◇ Huge community
◇ Powerful debugging tools
{
firstname : 'Maxime' ,
lastname : 'Robert' ,
age: 25
}
Handle application state
Birthday (mutable)
Birthday (immutable)
#1
#1 #2
{
firstname : 'Maxime' ,
lastname : 'Robert' ,
age: 24
}
#1
Immutability
debugging tools
Let’s eat
Pizza Sync
The absolute tool at Linagora Toulouse
maxime1992/pizza-sync
demo, shall we ?
How it feels to use
Time travelling to debug
◇ Angular is stable and can be used in production
◇ Angular platform allows us to focus on business code and
final product
◇ Better performances especially on small devices
◇ Developers will the syntax, the architecture, the ecosystem
◇ Lot of things to learn, lot of things to get in return
Conclusion
Thanks!
Any questions?
Internal project:
PetalsCockpit
Customer project
PetalsCockpit
A WebApp that manages
● Configuration
● Operation
● Monitoring
of Petals Enterprise Service Bus
Petals ESB is a middleware solution for Service
Oriented Integration
- Multi-servers architecture
- Configuration on the fly - XML files
- Command line - SSH
- API Jmx
Objectives:
- A Rich Internet Application
-
- Responsive
( PC / Tablet / mobile )
Technical Architecture:
- Full Stack JS
- Web component
- Lazy Loading
- NoSql
Starting with a POC (end-2015)
- Rich Client
- Single Page Application
- Material Design
- Responsive
- Quick prototyping
- testing
Results
Pros Cons
- Hard to define file structure
- $scope easy to use but hard to
debug
- Business logic in controller hard
to maintain
- Complexity of some features ( DI,
Factories / Services)
- Router is limited
- Need to adopt good style guide
(JohnPapa)
Server-Side: NodeJS were not easy to
plug with back-end Java / JMX
Back-end Java team rejection
Project re-start (sept-2016)
PIVOTE { Lean Startup }
Redux
- Reactive
programming
- functional
programming
Syntax, programming patterns similar to Java
- Typed Javascript
- Compiled : less runtime error
- Classes, inheritance,
decorators, interfaces, etc
- Web Component
- Reuse Components
- Performance
- CLI, Material, Protoactor
- dev, demo, prod
- Application State
- Centralize Store
- Debug tools
Back-end focus
Front-end
team
/index.html
/main.js
/assets/..
/api
/users
/workspaces
/etc..
REST
Quasar
JMX
Dropwizard
Back-end
team
Similar syntax and programming patterns
empower collaborations
Customer project
◇ Interface for disruptive IoT product
◇ Multi-platform
◇ Modern fancy design
◇ Evolutive and maintainable
◇ Connected to Django backend :
REST and websocket
Challenge 1 :
industrialisation
A template to activate the framework
◇ Project automation : Angular CLI
◇ Tree for pages, components, assets,
environments, styles, etc.
◇ Reactive mechanisms : reducers
◇ Mapping app structure with Angular
features: side panels, menus, etc
Challenge 2 :
skills staffing
◇ Skills development
◇ Embracing reactive way of thinking
◇ Embracing the framework
Challenge 3 :
easy deployment
◇ Environments : dev, demo, prod
◇ Easy mock-up implementation
for development environment
◇ Electron for packaging Windows app
frontend frontend
backend
Questions ?

More Related Content

Viewers also liked (20)

PDF
Industrialisez le développement et la maintenance de vos sites avec Drupal
LINAGORA
 
PDF
Séminaire OBM Linagora 2008
LINAGORA
 
PPTX
PHP Introduction
mohamedsaad24
 
PDF
Server side development using Swift and Vapor
Santex Group
 
PDF
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Luciano Mammino
 
PDF
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
Juniper Networks
 
PDF
Angular Pipes Workshop
Nir Kaufman
 
PDF
Back to the future: Isomorphic javascript applications
Luciano Colosio
 
PDF
React 101
Casear Chu
 
PDF
How To Deliver a Project With a 150% Advance
Koombea
 
PDF
Exploiting Deserialization Vulnerabilities in Java
CODE WHITE GmbH
 
PDF
Growing from 0 to 100 million users
Koombea
 
PDF
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
Matt Raible
 
PDF
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Ryan Weaver
 
PDF
Using ReactJS in AngularJS
Boris Dinkevich
 
PDF
HTML5 JavaScript APIs
Remy Sharp
 
PDF
LinPKI
LINAGORA
 
PDF
AWS Lambda and Serverless framework: lessons learned while building a serverl...
Luciano Mammino
 
PDF
Quick introduction to Angular 4 for AngularJS 1.5 developers
Paweł Żurowski
 
PDF
Swift for back end: A new generation of full stack languages?
Koombea
 
Industrialisez le développement et la maintenance de vos sites avec Drupal
LINAGORA
 
Séminaire OBM Linagora 2008
LINAGORA
 
PHP Introduction
mohamedsaad24
 
Server side development using Swift and Vapor
Santex Group
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Luciano Mammino
 
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
Juniper Networks
 
Angular Pipes Workshop
Nir Kaufman
 
Back to the future: Isomorphic javascript applications
Luciano Colosio
 
React 101
Casear Chu
 
How To Deliver a Project With a 150% Advance
Koombea
 
Exploiting Deserialization Vulnerabilities in Java
CODE WHITE GmbH
 
Growing from 0 to 100 million users
Koombea
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
Matt Raible
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Ryan Weaver
 
Using ReactJS in AngularJS
Boris Dinkevich
 
HTML5 JavaScript APIs
Remy Sharp
 
LinPKI
LINAGORA
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
Luciano Mammino
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Paweł Żurowski
 
Swift for back end: A new generation of full stack languages?
Koombea
 

Similar to Angular (v2 and up) - Morning to understand - Linagora (20)

PDF
Angular v2 et plus : le futur du développement d'applications en entreprise
LINAGORA
 
PDF
Angular, the New Angular JS
Kenzan
 
PDF
AngularJS in Production (CTO Forum)
Alex Ross
 
ODP
Angular 6 - The Complete Guide
Sam Dias
 
PPTX
Angular Js Advantages - Complete Reference
EPAM Systems
 
PDF
Why Angular It's Still a Top Choice for Developers in 2025.pdf
LL Technolab
 
PPTX
Engineering Frontends
Vladimir Milojević
 
PDF
Angular JS 2_0 BCS CTO_in_Res V3
Bruce Pentreath
 
PPTX
Web Development with Angular Session.pptx
MrunalBhosale18
 
PPTX
A brief description about Angular
PAYALJHA8
 
PDF
Angular2 - A story from the trenches
Johannes Rudolph
 
PPTX
State of angular ecosystem
Giovanni Cândido da Silva
 
PDF
Migrating to Angular 4 for Spring Developers
VMware Tanzu
 
PDF
Migrating to Angular 5 for Spring Developers
Gunnar Hillert
 
PPTX
Angular
TejinderMakkar
 
PPT
Top java script frameworks ppt
Omkarsoft Bangalore
 
PPTX
Angular
sridhiya
 
PDF
Why angular?
Sergey Bielanovskiy
 
PPTX
AngularJS 1.x - your first application (problems and solutions)
Igor Talevski
 
PDF
Evolution and History of Angular as Web Development Platform.pdf
iFour Technolab Pvt. Ltd.
 
Angular v2 et plus : le futur du développement d'applications en entreprise
LINAGORA
 
Angular, the New Angular JS
Kenzan
 
AngularJS in Production (CTO Forum)
Alex Ross
 
Angular 6 - The Complete Guide
Sam Dias
 
Angular Js Advantages - Complete Reference
EPAM Systems
 
Why Angular It's Still a Top Choice for Developers in 2025.pdf
LL Technolab
 
Engineering Frontends
Vladimir Milojević
 
Angular JS 2_0 BCS CTO_in_Res V3
Bruce Pentreath
 
Web Development with Angular Session.pptx
MrunalBhosale18
 
A brief description about Angular
PAYALJHA8
 
Angular2 - A story from the trenches
Johannes Rudolph
 
State of angular ecosystem
Giovanni Cândido da Silva
 
Migrating to Angular 4 for Spring Developers
VMware Tanzu
 
Migrating to Angular 5 for Spring Developers
Gunnar Hillert
 
Top java script frameworks ppt
Omkarsoft Bangalore
 
Angular
sridhiya
 
Why angular?
Sergey Bielanovskiy
 
AngularJS 1.x - your first application (problems and solutions)
Igor Talevski
 
Evolution and History of Angular as Web Development Platform.pdf
iFour Technolab Pvt. Ltd.
 
Ad

More from LINAGORA (20)

PDF
Personal branding : e-recrutement et réseaux sociaux professionnels
LINAGORA
 
PDF
Construisons ensemble le chatbot bancaire dedemain !
LINAGORA
 
PDF
ChatBots et intelligence artificielle arrivent dans les banques
LINAGORA
 
PDF
Deep Learning in practice : Speech recognition and beyond - Meetup
LINAGORA
 
PDF
Advanced Node.JS Meetup
LINAGORA
 
PDF
Call a C API from Python becomes more enjoyable with CFFI
LINAGORA
 
PDF
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
LINAGORA
 
PDF
Comment faire ses mappings ElasticSearch aux petits oignons ? - LINAGORA
LINAGORA
 
PDF
CapDémat Evolution plateforme de GRU pour collectivités
LINAGORA
 
PDF
Présentation du marché P2I UGAP « Support sur Logiciels Libres »
LINAGORA
 
PDF
Offre de demat d'Adullact projet
LINAGORA
 
PDF
La dématérialisation du conseil minicipal
LINAGORA
 
PDF
Open stack @ sierra wireless
LINAGORA
 
PDF
OpenStack - open source au service du Cloud
LINAGORA
 
PDF
Architecture d'annuaire hautement disponible avec OpenLDAP
LINAGORA
 
PDF
Présentation offre LINID
LINAGORA
 
PDF
Matinée pour conmrendre consacrée à LinID.org, gestion, fédération et contrôl...
LINAGORA
 
PDF
Matinée pour conmrendre consacrée à LinShare.org, application de partage de f...
LINAGORA
 
PDF
Open Source Software Assurance by Linagora
LINAGORA
 
PDF
Présentation de l’extension Lightning pour Thunderbird
LINAGORA
 
Personal branding : e-recrutement et réseaux sociaux professionnels
LINAGORA
 
Construisons ensemble le chatbot bancaire dedemain !
LINAGORA
 
ChatBots et intelligence artificielle arrivent dans les banques
LINAGORA
 
Deep Learning in practice : Speech recognition and beyond - Meetup
LINAGORA
 
Advanced Node.JS Meetup
LINAGORA
 
Call a C API from Python becomes more enjoyable with CFFI
LINAGORA
 
[UDS] Cloud Computing "pour les nuls" (Exemple avec LinShare)
LINAGORA
 
Comment faire ses mappings ElasticSearch aux petits oignons ? - LINAGORA
LINAGORA
 
CapDémat Evolution plateforme de GRU pour collectivités
LINAGORA
 
Présentation du marché P2I UGAP « Support sur Logiciels Libres »
LINAGORA
 
Offre de demat d'Adullact projet
LINAGORA
 
La dématérialisation du conseil minicipal
LINAGORA
 
Open stack @ sierra wireless
LINAGORA
 
OpenStack - open source au service du Cloud
LINAGORA
 
Architecture d'annuaire hautement disponible avec OpenLDAP
LINAGORA
 
Présentation offre LINID
LINAGORA
 
Matinée pour conmrendre consacrée à LinID.org, gestion, fédération et contrôl...
LINAGORA
 
Matinée pour conmrendre consacrée à LinShare.org, application de partage de f...
LINAGORA
 
Open Source Software Assurance by Linagora
LINAGORA
 
Présentation de l’extension Lightning pour Thunderbird
LINAGORA
 
Ad

Recently uploaded (20)

PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 

Angular (v2 and up) - Morning to understand - Linagora

  • 2. About LINAGORA Services Software Assurance Software Editor
  • 3. Hello! I am Maxime ROBERT Web developper Javascript & Angular lover Working at Linagora on an Angular project since 6+ months You can find me at maxime1992 on
  • 4. It’s just Angular 1 . x . y : AngularJs 2+ . x . y : Angular https://angular.io/presskit.html
  • 5. Table of content 1. What’s new in Angular ? ■ Semantic versioning ■ Typescript ■ Web components ■ Focus on performance 2. More than a framework, a platform ■ Cli ■ Material ■ Mobile kit ■ Universal ■ Protractor 3. State management and data flow ■ RxJs ■ Redux
  • 6. What’s new in Angular1
  • 7. Semantic Versioning Breaking Major : 4.0.0 ◇ New features ◇ Potential breaking changes Feature Minor : 4.1.0 ◇ New features ◇ No breaking changes Fix Patch : 4.0.1 ◇ No features ◇ No breaking changes
  • 10. Why v3 has been skipped ? @angular/core 2.x.y @angular/compiler 2.x.y @angular/http 2.x.y @angular/router 3.x.y Misalignment of the router package version
  • 11. Why v3 has been skipped ? @angular/core 4.x.y @angular/compiler 4.x.y @angular/http 4.x.y @angular/router 4.x.y
  • 12. Predictable, transparent & incremental evolutions ● Patch version every week ● Minor version every month ● Major version every 6 months
  • 14. Typescript ◇ Typed Javascript ◇ Avoid runtime errors as much as possible
  • 15. Typescript ◇ Typed Javascript ES6 ES5 Compatibility ◇ Avoid runtime errors as much as possible ◇ ES6 features compiled into ES5
  • 16. Typescript ◇ Typed Javascript ES6 ES5 ◇ Avoid runtime errors as much as possible ◇ ES6 features compiled into ES5 ◇ Documentation
  • 17. Typescript ◇ Typed Javascript ES6 ES5 Compatibility ◇ Syntax similar to Java Classes, inheritance, decorators, interfaces, etc ◇ Avoid runtime errors as much as possible ◇ ES6 features compiled into ES5 ◇ Documentation
  • 18. Web components ◇ A component has it’s own : App Comp 1 Comp 2 Comp 3 Comp 4 - Style (.css | .less | .sass) ◇ Angular app → component tree - Template (.html) - Logic (.ts) Comp 4 ◇ Reuse components
  • 19. Focus on performance HTMLJavascript Component Compile HTML x30, x50, x100, + ? Render Javascript Component Compile HTML Render JIT AOT Ahead Of Time compilation
  • 20. JIT 625 kB AOT 300 kB Core (118 kB) Core (112 kB)Compiler (318 kB) Tree Shaking
  • 21. Focus on performance ◇ Split your code by modules (good practice) ◇ Load only the modules you need when you need them ◇ Nice on desktop Must have for tablets and mobiles Lazy loading made easy !
  • 22. Chunk size : 56.8 KB Chunks size : 574.6 KB Do not preload lazy loaded routes Preload lazy loaded routes
  • 23. More than a framework a platform2 Prelude
  • 24. Javascript ecosystem, 2014 to 2016 Tired …I’m just tired
  • 26. I HAVE A DREAM THAT ONE DAY I’LL BE ABLE TO FOCUS ON CODE
  • 28. Time spent on a project Find the appropriate tool(s) Setup Code Bug fix Deliver
  • 31. Find the appropriate tool(s) Setup Code Bug fix Deliver Time spent on a project
  • 32. More than a framework a Platform2
  • 33. Angular ecosystem ◇ Cli ◇ Material ◇ Mobile kit ◇ Universal ◇ Protractor https://cli.angular.io https://material.angular.io https://mobile.angular.io https://universal.angular.io https://protractor.angular.io
  • 34. Angular Cli ◇ Start a new project < 3mn ◇ Same footprint, easier to operate on ≠ projects ◇ Webpack : Import, export, build for production ◇ Generate components, services, modules, etc ◇ Livereload, Sass, Less
  • 35. Angular Material ◇ Material components ready to use ◇ API to interact with them (in and out) ◇ Ready for production but not every components available yet
  • 36. Angular Mobile ◇ Keep the discoverability of the web ◇ Automatic Progressive Web Apps ◇ App Shell, Service Worker, Application Manifest Ex : https://ng2-weather-pwa2.firebaseapp.com ◇ Not ready yet with the CLI but integration on the way
  • 37. Angular Universal ◇ Better performance ◇ Render HTML at first paint ◇ Optimized SEO (Search Engine Optimization)
  • 38. Angular Protractor ◇ Write actions to do in a browser like a user would ◇ Make sure your final product is working well at anytime ◇ Continuous integration : Check on every commit
  • 39. Before we take a break ◇ It’s just Angular ◇ Typescript is a perfect replacement for Javascript ◇ Angular has better performance than AngularJs ◇ Components for clarity and reusability ◇ Angular doesn’t come alone Platform offers a huge boost for devs Focus on business code What you should keep in mind from part 1 & 2 What’s coming next ? ◇ How to handle our data ? ◇ How to create sustainable web apps ? ◇ How to de like ?
  • 41. RxJs Reactive Programming Why you’ll love it ! ◇ Think of your data as an event or a stream : They evolve over time ◇ Functional programming ◇ Great documentation ◇ More than 60 operators, just look for what you need What could go wrong ? ◇ Big learning curve ◇ Potential memory leaks if devs don’t fully understand what they’re doing cc Rob Wormald’s slides
  • 43. When the input changes Debounce 400ms T = 400ms T = 400ms T < 400ms Continue only if input has changed Fetch Wikipedia with the text to search Display values over time cc Thoughtram article and the demo
  • 44. { firstname : 'Maxime' , lastname : 'Robert' , age: 24 } Redux { firstname : 'Maxime' , lastname : 'Robert' , age: 25 } Why you’ll love it ! ◇ Centralized store ◇ Plays well with asynchronous ◇ API to introduce middlewares ◇ Nice documentation ◇ Pure functions, easy to test ◇ Huge community ◇ Powerful debugging tools { firstname : 'Maxime' , lastname : 'Robert' , age: 25 } Handle application state Birthday (mutable) Birthday (immutable) #1 #1 #2 { firstname : 'Maxime' , lastname : 'Robert' , age: 24 } #1 Immutability debugging tools
  • 45. Let’s eat Pizza Sync The absolute tool at Linagora Toulouse maxime1992/pizza-sync demo, shall we ?
  • 46. How it feels to use Time travelling to debug
  • 47. ◇ Angular is stable and can be used in production ◇ Angular platform allows us to focus on business code and final product ◇ Better performances especially on small devices ◇ Developers will the syntax, the architecture, the ecosystem ◇ Lot of things to learn, lot of things to get in return Conclusion
  • 50. PetalsCockpit A WebApp that manages ● Configuration ● Operation ● Monitoring of Petals Enterprise Service Bus Petals ESB is a middleware solution for Service Oriented Integration - Multi-servers architecture - Configuration on the fly - XML files - Command line - SSH - API Jmx
  • 51. Objectives: - A Rich Internet Application - - Responsive ( PC / Tablet / mobile ) Technical Architecture: - Full Stack JS - Web component - Lazy Loading - NoSql Starting with a POC (end-2015)
  • 52. - Rich Client - Single Page Application - Material Design - Responsive - Quick prototyping - testing Results Pros Cons - Hard to define file structure - $scope easy to use but hard to debug - Business logic in controller hard to maintain - Complexity of some features ( DI, Factories / Services) - Router is limited - Need to adopt good style guide (JohnPapa) Server-Side: NodeJS were not easy to plug with back-end Java / JMX Back-end Java team rejection
  • 53. Project re-start (sept-2016) PIVOTE { Lean Startup } Redux - Reactive programming - functional programming Syntax, programming patterns similar to Java - Typed Javascript - Compiled : less runtime error - Classes, inheritance, decorators, interfaces, etc - Web Component - Reuse Components - Performance - CLI, Material, Protoactor - dev, demo, prod - Application State - Centralize Store - Debug tools
  • 55. Customer project ◇ Interface for disruptive IoT product ◇ Multi-platform ◇ Modern fancy design ◇ Evolutive and maintainable ◇ Connected to Django backend : REST and websocket
  • 56. Challenge 1 : industrialisation A template to activate the framework ◇ Project automation : Angular CLI ◇ Tree for pages, components, assets, environments, styles, etc. ◇ Reactive mechanisms : reducers ◇ Mapping app structure with Angular features: side panels, menus, etc
  • 57. Challenge 2 : skills staffing ◇ Skills development ◇ Embracing reactive way of thinking ◇ Embracing the framework
  • 58. Challenge 3 : easy deployment ◇ Environments : dev, demo, prod ◇ Easy mock-up implementation for development environment ◇ Electron for packaging Windows app frontend frontend backend