SlideShare une entreprise Scribd logo
1  sur  12
Créer une app en JavaScript moderne
3 octobre 2016
Un environnement hostile
2
Conflits de libs
Packaging des assets
Difficultés à tester
Les imports/exports ES6
Des frameworks à l’infini
Qualité des modules npm variable
3
La toolchain
La toolchain : packager un projet avec webpack
4
Les types de projets
5
• Vit dans son docker
• Pas de risque de conflit avec
des parties externes
App standalone
• Intégrée à une autre interface
• Si une lib est globale, il ne faut
pas l’inclure dans le bundle
mais utiliser la version du SI
• Attention aux conflits sur le
CSS, utiliser du CSS local ou
préfixé
App intégrée
• Importé par des applications
• Ne doit pas inclure ses propres
dépendances dans le bundle
• Attention au CSS/SASS:
@import ‘bootstrap’ ajoute tout
bootstrap au bundle, c’est à
éviter
Bibliothèque
Systematic
6
Webpack s’est imposé comme outil de build, mais :
• La configuration est complexe
• D’autres problèmes se présentent :
• Traductions
• Settings
• Linting
Systematic contient une config de webpack et des solutions pour ces problèmes tout en permettant
d’ajouter des options de builds spécifiques au framework utilisé.
Avantages :
• Possibilité de démarrer un projet sans maîtriser Webpack
• Beaucoup de choix sont déjà faits
• Pas de boilerplate, mais configurable
Présentation sur systematic : https://docs.google.com/presentation/d/1miOCBqnYpFoydrwCeygD9jhXtk1sIgE3iRgD2uLOy30
Repo github: https://github.com/Polyconseil/systematic
7
Réaliser mon projet
Quel framework/lib?
8
• Véritable framework complet
• Grosse communauté
• Complexe, difficultés pour faire des composants
• Non recommandé pour des nouveaux projets
• Sorti en septembre 2016
• Composant faisables simplement
• Injection de dépendance
• Utilise Typescript (outillage vs overhead)
• Complexité assez élevée : composants, directives,
services, provider
Angular Angular 2
• Juste une lib, nécessite vite des plugins
• Composants
• Templates avec attributs spéciaux, comme Angular
• Bonne communauté
• Simple et facile
• Juste une lib, nécessite vite des plugins
• Composants
• Templates en JSX, directement dans le JS
• Orientation programmation fonctionnelle
• Grosse communauté
• Relativement facile à apprendre
Vue React
Structure de l’app
9
Architecture unidirectionnelle pour centraliser la gestion des états et ne pas avoir d’effets de bord.
Exemple avec Redux :
Comment tester mon app?
10
Aujourd’hui avec Angular 1 : beaucoup de tests sont trop complexes, en particulier à cause d’un
usage trop intensif des contrôleurs.
Recommandations :
• Utiliser des composants testés unitairement
• Tester l’app complète avec des tests d’intégration
Derniers gotchas
11
• Attention avant d’utiliser une lib
• La qualité des libs sur npm est très variable, bien vérifier le code source et les tests
• En es6, beaucoup de choses ne nécessitent plus de libs comme lodash ou jQuery
• imports/exports es6, connaître les deux versions, nommé et par défaut :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/export
Merci!
XX mois XXXX Titre mission - Titre présentation 12
A vos questions!

Contenu connexe

Tendances

Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
SOAT
 

Tendances (19)

04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2ASP.NET MVC 5 et Web API 2
ASP.NET MVC 5 et Web API 2
 
Maven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieuxMaven c'est bien, SBT c'est mieux
Maven c'est bien, SBT c'est mieux
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Comparatif des frameworks js mv
Comparatif des frameworks js mvComparatif des frameworks js mv
Comparatif des frameworks js mv
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4
 
Etude rapide sur les frameworks Front-end (AngularJS vs *JS)
Etude rapide sur les frameworks Front-end (AngularJS vs *JS)Etude rapide sur les frameworks Front-end (AngularJS vs *JS)
Etude rapide sur les frameworks Front-end (AngularJS vs *JS)
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
MS365 Developer Bootcamp 2020 à Montréal - Trucs & Astuces SharePoint Framework
MS365 Developer Bootcamp 2020 à Montréal - Trucs & Astuces SharePoint FrameworkMS365 Developer Bootcamp 2020 à Montréal - Trucs & Astuces SharePoint Framework
MS365 Developer Bootcamp 2020 à Montréal - Trucs & Astuces SharePoint Framework
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
[Agile Testing Day] Tests de charge
[Agile Testing Day] Tests de charge [Agile Testing Day] Tests de charge
[Agile Testing Day] Tests de charge
 

En vedette

Matteo Lussu Fin.CV (1) (1)
Matteo Lussu Fin.CV (1) (1)Matteo Lussu Fin.CV (1) (1)
Matteo Lussu Fin.CV (1) (1)
matteo lussu
 
PT.COTETAMA INSPINDO CARYA_CP
PT.COTETAMA INSPINDO CARYA_CPPT.COTETAMA INSPINDO CARYA_CP
PT.COTETAMA INSPINDO CARYA_CP
Mutia Ayu Annisa
 
FirelightProjectExperience
FirelightProjectExperienceFirelightProjectExperience
FirelightProjectExperience
Tabitha Steager
 

En vedette (16)

Matteo Lussu Fin.CV (1) (1)
Matteo Lussu Fin.CV (1) (1)Matteo Lussu Fin.CV (1) (1)
Matteo Lussu Fin.CV (1) (1)
 
Xe đạp thể thao có khóa chống trộm
Xe đạp thể thao có khóa chống trộmXe đạp thể thao có khóa chống trộm
Xe đạp thể thao có khóa chống trộm
 
