{"id":125,"date":"2014-07-16T22:47:10","date_gmt":"2014-07-16T20:47:10","guid":{"rendered":"http:\/\/blog.thecodecampus.de\/?p=125"},"modified":"2025-04-17T11:45:22","modified_gmt":"2025-04-17T09:45:22","slug":"migration-von-flex-zu-angularjs","status":"publish","type":"post","link":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/","title":{"rendered":"Migration von Flex zu AngularJS"},"content":{"rendered":"<p>Aus der Perspektive eines Entwicklers, der das Vergn\u00fcgen hat mit AngularJS Anwendungen zu entwickeln, wirkt Flex wie eine Technologie aus der Steinzeit; flash basiert, uah. Doch noch vor ein paar Jahren waren HTML, CSS und JavaScript noch nicht soweit um damit in vertretbarem Aufwand Business-Anwendungen zu entwickeln. Was blieb also als Alternative zu nativen Rich-Clients? Richtig: Flex. Features wie Data-Bindin, deklarative UI und Model-View-Controller sind aus AngularJS heute bestens bekannt, waren gerade im JavaScipt Umfeld fr\u00fcher jedoch nicht anzutreffen. Kurz gesagt: Flex hatte zu seiner Zeit eine Menge zu bieten und durch den hohen Verbreitungsgrad des Flash-Players war es als Framework f\u00fcr Business-Anwendungen eine gute Wahl.<\/p>\n<p>Doch die Zeiten haben sich ge\u00e4ndert. Der Flash-Player verliert durch die Verbreitung mobiler Endger\u00e4te und durch das st\u00e4ndige Bekanntwerden von Sicherheitsl\u00fccken immer weiter an Bedeutung. Die standardisierten und offenen Web-Technologien sowie die Browser haben sich rasant weiter entwickelt. Auch wenn im Business-Bereich der Lebenszyklus einer Anwendung oft 5 Jahre und mehr betr\u00e4gt, so ist es doch an der Zeit f\u00fcr die n\u00e4chste Generation vorbereitet zu sein.<\/p>\n<p>Bei einer Flex-Anwendung hat man bereits eine \u00e4hnliche Architektur wie bei einer modernen Anwendung mit AngularJS. Man hat einen Server, der das Frontend ausliefert, das danach komplett im Client l\u00e4uft. Der Server ist dann nur noch daf\u00fcr zust\u00e4ndig Daten zu liefert und entgegen zu nehmen, z.B. per REST Schnittstelle. Durch die saubere Trennung von Front- und Backend ist es meist deutlich einfacher das Frontend auf eine neue Technologie zu portieren als es Frameworks, die das Frontend auf dem Server berechnen, wie beispielsweise JSF, m\u00f6glich w\u00e4re. Trotzdem ist eine vollst\u00e4ndige Portierung h\u00e4ufig sehr aufw\u00e4ndig und damit zu teuer. Was bleibt um in den Genuss neuer Technologien und damit neuer M\u00f6glichkeiten zu kommen ist eine teilweise bzw. schrittweise Portierung.<\/p>\n<p>Eine solche Portierung haben wir bei <a href=\"https:\/\/www.w11k.com\" target=\"_blank\" rel=\"noopener noreferrer\">WeigleWilczek<\/a> letztes Jahr durchgef\u00fchrt. Im Zuge dessen brauchten wir eine M\u00f6glichkeit die alte Flex-Anwendung in die neue AngularJS-Anwendung einzubetten um Teile der Flex-Anwendung wieder- bzw. weiter verwenden zu k\u00f6nnen. Die daraus entstandene Komponente haben wir als AngularJS Modul <a href=\"https:\/\/github.com\/w11k\/w11k-flash\" target=\"_blank\" rel=\"noopener noreferrer\">w11k-flash<\/a> bei GitHub als OpenSource ver\u00f6ffentlicht.<\/p>\n<h2>Kommunikation JavaScript und Flash\/Flex<\/h2>\n<p>Ein in eine Website eingebundenes Flash\/Flex kann mit der Website bidirektional kommunizieren. Vom Flex aus k\u00f6nnen globale JavaScript Funktionen aufgerufen werden (Funktionen am window Objekt). Ebenso k\u00f6nnen von JavaScript aus Funktionen in der Flex-Anwendung aufgerufen werden. Daf\u00fcr m\u00fcssen diese aber zun\u00e4chst registriert werden.<br \/>\nDer Einstiegspunkt f\u00fcr diese Kommunikation innerhalb der Flex-Anwendung ist das Objekt <code>ExternalInterface<\/code>. \u00dcber <code>ExternalInterface.addCallback(name, func)<\/code> k\u00f6nnen Funktionen f\u00fcr JavaScript bekannt gemacht werden. \u00dcber <code>ExternalInterface.call(name, parameter)<\/code> werden Funktionen im JavaScript aufgerufen.<br \/>\nIm JavaScript Code kann man an dem DOM-Element des Flashs die registrierten Funktionen der Flex-Anwendung direkt aufrufen.<\/p>\n<h2>HTML Grundger\u00fcst<\/h2>\n<p>Im Prinzip haben wir eine neue AngularJS-Anwendung entwickelt, die an noch nicht protierten Stellen ein Flash anzeigt. Dieses Flash ist eine neue Flex-Anwendung, die die Inhalte der alten Flex-Anwendung verwendet. Die neue Flex-Anwendung zeigt dabei aber nur Inhalt und keine Navigation an. Die Navigation findet \u00fcber die AngularJS-Anwendung statt und die neue Flex-Anwendung wird von AngularJS informiert welcher Inhalt angezeigt werden soll. Das Umschalten der Inhalte innerhalb der Flex-Anwendung funktioniert wie gewohnt \u00fcber States, nur dass diese eben von au\u00dfen aktiviert werden. So ist es m\u00f6glich zun\u00e4chst die neue Grundstruktur anzulegen und dann schrittweise die Inhalte zu portieren.<\/p>\n<p><a href=\"https:\/\/www.thecodecampus.de\/schulungen\/angular\" style=\"display: inline-block;\">\n<picture><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_big.png\" media=\"(min-width: 1024px)\"><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_medium.png\" media=\"(min-width: 600px)\"><img decoding=\"async\" src=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_small.png\" alt=\"Angular Schulungen\" class=\"alignnone size-full wp-image-38\">\n<\/picture>\n<\/a><\/p>\n<h2><a href=\"https:\/\/github.com\/w11k\/w11k-flash\" target=\"_blank\" rel=\"noopener noreferrer\">w11k-flash<\/a><\/h2>\n<p>Beim Einbetten, Ein- und Ausblenden des Flashs, Umschalten der Inhalte usw. ergeben sich einige Schwierigkeiten.<\/p>\n<ul>\n<li>Das Einbetten kann man recht leicht \u00fcber die Bibliothek swfobject erledigen. Beim Ein- und Ausblenden des Flashs mit ng-show wird jedoch die CSS Eigenschaft <code>display<\/code> verwendet. Dies f\u00fchrt dazu, dass beim wieder Anzeigen das Flash bzw. die Flex-Anwendung neu initialisiert wird, was in den allermeisten F\u00e4llen nicht erw\u00fcnscht sein d\u00fcrfte.<\/li>\n<li>Beim Einbinden der Flex-Anwendung kann es zu Timing-Problemen kommen. Vom JavaScript Code aus d\u00fcrfen erst Funktionen im Flex aufgerufen werden, wenn diese bereits am ExternalInterface registriert wurden. Ansonsten wird eine Exception geworfen. Der JavaScript Code bzw. unsere AngularJS-Anwendung weis aber nichts dar\u00fcber wann die Flex-Anwendung die Funktionen registriert hat, da bereits das Laden der Flex-Anwendung asynchron geschieht und diese dann erst noch gestartet und initialisiert werden muss.<\/li>\n<li>Da vom Flex-Code aus nur globale JavaScript Funktionen aufgerufen werden k\u00f6nnen, geht der AngularJS Kontext verloren. Die Funktionen m\u00fcssen am window Objekt registriert sein und werden au\u00dferhalb des digest-Lifecycle aufgerufen.<\/li>\n<\/ul>\n<p>Um dieser Probleme Herr zu werden, haben wir die AngularJS Direktive <code>w11k-flash<\/code> und die ActionScript Klasse <code>AngularJSAdapter<\/code> entwickelt. Das folgende Sequenz Diagramm zeigt das Zusammenspiel der Direktive, des AngularJS Codes und der Flex Anwendung.<\/p>\n<p><a href=\"https:\/\/blog.thecodecampus.de\/wp-content\/uploads\/2014\/07\/Sequence-Diagramm2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/blog.thecodecampus.de\/wp-content\/uploads\/2014\/07\/Sequence-Diagramm2.png\" alt=\"w11k-flash Sequenz Diagramm\" width=\"3146\" height=\"1492\" \/><\/a><\/p>\n<p>Ein Beispiel und eine genaue Anleitung zur Verwendung samt einiger Code-Beispiele sind auf der <a href=\"https:\/\/w11k.github.io\/w11k-flash\/\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Page von w11k-flash<\/a> zu finden. Anmerkungen, Kritik und Verbesserungsvorschl\u00e4ge sind immer gerne willkommen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aus der Perspektive eines Entwicklers, der das Vergn\u00fcgen hat mit AngularJS Anwendungen zu entwickeln, wirkt Flex wie eine Technologie aus der Steinzeit; flash basiert, uah. Doch noch vor ein paar Jahren waren HTML, CSS und JavaScript noch nicht soweit um damit in vertretbarem Aufwand Business-Anwendungen zu entwickeln. Was blieb also als Alternative zu nativen Rich-Clients? [&#8230;]<br \/><a class=\"meta-big\" href=\"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/\"> READ MORE<\/a><\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[34,62,24,25,85,61,26,7,33],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-angularjs","tag-actionscript","tag-angularjs","tag-flash","tag-flex","tag-german","tag-javascript","tag-migration","tag-modules","tag-w11k-flash"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migration von Flex zu AngularJS - Web Development Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migration von Flex zu AngularJS - Web Development Blog\" \/>\n<meta property=\"og:description\" content=\"Aus der Perspektive eines Entwicklers, der das Vergn\u00fcgen hat mit AngularJS Anwendungen zu entwickeln, wirkt Flex wie eine Technologie aus der Steinzeit; flash basiert, uah. Doch noch vor ein paar Jahren waren HTML, CSS und JavaScript noch nicht soweit um damit in vertretbarem Aufwand Business-Anwendungen zu entwickeln. Was blieb also als Alternative zu nativen Rich-Clients? [...] READ MORE\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Development tips and tricks - theCodeCampus Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-16T20:47:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-17T09:45:22+00:00\" \/>\n<meta name=\"author\" content=\"theCodeCampus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"theCodeCampus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\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:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/\"},\"author\":{\"name\":\"theCodeCampus\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/person\\\/276bbda2f8da73154f22fb652201cfbc\"},\"headline\":\"Migration von Flex zu AngularJS\",\"datePublished\":\"2014-07-16T20:47:10+00:00\",\"dateModified\":\"2025-04-17T09:45:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/\"},\"wordCount\":805,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/schulungen-tcc_frieder_WP_small.png\",\"keywords\":[\"ActionScript\",\"AngularJS\",\"Flash\",\"Flex\",\"German\",\"JavaScript\",\"Migration\",\"Modules\",\"w11k-flash\"],\"articleSection\":[\"AngularJS 1\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/\",\"name\":\"Migration von Flex zu AngularJS - Web Development Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/schulungen-tcc_frieder_WP_small.png\",\"datePublished\":\"2014-07-16T20:47:10+00:00\",\"dateModified\":\"2025-04-17T09:45:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/schulungen-tcc_frieder_WP_small.png\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/schulungen-tcc_frieder_WP_small.png\",\"width\":720,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migration-von-flex-zu-angularjs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migration von Flex zu AngularJS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\",\"name\":\"Web Development tips and tricks - theCodeCampus Blog\",\"description\":\"Tips, tricks, and experiences about developing web and mobile applications with Angular, TypeScript, and Testing.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\",\"name\":\"theCodeCampus\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch.jpg\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch.jpg\",\"width\":156,\"height\":156,\"caption\":\"theCodeCampus\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/person\\\/276bbda2f8da73154f22fb652201cfbc\",\"name\":\"theCodeCampus\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg\",\"caption\":\"theCodeCampus\"},\"description\":\"Our knowledge is not simply gained through reading - it is trained, tested and constantly being expanded. Because first and foremost, we are all developers at W11K. The know-how that we acquire here as developers, consultants and information architects flows immediately into our training courses and articles for theCodeCampus.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/showcase\\\/thecodecampus\\\/\"],\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migration von Flex zu AngularJS - Web Development Blog","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:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/","og_locale":"en_US","og_type":"article","og_title":"Migration von Flex zu AngularJS - Web Development Blog","og_description":"Aus der Perspektive eines Entwicklers, der das Vergn\u00fcgen hat mit AngularJS Anwendungen zu entwickeln, wirkt Flex wie eine Technologie aus der Steinzeit; flash basiert, uah. Doch noch vor ein paar Jahren waren HTML, CSS und JavaScript noch nicht soweit um damit in vertretbarem Aufwand Business-Anwendungen zu entwickeln. Was blieb also als Alternative zu nativen Rich-Clients? [...] READ MORE","og_url":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/","og_site_name":"Web Development tips and tricks - theCodeCampus Blog","article_published_time":"2014-07-16T20:47:10+00:00","article_modified_time":"2025-04-17T09:45:22+00:00","author":"theCodeCampus","twitter_card":"summary_large_image","twitter_misc":{"Written by":"theCodeCampus","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#article","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/"},"author":{"name":"theCodeCampus","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/person\/276bbda2f8da73154f22fb652201cfbc"},"headline":"Migration von Flex zu AngularJS","datePublished":"2014-07-16T20:47:10+00:00","dateModified":"2025-04-17T09:45:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/"},"wordCount":805,"commentCount":1,"publisher":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_small.png","keywords":["ActionScript","AngularJS","Flash","Flex","German","JavaScript","Migration","Modules","w11k-flash"],"articleSection":["AngularJS 1"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/","url":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/","name":"Migration von Flex zu AngularJS - Web Development Blog","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#primaryimage"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_small.png","datePublished":"2014-07-16T20:47:10+00:00","dateModified":"2025-04-17T09:45:22+00:00","breadcrumb":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#primaryimage","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_small.png","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_frieder_WP_small.png","width":720,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.thecodecampus.de\/blog\/migration-von-flex-zu-angularjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thecodecampus.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Migration von Flex zu AngularJS"}]},{"@type":"WebSite","@id":"https:\/\/www.thecodecampus.de\/blog\/#website","url":"https:\/\/www.thecodecampus.de\/blog\/","name":"Web Development tips and tricks - theCodeCampus Blog","description":"Tips, tricks, and experiences about developing web and mobile applications with Angular, TypeScript, and Testing.","publisher":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thecodecampus.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.thecodecampus.de\/blog\/#organization","name":"theCodeCampus","url":"https:\/\/www.thecodecampus.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch.jpg","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch.jpg","width":156,"height":156,"caption":"theCodeCampus"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/person\/276bbda2f8da73154f22fb652201cfbc","name":"theCodeCampus","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch-96x96.jpg","caption":"theCodeCampus"},"description":"Our knowledge is not simply gained through reading - it is trained, tested and constantly being expanded. Because first and foremost, we are all developers at W11K. The know-how that we acquire here as developers, consultants and information architects flows immediately into our training courses and articles for theCodeCampus.","sameAs":["https:\/\/www.linkedin.com\/showcase\/thecodecampus\/"],"url":"https:\/\/www.thecodecampus.de\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":30,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":3370,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions\/3370"}],"wp:attachment":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}