{"id":817,"date":"2019-10-29T15:09:00","date_gmt":"2019-10-29T14:09:00","guid":{"rendered":"https:\/\/affluences.com\/blog\/?p=817"},"modified":"2022-06-24T17:43:25","modified_gmt":"2022-06-24T15:43:25","slug":"migration-angular-js-angular","status":"publish","type":"post","link":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/","title":{"rendered":"Migration angular.js vers angular : le retour d&rsquo;exp\u00e9rience de notre \u00e9quipe technique"},"content":{"rendered":"\n<p id=\"viewer-foo\">Les besoins \u00e9voluent et Affluences aussi : <strong>migrer d\u2019Angular.js vers Angular<\/strong>, c\u2019est le sujet du jour.<\/p>\n\n\n\n<p id=\"viewer-ek2nb\">Affluences propose deux applications web : <a href=\"https:\/\/www.pro.affluences.com\/prevoir-et-piloter\" target=\"_blank\" rel=\"noreferrer noopener\"><u>un portail d\u2019administration<\/u><\/a> \u00e0 destination des \u00e9tablissements partenaires et <a href=\"https:\/\/affluences.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><u>un site destin\u00e9 au public<\/u><\/a>.<\/p>\n\n\n\n<p id=\"viewer-3ekob\">Ces deux applications ont commenc\u00e9 \u00e0 \u00eatre d\u00e9velopp\u00e9es en 2015. Nous avions fait le choix d\u2019utiliser <strong>Node.Js pour le backend et l\u2019API<\/strong>. C\u00f4t\u00e9 frontend, nous avions d\u00e9cid\u00e9 d\u2019utiliser <strong>Angular.Js<\/strong>. Ces deux outils nous semblaient \u00eatre les plus adapt\u00e9s \u00e0 nos besoins mais \u00e9galement en ad\u00e9quation avec nos affinit\u00e9s technologiques.<\/p>\n\n\n\n<p id=\"viewer-6mp46\">Mais nos utilisateurs se faisaient de plus en plus nombreux et nous avons eu besoin d\u2019outils plus robustes. Ils devaient nous permettre de proposer plus de nouvelles fonctionnalit\u00e9s tout en garantissant la stabilit\u00e9 de nos applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"viewer-qve8\">C\u00f4t\u00e9 Backend<\/h2>\n\n\n\n<p id=\"viewer-ev654\">C\u00f4t\u00e9 backend et API, nous avons <strong>traduit notre base de code Javascript en Typescript<\/strong> pour profiter des am\u00e9liorations apport\u00e9es par ce langage (compilation, typage fort, etc). Ce changement \u00e9tant invisible d\u2019un point de vue utilisateur. Nous avons pu l\u2019op\u00e9rer petit \u00e0 petit en parall\u00e8le de la mise en production de nouvelles fonctionnalit\u00e9s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"viewer-52siu\">C\u00f4t\u00e9 frontend<\/h2>\n\n\n\n<p id=\"viewer-71jfq\">C\u00f4t\u00e9 frontend, nous avions d\u00e9cid\u00e9 de <strong>migrer d\u2019Angular.js vers Angular<\/strong>, son \u00e9volution majeure. Contrairement aux apparences, la migration vers Angular depuis Angular.Js n\u2019est pas naturelle. Elle implique plusieurs changements structurels comme le passage \u00e0 des composants web. Cela a n\u00e9cessit\u00e9 <strong>l\u2019impl\u00e9mentation d\u2019outils suppl\u00e9mentaires comme NgRx<\/strong> par exemple.<\/p>\n\n\n\n<p id=\"viewer-65hfq\">Nous avons donc \u00e9labor\u00e9 un plan de migration pour chacune de nos applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"viewer-d9ko1\">Migrer d\u2019Angular.js vers Angular<\/h2>\n\n\n\n<p id=\"viewer-fo118\">Nous avons d\u2019abord commenc\u00e9 par le <strong>site de r\u00e9servation<\/strong>. Comme il repr\u00e9sente peu de pages par rapport au portail d\u2019administration, nous avons d\u00e9cid\u00e9 de r\u00e9\u00e9crire compl\u00e8tement la base de code.<\/p>\n\n\n\n<p id=\"viewer-9ltpj\">Hormis le fonctionnement g\u00e9n\u00e9ral, l\u2019un des points sur lequel nous avons port\u00e9 toute notre attention concernait la <strong>compatibilit\u00e9 des URL entre les deux versions<\/strong>. En effet, Angular propose son propre routeur et nous avons d\u00fb assurer la <strong>redirection des anciens formats d\u2019URL vers le nouveau<\/strong>.<\/p>\n\n\n\n<p id=\"viewer-drc7c\">Cette probl\u00e9matique est essentielle puisque le service se base sur la v\u00e9rification de l\u2019adresse mail de l\u2019utilisateur \u00e0 travers un lien qui lui est envoy\u00e9 lorsqu\u2019il effectue sa r\u00e9servation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"504\" src=\"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1-1024x504.jpeg\" alt=\"\" class=\"wp-image-818\" srcset=\"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1-1024x504.jpeg 1024w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1-300x148.jpeg 300w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1-768x378.jpeg 768w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1-1536x757.jpeg 1536w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/1.jpeg 1882w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Avant : Angular.js<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1906\" height=\"935\" src=\"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2-1024x502.png\" alt=\"\" class=\"wp-image-819\" srcset=\"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2-1024x502.png 1024w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2-300x147.png 300w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2-768x377.png 768w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2-1536x753.png 1536w, https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/2.png 1906w\" sizes=\"auto, (max-width: 1906px) 100vw, 1906px\" \/><figcaption>Apr\u00e8s : Angular<\/figcaption><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" id=\"viewer-2g4np\"><p><em>Le passage vers Angular a \u00e9galement \u00e9t\u00e9 l\u2019occasion de r\u00e9actualiser le design g\u00e9n\u00e9ral.<\/em><\/p><\/blockquote>\n\n\n\n<p id=\"viewer-f99ri\">Forts de ce retour d\u2019exp\u00e9rience, nous avons \u00e9labor\u00e9 un plan diff\u00e9rent pour le <strong>portail d\u2019administration<\/strong>. A cause de sa complexit\u00e9 plus importante (nombre de pages et nombre d\u2019interactions possible), nous avons d\u00e9cid\u00e9 de <a href=\"https:\/\/angular.io\/guide\/upgrade#bootstrapping-hybrid-applications\" target=\"_blank\" rel=\"noreferrer noopener\"><u>faire cohabiter Angular.Js et Angular<\/u><\/a>.<\/p>\n\n\n\n<p id=\"viewer-54ia1\">Chaque module a \u00e9t\u00e9 traduit petit \u00e0 petit de l\u2019ancien framework vers le nouveau. Nous avons dans un premier temps <strong>re-d\u00e9velopp\u00e9 les modules communs<\/strong> (header, footer, \u00e9l\u00e9ments de navigation, \u2026) pour que la passage d\u2019une version \u00e0 l\u2019autre soit le plus transparent possible pour l\u2019utilisateur.<\/p>\n\n\n\n<p id=\"viewer-e37m4\">En s\u2019appuyant sur ces composants, nous traduisons maintenant chaque module d\u00e8s qu\u2019une nouvelle fonctionnalit\u00e9 doit y \u00eatre ajout\u00e9e.<\/p>\n\n\n\n<p id=\"viewer-fna02\">Chacune de ces m\u00e9thodes a ses avantages. La traduction compl\u00e8te assure une <strong>migration d\u00e9finitive<\/strong> mais peut s\u2019av\u00e9rer complexe dans le cadre de projets avec beaucoup de pages.<\/p>\n\n\n\n<p id=\"viewer-3pves\">A l\u2019inverse, la cohabitation des deux frameworks peut quant \u00e0 elle \u00eatre utile pour assurer une <strong>migration progressive<\/strong> de gros projets mais ne doit pas perdurer dans le temps sous peine de devoir maintenir deux fois plus de code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les besoins \u00e9voluent et Affluences aussi : migrer d\u2019Angular.js vers Angular, c\u2019est le sujet du jour. Affluences propose deux applications web : un portail d\u2019administration \u00e0 destination des \u00e9tablissements partenaires et un site destin\u00e9 au public. Ces deux applications ont commenc\u00e9 \u00e0 \u00eatre d\u00e9velopp\u00e9es en 2015. Nous avions fait le choix d\u2019utiliser Node.Js pour le [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":820,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[353],"tags":[],"class_list":["post-817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-les-dessous-de-la-tech"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend<\/title>\n<meta name=\"description\" content=\"Comment faire pour migrer d&#039;angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend\" \/>\n<meta property=\"og:description\" content=\"Comment faire pour migrer d&#039;angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences\" \/>\n<meta property=\"og:url\" content=\"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/\" \/>\n<meta property=\"og:site_name\" content=\"Le blog Affluences\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Affluencesapp\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-29T14:09:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-24T15:43:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Communication\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Affluences_App\" \/>\n<meta name=\"twitter:site\" content=\"@Affluences_App\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Communication\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/\"},\"author\":{\"name\":\"Communication\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#\\\/schema\\\/person\\\/4791a989685bb628373b2af9f99550f3\"},\"headline\":\"Migration angular.js vers angular : le retour d&rsquo;exp\u00e9rience de notre \u00e9quipe technique\",\"datePublished\":\"2019-10-29T14:09:00+00:00\",\"dateModified\":\"2022-06-24T15:43:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/\"},\"wordCount\":617,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/affluences.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/migration-angular-js-angular.jpg\",\"articleSection\":[\"Dessous de la tech\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/\",\"url\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/\",\"name\":\"Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/affluences.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/migration-angular-js-angular.jpg\",\"datePublished\":\"2019-10-29T14:09:00+00:00\",\"dateModified\":\"2022-06-24T15:43:25+00:00\",\"description\":\"Comment faire pour migrer d'angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#primaryimage\",\"url\":\"https:\\\/\\\/affluences.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/migration-angular-js-angular.jpg\",\"contentUrl\":\"https:\\\/\\\/affluences.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/migration-angular-js-angular.jpg\",\"width\":1920,\"height\":1280},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/migration-angular-js-angular\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/affluences.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migration angular.js vers angular : le retour d&rsquo;exp\u00e9rience de notre \u00e9quipe technique\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/affluences.com\\\/blog\\\/\",\"name\":\"Le blog d Affluences\",\"description\":\"Tous nos conseils et astuces\",\"publisher\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/affluences.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#organization\",\"name\":\"Affluences\",\"url\":\"https:\\\/\\\/affluences.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.affluences.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/logo_affluences-e1531737183907.png\",\"contentUrl\":\"https:\\\/\\\/blog.affluences.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/logo_affluences-e1531737183907.png\",\"width\":512,\"height\":512,\"caption\":\"Affluences\"},\"image\":{\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Affluencesapp\",\"https:\\\/\\\/x.com\\\/Affluences_App\",\"https:\\\/\\\/www.instagram.com\\\/affluences_app\\\/?hl=fr\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/affluences-app\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCwPTgo4QaCais3IytxOjh0w\",\"https:\\\/\\\/fr.wikipedia.org\\\/wiki\\\/Affluences\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/affluences.com\\\/blog\\\/#\\\/schema\\\/person\\\/4791a989685bb628373b2af9f99550f3\",\"name\":\"Communication\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g\",\"caption\":\"Communication\"},\"url\":\"https:\\\/\\\/affluences.com\\\/blog\\\/author\\\/melisande-vialard\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend","description":"Comment faire pour migrer d'angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend","og_description":"Comment faire pour migrer d'angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences","og_url":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/","og_site_name":"Le blog Affluences","article_publisher":"https:\/\/www.facebook.com\/Affluencesapp","article_published_time":"2019-10-29T14:09:00+00:00","article_modified_time":"2022-06-24T15:43:25+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg","type":"image\/jpeg"}],"author":"Communication","twitter_card":"summary_large_image","twitter_creator":"@Affluences_App","twitter_site":"@Affluences_App","twitter_misc":{"\u00c9crit par":"Communication","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#article","isPartOf":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/"},"author":{"name":"Communication","@id":"https:\/\/affluences.com\/blog\/#\/schema\/person\/4791a989685bb628373b2af9f99550f3"},"headline":"Migration angular.js vers angular : le retour d&rsquo;exp\u00e9rience de notre \u00e9quipe technique","datePublished":"2019-10-29T14:09:00+00:00","dateModified":"2022-06-24T15:43:25+00:00","mainEntityOfPage":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/"},"wordCount":617,"commentCount":0,"publisher":{"@id":"https:\/\/affluences.com\/blog\/#organization"},"image":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#primaryimage"},"thumbnailUrl":"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg","articleSection":["Dessous de la tech"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/","url":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/","name":"Comment migrer d\u2019Angular.js vers Angular c\u00f4t\u00e9 Backend et Frontend","isPartOf":{"@id":"https:\/\/affluences.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#primaryimage"},"image":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#primaryimage"},"thumbnailUrl":"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg","datePublished":"2019-10-29T14:09:00+00:00","dateModified":"2022-06-24T15:43:25+00:00","description":"Comment faire pour migrer d'angular.js \u00e0 angular ? \ud83d\udda5\ufe0f Notre \u00e9quipe technique vous partage ses conseils suite aux \u00e9volutions dans les solutions Affluences","breadcrumb":{"@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/affluences.com\/blog\/migration-angular-js-angular\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#primaryimage","url":"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg","contentUrl":"https:\/\/affluences.com\/blog\/wp-content\/uploads\/2022\/06\/migration-angular-js-angular.jpg","width":1920,"height":1280},{"@type":"BreadcrumbList","@id":"https:\/\/affluences.com\/blog\/migration-angular-js-angular\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/affluences.com\/"},{"@type":"ListItem","position":2,"name":"Migration angular.js vers angular : le retour d&rsquo;exp\u00e9rience de notre \u00e9quipe technique"}]},{"@type":"WebSite","@id":"https:\/\/affluences.com\/blog\/#website","url":"https:\/\/affluences.com\/blog\/","name":"Le blog d Affluences","description":"Tous nos conseils et astuces","publisher":{"@id":"https:\/\/affluences.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/affluences.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/affluences.com\/blog\/#organization","name":"Affluences","url":"https:\/\/affluences.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/affluences.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/blog.affluences.com\/wp-content\/uploads\/2017\/08\/logo_affluences-e1531737183907.png","contentUrl":"https:\/\/blog.affluences.com\/wp-content\/uploads\/2017\/08\/logo_affluences-e1531737183907.png","width":512,"height":512,"caption":"Affluences"},"image":{"@id":"https:\/\/affluences.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Affluencesapp","https:\/\/x.com\/Affluences_App","https:\/\/www.instagram.com\/affluences_app\/?hl=fr","https:\/\/www.linkedin.com\/company\/affluences-app\/","https:\/\/www.youtube.com\/channel\/UCwPTgo4QaCais3IytxOjh0w","https:\/\/fr.wikipedia.org\/wiki\/Affluences"]},{"@type":"Person","@id":"https:\/\/affluences.com\/blog\/#\/schema\/person\/4791a989685bb628373b2af9f99550f3","name":"Communication","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4f0ca5379bda977b18043f3cdb63a882a87096c96317127eb6f83f033b2a5d2b?s=96&d=mm&r=g","caption":"Communication"},"url":"https:\/\/affluences.com\/blog\/author\/melisande-vialard\/"}]}},"_links":{"self":[{"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/posts\/817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/comments?post=817"}],"version-history":[{"count":2,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/posts\/817\/revisions"}],"predecessor-version":[{"id":838,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/posts\/817\/revisions\/838"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/media\/820"}],"wp:attachment":[{"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/media?parent=817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/categories?post=817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affluences.com\/blog\/wp-json\/wp\/v2\/tags?post=817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}