56670309 g3302
56670309 g330256670309 g3302
56670309 g3302
 
My daily routine diego
My daily  routine diegoMy daily  routine diego
My daily routine diego
 
final paper
final paperfinal paper
final paper
 
VIRA catalog
VIRA catalogVIRA catalog
VIRA catalog
 
Video production dubai
Video production dubaiVideo production dubai
Video production dubai
 
Ib0010 international financial management
Ib0010 international financial managementIb0010 international financial management
Ib0010 international financial management
 
PT.COTETAMA INSPINDO CARYA_CP
PT.COTETAMA INSPINDO CARYA_CPPT.COTETAMA INSPINDO CARYA_CP
PT.COTETAMA INSPINDO CARYA_CP
 
Multivibrator bistabil
Multivibrator bistabilMultivibrator bistabil
Multivibrator bistabil
 
Mb0052 strategic management and business policy
Mb0052 strategic management and business policyMb0052 strategic management and business policy
Mb0052 strategic management and business policy
 
Trabajo de etica de la diversida
Trabajo de etica de la diversidaTrabajo de etica de la diversida
Trabajo de etica de la diversida
 
FirelightProjectExperience
FirelightProjectExperienceFirelightProjectExperience
FirelightProjectExperience
 
Mf0016 treasury management
Mf0016 treasury managementMf0016 treasury management
Mf0016 treasury management
 
paper
paperpaper
paper
 
Servicios Logísticos Gala Capilla, S.L.
Servicios Logísticos Gala Capilla, S.L.Servicios Logísticos Gala Capilla, S.L.
Servicios Logísticos Gala Capilla, S.L.
 

Similaire à Faire une app en JS moderne

Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
inesrdissi60
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
SliimAmiri
 

Similaire à Faire une app en JS moderne (20)

Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
 
Angular 11
Angular 11Angular 11
Angular 11
 
Maven
MavenMaven
Maven
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Universitélang scala tools
Universitélang scala toolsUniversitélang scala tools
Universitélang scala tools
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modules
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
vNext
vNextvNext
vNext
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
Afterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et DockerAfterworks @Nouméa - DevOps, approche par container et Docker
Afterworks @Nouméa - DevOps, approche par container et Docker
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
365 saturday - Développer un plugin XrmToolBox
365 saturday - Développer un plugin XrmToolBox365 saturday - Développer un plugin XrmToolBox
365 saturday - Développer un plugin XrmToolBox
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 

Faire une app en JS moderne

  • 1. Créer une app en JavaScript moderne 3 octobre 2016
  • 2. Un environnement hostile 2 Conflits de libs Packaging des assets Difficultés à tester Les imports/exports ES6 Des frameworks à l’infini Qualité des modules npm variable
  • 4. La toolchain : packager un projet avec webpack 4
  • 5. Les types de projets 5 • Vit dans son docker • Pas de risque de conflit avec des parties externes App standalone • Intégrée à une autre interface • Si une lib est globale, il ne faut pas l’inclure dans le bundle mais utiliser la version du SI • Attention aux conflits sur le CSS, utiliser du CSS local ou préfixé App intégrée • Importé par des applications • Ne doit pas inclure ses propres dépendances dans le bundle • Attention au CSS/SASS: @import ‘bootstrap’ ajoute tout bootstrap au bundle, c’est à éviter Bibliothèque
  • 6. Systematic 6 Webpack s’est imposé comme outil de build, mais : • La configuration est complexe • D’autres problèmes se présentent : • Traductions • Settings • Linting Systematic contient une config de webpack et des solutions pour ces problèmes tout en permettant d’ajouter des options de builds spécifiques au framework utilisé. Avantages : • Possibilité de démarrer un projet sans maîtriser Webpack • Beaucoup de choix sont déjà faits • Pas de boilerplate, mais configurable Présentation sur systematic : https://docs.google.com/presentation/d/1miOCBqnYpFoydrwCeygD9jhXtk1sIgE3iRgD2uLOy30 Repo github: https://github.com/Polyconseil/systematic
  • 8. Quel framework/lib? 8 • Véritable framework complet • Grosse communauté • Complexe, difficultés pour faire des composants • Non recommandé pour des nouveaux projets • Sorti en septembre 2016 • Composant faisables simplement • Injection de dépendance • Utilise Typescript (outillage vs overhead) • Complexité assez élevée : composants, directives, services, provider Angular Angular 2 • Juste une lib, nécessite vite des plugins • Composants • Templates avec attributs spéciaux, comme Angular • Bonne communauté • Simple et facile • Juste une lib, nécessite vite des plugins • Composants • Templates en JSX, directement dans le JS • Orientation programmation fonctionnelle • Grosse communauté • Relativement facile à apprendre Vue React
  • 9. Structure de l’app 9 Architecture unidirectionnelle pour centraliser la gestion des états et ne pas avoir d’effets de bord. Exemple avec Redux :
  • 10. Comment tester mon app? 10 Aujourd’hui avec Angular 1 : beaucoup de tests sont trop complexes, en particulier à cause d’un usage trop intensif des contrôleurs. Recommandations : • Utiliser des composants testés unitairement • Tester l’app complète avec des tests d’intégration
  • 11. Derniers gotchas 11 • Attention avant d’utiliser une lib • La qualité des libs sur npm est très variable, bien vérifier le code source et les tests • En es6, beaucoup de choses ne nécessitent plus de libs comme lodash ou jQuery • imports/exports es6, connaître les deux versions, nommé et par défaut : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/export
  • 12. Merci! XX mois XXXX Titre mission - Titre présentation 12 A vos questions!