SlideShare une entreprise Scribd logo
1  sur  59
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
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 ?

Contenu connexe

En vedette

Industrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalLINAGORA
 
Séminaire OBM Linagora 2008
Séminaire OBM Linagora 2008Séminaire OBM Linagora 2008
Séminaire OBM Linagora 2008LINAGORA
 
PHP Introduction
PHP Introduction PHP Introduction
PHP Introduction Spy Seat
 
Server side development using Swift and Vapor
Server side development using Swift and VaporServer side development using Swift and Vapor
Server side development using Swift and VaporSantex Group
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
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...
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...Juniper Networks
 
Angular Pipes Workshop
Angular Pipes WorkshopAngular Pipes Workshop
Angular Pipes WorkshopNir Kaufman
 
Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applicationsLuciano Colosio
 
How To Deliver a Project With a 150% Advance
How To Deliver a Project With a 150% AdvanceHow To Deliver a Project With a 150% Advance
How To Deliver a Project With a 150% AdvanceKoombea
 
Exploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaExploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaCODE WHITE GmbH
 
Growing from 0 to 100 million users
Growing from 0 to 100 million usersGrowing from 0 to 100 million users
Growing from 0 to 100 million usersKoombea
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015Matt Raible
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreRyan Weaver
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJSBoris Dinkevich
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIsRemy Sharp
 
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...Amazon Web Services
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...Luciano Mammino
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersPaweł Żurowski
 

En vedette (20)

Industrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec Drupal
 
Séminaire OBM Linagora 2008
Séminaire OBM Linagora 2008Séminaire OBM Linagora 2008
Séminaire OBM Linagora 2008
 
PHP Introduction
PHP Introduction PHP Introduction
PHP Introduction
 
Server side development using Swift and Vapor
Server side development using Swift and VaporServer side development using Swift and Vapor
Server side development using Swift and Vapor
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
 
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
Network Configuration Example: Configuring CoS to Support an MC-LAG on an FCo...
 
Angular Pipes Workshop
Angular Pipes WorkshopAngular Pipes Workshop
Angular Pipes Workshop
 
Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applications
 
React 101
React 101React 101
React 101
 
How To Deliver a Project With a 150% Advance
How To Deliver a Project With a 150% AdvanceHow To Deliver a Project With a 150% Advance
How To Deliver a Project With a 150% Advance
 
Exploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaExploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in Java
 
Growing from 0 to 100 million users
Growing from 0 to 100 million usersGrowing from 0 to 100 million users
Growing from 0 to 100 million users
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJS
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIs
 
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...
AWS re:Invent 2016: Workshop: Deploy a Swift Web Application on Amazon ECS (C...
 
LinPKI
LinPKILinPKI
LinPKI
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developers
 

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

Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseLINAGORA
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
On component interface
On component interfaceOn component interface
On component interfaceLaurence Chen
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeRadosław Scheibinger
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application StrategiesBIOVIA
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019PhuocNT (Fresher.VN)
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...VMware Tanzu
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)Alex Ross
 
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf....NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...Karel Zikmund
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenchesJohannes Rudolph
 
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14p6academy
 
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 

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

Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entreprise
 
Dust.js
Dust.jsDust.js
Dust.js
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
On component interface
On component interfaceOn component interface
On component interface
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
 
Angular 2
Angular 2Angular 2
Angular 2
 
The Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial Services
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
resume
resumeresume
resume
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)
 
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf....NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...
.NET Core Summer event 2019 in Brno, CZ - .NET Core Networking stack and perf...
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenches
 
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14
Primavera gateway SAP provider - Oracle Primavera P6 Collaborate 14
 
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 

Plus de LINAGORA

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

Plus de LINAGORA (20)

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

Dernier

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
+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
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
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 Modelsaagamshah0812
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
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 🔝✔️✔️Delhi Call girls
 

Dernier (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
+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...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
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
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
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 🔝✔️✔️
 

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
  • 25.
  • 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