<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Script Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/script/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Wed, 19 Apr 2023 19:07:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Script Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/script/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Vue.js &#8211; Das progressive JavaScript Framework</title>
		<link>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/</link>
					<comments>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 10:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Aktiv]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Ecosystem]]></category>
		<category><![CDATA[Einarbeitung]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Ökosystem]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Vast]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1743</guid>

					<description><![CDATA[<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges Open Source JavaScript&#8211;Framework für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat es sich rasch zu einem der beliebtesten <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> für die Webentwicklung entwickelt. In diesem Beitrag geht es um die Hauptmerkmale von Vue.js und warum es für Entwickler in der Webentwicklung von Vorteil ist.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Vue.js</h3>



<ul class="wp-block-list">
<li>Leichtgewichtig und Modularität: Vue.js ist für seine geringe Größe bekannt, wobei die kompilierte und gzip-komprimierte Version gerade einmal 20 KB wiegt. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> ist in verschiedene Module unterteilt, sodass Entwickler nur diejenigen auswählen müssen, die sie für ihr Projekt benötigen, um den Overhead gering zu halten.</li>



<li>Progressive Anpassung: Vue.js ist als progressives <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> konzipiert, was bedeutet, dass man es schrittweise in bestehende Projekte implementieren kann. Es ermöglicht Entwicklern, bestehenden Anwendungen schrittweise Verbesserungen hinzuzufügen, ohne die gesamte Anwendung neu schreiben zu müssen.</li>



<li>Reaktive Datenbindung: Eine der Hauptstärken von Vue.js ist die reaktive Datenbindung. Dies bedeutet, dass die Übertragung aller Änderungen auf die Benutzeroberfläche automatisch stattfindet, ohne dass der Entwickler explizit eingreifen muss.</li>



<li>Single-File-Komponenten: Vue.js bietet eine einfache Möglichkeit, wiederverwendbare Komponenten zu erstellen, indem <a href="https://ceosbay.com/2022/12/29/erklaerung-html/">HTML</a>, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und <a href="https://ceosbay.com/2023/02/27/erklaerung-css/">CSS</a> via Kapselung in einer einzigen .vue-Datei zusammengefasst sind. Diese Tatsache vereinfacht die Strukturierung und Wartung von Projekten maßgeblich.</li>



<li>Declarative Rendering: Mit Vue.js können Entwickler deklarativ angeben, wie die Anwendung auf der Grundlage der zugrunde liegenden Daten rendert. Diese Herangehensweise verbessert die Lesbarkeit und Wartbarkeit des Codes, indem sie sich auf die Logik und das Verhalten der Anwendung konzentriert, anstatt auf die Implementierungsdetails.</li>



<li>Hervorragende Dokumentation und Community: Die offizielle Dokumentation von Vue.js ist umfassend und gut organisiert, was den Einstieg in das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> wesentlich erleichtert. Die Vue.js-Community ist aktiv und wächst stetig, was zu einer Vielzahl von Ressourcen, Plugins und Erweiterungen führt, die Entwicklern zur Verfügung stehen.</li>
</ul>



<h3 class="wp-block-heading">Warum Vue.js für Webentwickler von Vorteil ist</h3>



<ul class="wp-block-list">
<li>Einfache Einarbeitung: Im Vergleich zu anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular</a> oder <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, ist die Lernkurve relativ flach. Dies ermöglicht neuen Entwicklern einen schnellen Einstieg, während erfahrene Entwickler leicht von anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> umsteigen können.</li>



<li>Flexibilität und Skalierbarkeit: Aufgrund der modularen Architektur und progressiven Anpassung eignet sich Vue.js sowohl für kleine als auch für große Projekte. Entwickler können es sowohl für einfache Widgets als auch für komplexe Anwendungen verwenden. Man kann es problemlos in bestehende Projekte integrieren oder als Grundlage für neue Projekte verwenden.</li>



<li>Verbesserte Produktivität: Durch die Verwendung von Single-File-Komponenten und reaktiven Datenbindungen ermöglicht Vue.js Entwicklern, schneller und effizienter zu arbeiten. Weniger Zeit wird für die Aktualisierung des UI-Codes und die Synchronisierung von Daten aufgewendet, was zu einer höheren Produktivität führt.</li>



<li>Vast Ecosystem: Das Vue.js-Ökosystem umfasst eine breite Palette von Tools, Bibliotheken und Erweiterungen, die die Entwicklung von Anwendungen beschleunigen und vereinfachen. Beispiele hierfür sind das Vue CLI (Command Line Interface), Vuex für State Management und das Vue Router-Modul für die Navigation.</li>



<li>Aktive Entwicklung und Wartung: Die Weiterentwicklung und Wartung erfolgt stetig. Folglich kann man immer mit zeitgemäßen neuen Funktionen und Verbesserungen rechnen. Dies stellt sicher, dass das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> auf dem neuesten Stand der Webentwicklungstechniken bleibt und gleichzeitig sicher und stabil ist.</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Vue.js hat sich als vielseitiges und leistungsstarkes <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> etabliert, das Entwicklern ermöglicht, auf einfache Weise schnelle und skalierbare Webanwendungen zu erstellen. Mit seinen progressiven Anpassungsmöglichkeiten, reaktiven Datenbindungen und einem wachsenden Ökosystem ist es ein ausgezeichnetes Werkzeug für Webentwickler, unabhängig von ihrem Erfahrungsstand. Die einfache Einarbeitung und Flexibilität von Vue.js machen es zu einer attraktiven Wahl für Entwickler, die nach einer modernen Lösung für die Webentwicklung suchen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1743</post-id>	</item>
		<item>
		<title>HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/29/erklaerung-hateoas/</link>
					<comments>https://ceosbay.com/2023/03/29/erklaerung-hateoas/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 29 Mar 2023 20:49:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1055</guid>

					<description><![CDATA[<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der REST-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding im Rahmen seiner Dissertation bzw. bei der Definition von <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a> eingeführt hat. Im Wesentlichen bedeutet dies, dass ein Client in der Lage ist, den Zustand der Anwendung zu verändern und den Server zu navigieren, indem er Hypertext-Links folgt, anstatt explizit URLs anzugeben.</p>



<p>Es beschreibt unter anderem eines der wichtigsten <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Eigenschaften. Da der Architekturstil eine universelle Schnittstelle bieten soll, fordert HATEOAS, dass der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Client sich ausschließlich durch das Folgen von URIs (Uniform Resource Identifier) im Hypermedia-Format durch die Webanwendung bewegen kann. Wird dieses Prinzip umgesetzt, benötigt der Client abgesehen von einem grundsätzlichen Verständnis von Hypermedia. Keinerlei weitere Informationen, um mit der Anwendung bzw. dem Server zu kommunizieren.</p>



<p>Die Bereitstellung der einzelnen URIs erfolgt dabei beispielsweise in Form von href- und src-Attributen. Vorausgesetzt es handelt sich um <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Dokumente oder -Snippets. Auch durch <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>&#8211; bzw. <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Attribute/-Elemente, die der jeweilige Client automatisch erkennt.</p>



<p>Durch die Umsetzung des HATEOAS-Prinzips lässt sich die Schnittstelle eines <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Services jederzeit anpassen. Dies kann ein wichtiger Vorteil dieser Architektur gegenüber anderen Applikationsstrukturen sein. Vor allem im direkten Vergleich mit Anwendungen, die man auf Grundlage von SOAP (Simple Object Access Protocol) ausführt.</p>



<p>Das HATEOAS-Konzept ist wichtig, weil es die Flexibilität und Skalierbarkeit von RESTful APIs verbessert. Ohne HATEOAS müsste ein Client spezifische URLs und Endpunkte kennen, um eine Anwendung effektiv zu nutzen. Dies kann jedoch kritisch sein, da URLs sich in der Regel ändern können. Diese Tatsache kann jedoch eben auch zu Fehlern und fehlerhaften Anfragen führen.</p>



<p>Durch die Verwendung von Hypertext-Links wird ein Client in die Lage versetzt, den aktuellen Zustand der Anwendung zu verstehen und dynamisch zu navigieren. Wenn beispielsweise ein Client eine Anfrage an den Server sendet, um eine Liste von Benutzern abzurufen, könnte der Server eine Antwort zurückgeben, die Links zu den einzelnen Benutzerdetails enthält. Der Client kann dann den Link zu einem bestimmten Benutzer folgen, um weitere Informationen abzurufen.</p>



<p>Ein Beispiel ist eine Bestellungsverwaltung in einem Online-Shop. Wenn ein Kunde eine Bestellung aufgeben möchte, kann der Server eine Antwort zurückgeben. Die enthalten wiederum Links zu den verschiedenen Schritten des Bestellvorgangs. Um beispielsweise den Warenkorb anzuzeigen, die Versandadresse anzugeben, Zahlungsinformationen anzugeben, etc. Der Client kann dann den Link zum nächsten Schritt folgen, ohne spezifische URLs oder Endpunkte zu kennen.</p>



<p>HATEOAS ist jedoch nicht nur für die Navigation innerhalb einer Anwendung wichtig. Es ermöglicht auch eine einfache Integration mit anderen Anwendungen und Diensten. Wenn eine API beispielsweise HATEOAS-konform ist, kann man sie von anderen Anwendungen oder Diensten aus leichter nutzen, da sie den Zustand der Anwendung und die verfügbaren Aktionen verstehen können.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Insgesamt verbessert das HATEOAS-Konzept die Flexibilität und Skalierbarkeit von RESTful APIs, indem es Clients in die Lage versetzt, dynamisch zu navigieren und den aktuellen Zustand der Anwendung zu verstehen. Durch die Verwendung von Hypertext-Links werden Anwendungen leichter integrierbar und besser wartbar. Wenn man also eine RESTful API entwirft, sollte man in Betracht ziehen, HATEOAS zu verwenden, um die Nutzbarkeit und die Flexibilität der Anwendung zu optimieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/29/erklaerung-hateoas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1055</post-id>	</item>
		<item>
		<title>Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</title>
		<link>https://ceosbay.com/2023/03/21/erklaerung-angular/</link>
					<comments>https://ceosbay.com/2023/03/21/erklaerung-angular/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 18:57:09 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Databinding]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Eager]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[ES6]]></category>
		<category><![CDATA[First]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frequenz]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[Lade]]></category>
		<category><![CDATA[Ladetechnik]]></category>
		<category><![CDATA[Ladetechniken]]></category>
		<category><![CDATA[LTS]]></category>
		<category><![CDATA[Major]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Preloading]]></category>
		<category><![CDATA[Releae]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Statisch]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1210</guid>

					<description><![CDATA[<p>AngularJS, als Vorgängerversion von Angular, ist ein JavaScript Framework für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AngularJS, als Vorgängerversion von Angular, ist ein <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das erste geeignete <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für große Enterprise-Anwendungen. Durch Methoden wie Dependency Injection (Ein Entwurfsmuster, bei dem ein Objekt oder eine Funktion andere Objekte oder Funktionen empfängt, von denen es/sie abhängt) und ein ausgereiftes Tooling, ermöglichen eine effiziente und wartbare Softwareentwicklung auf Basis von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>.</p>



<p>Seit 2009 ist es ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Projekt, dass auf gute Testbarkeit ausgelegt ist (An dieser Stelle möchte ich auf den <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> Beitrag verweisen 😉 ). Dies bietet ein MVC/MVVM-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>, welches bidirektionales Databinding unterstützt.</p>



<h3 class="wp-block-heading">MVC/MVVM?</h3>



<p>MVVM teilt die verschiedenen Komponenten des Entwicklungsprozesses in drei Kategorien auf. Model, View und ViewModel. In der Regel handelt es sich dabei um Code-Markup oder grafische Benutzeroberflächen (GUI). MVC (Model-View-Control) ist eine Methode, mit der Entwickler Programme in diese drei Komponenten aufteilen. Auf diese Weise lassen sich geschäftliche Anforderungen und Regeln von der Art und Weise unterscheiden, wie Benutzer mit der Anwendung arbeiten. Gerne gehe ich in einem zukünftigen Beitrag näher darauf ein.</p>



<h3 class="wp-block-heading">Unterschiede zwischen Angular und AngularJS</h3>



<p>Angular ist wie bereits erwähnt der Nachfolger von AngularJS. Von Grund auf neu geschrieben, unterscheiden die beiden sich grundsätzlich und in vielerlei Hinsicht.</p>



<ul class="wp-block-list">
<li>Angular kennt keine „scopes“ oder Controller, sondern verwendet eine Hierarchie von Komponenten als zentrales Architekturkonzept.</li>



<li>Angular hat eine einfachere Syntax für Ausdrücke: Mit „[ ]“ werden Bindings für Eigenschaften und mit „( )“ werden Bindings für Events erzeugt.</li>



<li>Mobile-First-Ansatz: Die Anforderungen von mobilen Plattformen haben besondere Priorität.</li>



<li>Modularität: Module können Funktionalitäten auslagern, sodass Code leichtgewichtiger und schneller sein kann.</li>



<li>Es liegt lediglich die Unterstützung moderner Browser vor, wodurch man weniger Workarounds wegen Browser-Kompatibilitätsproblemen benötigt.</li>



<li>Angular empfiehlt die Verwendung von TypeScript. Es bietet Klassenbasierte objektorientierte Programmierung, Statische Typisierung und Generics.</li>



<li>TypeScript ist eine Obermenge von ECMAScript 6 (ES6) und ist rückwärts kompatibel mit ECMAScript 5, damit JavaScript. Angular bietet somit auch die Vorzüge von ES6: (Lambdas, Iteratoren, for…of-Schleifen, Generatoren im Stil von <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, Reflexion)</li>



<li>Verbesserte Dependency Injection: Bindings ermöglichen die Benennung von Abhängigkeiten.</li>



<li>Directives dienen dem Zweck, dass Aussehen und Verhalten eines Tags dynamisch zu verändern.</li>



<li>Dynamisches Laden ist möglich</li>



<li>Asynchrone Kompilierung von Templates</li>



<li>Einfacheres Routing</li>



<li>Kontroller und $scope sind durch Komponenten und Directives ersetzt. Eine Komponente ist eine Directive mit einem Template.</li>



<li>Reaktive Programmierung mit RxJS</li>
</ul>



<h3 class="wp-block-heading">Angular für konventionelle Websites?</h3>



<p>Angular ist ideal für Websites mit dynamischem Inhalt, jedoch nicht für kleine Seiten mit statischem Inhalt geeignet. Die Implementierung von Angular erhöht in diesem Fall lediglich die Gesamtgröße des Projekts und folglich auch die Ladezeiten. Dies ist eines der Hauptgründe, warum man Angular nicht für Landing Pages und Websites mit statischem Inhalt verwenden sollte. Davon abgesehen ist Angular weit davon entfernt, <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">SEO</a>-freundlich zu sein. Und im Zeitalter von <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">Search-Engine-Optimization</a> gibt es weitaus bessere Alternativen, um dieses Ziel zu erreichen. Auch ist Angular keine gute Lösung für kurzfristige Projekte oder Start-ups mit begrenzten Ressourcen. Die Komplexität des Front-Ends kann in relativ kurzer Zeit immense Ausmaße annehmen und später schwer zu bändigen sein.</p>



<p>Das Hauptanwendungsgebiet von Angular bestand darin, Einzelseiten-Webanwendungen zu erstellen. Aus diesem Grund verfügt es über eine breite Palette von Werkzeugen für die SPA-Entwicklung. Darüber hinaus ist es eine ideale Technologie für Websites, bei denen sich der Inhalt auf der Grundlage des Nutzerverhaltens und der Präferenzen der Benutzer dynamisch anpasst. Dependency Injections stellen sicher, dass im Falle der Änderung einer Komponente andere Komponenten, die mit ihr in Zusammenhang stehen, automatisch mitgeändert werden.</p>



<h3 class="wp-block-heading">Die 3 verschiedenen Ladetechniken</h3>



<p>Bei der Arbeit mit Angular bieten sich 3 verschiedene Ladetechniken an. Diese sind das Eager Loading, Lazy Loading und Preloading, auf die ich nachfolgend eingehe.</p>



<p><strong>Eager Loading (Eifriges Laden)</strong></p>



<p>Der Abruf aller benötigten Daten möglichst wirksam und umgehend bzw. sofort. Hierzu gibt es im Grunde genommen nicht viel anzumerken. Die Technik ist zwar effizient, doch die Tatsache, dass man eventuell nur einen bestimmten Teil der Daten benötigt aber dennoch alle Daten lädt, kann sich schnell zu einem Nachteil entwickeln, wenn es sich um große Datenmengen handelt.</p>



<p><strong>Lazy Loading (Langsames Laden)</strong></p>



<p>Die am wenigsten eifrige bzw. nicht eifrige Ladetechnik. Wenn man faul ist, tut man so lange nichts, bis man es wirklich muss oder dazu gezwungen wird. Man stelle sich vor, dass die Anwendung drei Bereiche hat. Home, Admin und das Dashboard. Auf den Home-Bereich wird ständig zugegriffen, auf den Dashboard-Bereich die meiste Zeit. Der Admin-Bereich wird jedoch nur von einigen wenigen Nutzern verwendet. Folglich kann man die Admin-Route nach und nach laden. So lange niemand auf die Idee kommt, auf den Verwaltungsbereich der Anwendung zu klicken, wird der damit verbundene Code auch nicht ausgeführt bzw. nicht geladen.</p>



<p>Die Mehrheit der Nutzer lädt den Code für den Verwaltungsbereich schlichtweg nie. Wenn man also Lazy Loading verwendet, kann man grundsätzlich schneller auf die Anwendung zugreifen, da man nicht so viel Code vom Server laden muss. Dies hängt damit zusammen, dass das ORM-Werkzeug (Objekt-Relationales Mapping-Werkzeug) jeglichen Zugriff auf alle Objektreferenzen »abfangen« muss, um hier bei Bedarf die verbundenen Objekte nachladen zu können. Dieses Abfangen erfolgt durch die Verwendung bestimmter Klassen für Einzelreferenzen und Mengenklassen. Der Unterschied zwischen den ORM-Werkzeugen liegt darin, ob der Entwickler diese Klassen explizit im Code verwenden muss oder ob das ORM-Werkzeug diese beim Kompilieren oder zur Laufzeit austauscht.</p>



<p><strong>Preloading (Vorladen)</strong></p>



<p>Die „somewhere-in-between“ (Irgendwie Zwischendrin) Ladetechnik. Beim Preloading macht man im Grunde genommen dasselbe wie beim Lazy Loading, nur ein bisschen anders.</p>



<p>Anhand des Home, Dashboard und Admin Beispiels lässt sich dies folgendermaßen darstellen. Die Startseite braucht man immer. Also lädt man diese schnell bzw. eifrig. Der Admin-Bereich wird nur selten und nur von wenigen Benutzern benötigt, also kann man diesen erst einmal etwas vernachlässigen bzw. &#8222;lazy&#8220; laden. Aber das Dashboard ist nicht das Erste, was ein Benutzer sieht, also kann es grundsätzlich erst einmal warten. Doch das Dashboard ist gleichzeitig etwas, dass die meisten der Benutzer irgendwann sehen möchten. Also sollte es zumindest dann zur Verfügung stehen, wenn das Laden des Home-Bereichs fertiggestellt ist. Nach jeder erfolgreichen Navigation sucht der Router in seiner Konfiguration nach einem nicht geladenen Modul, das er vorladen kann.</p>



<p>Der Home-Bereich wird erfolgreich geladen und unmittelbar danach wird der Dashboard-Bereich im Hintergrund geladen.</p>



<h3 class="wp-block-heading">Welche Ladetechnik kann/soll ich nun verwenden?</h3>



<p>Wie bei vielen Angelegenheiten in der IT kommt es hier auf den spezifischen Anwendungsfall und den zur Verfügung stehenden Ressourcen an. Wenn man nicht genau weiß, ob man die zusätzlichen Daten benötigt oder nicht, dann kann es ungünstig sein, sie direkt zu laden. Es kann aber auch ungünstig sein, sie später nachladen zu müssen. Entscheidend bei der Entscheidung ist die Wahrscheinlichkeit, ob und wann man die jeweiligen Daten für wen benötigt, um welche Datenmenge es sich handelt und ob man die Daten später einfach nachladen kann. Zu beachten ist, dass man ein automatisches Nachladen, nach einer Serialisierung, in der Regel nicht mehr initiieren kann.</p>



<h3 class="wp-block-heading">Release-Frequenz</h3>



<p>Angular Releases folgen dem Konzept des Semantic Versionings. Man unterscheidet zwischen Major-, Minor- und Bugfix-Releases. Alle 6 Monate gibt es eine neue Major Release. Major Releases enthalten signifikante neue Features, sind aber nicht abwärtskompatibel. Der Umstieg auf eine neuere Major Release benötigt daher oft Update-Scripts, Refactorings des bestehenden Codes, weitere Tests und das Erlernen neuer APIs. Zu jeder Major Release gibt es ein bis drei Minor Releases. Patch Releases und Pre-Releases gibt es fast jede Woche.</p>



<h3 class="wp-block-heading">Support</h3>



<p>Der Support von Major Releases beträgt typischerweise 18 Monate lang nach Release. Davon 6 Monate aktiv. Aus diesem Grund gibt es in regelmäßigen Abständen Minor Releases und Patch Releases. Es folgt ein 12-monatiger Long Term Support (LTS) in Form von Patch-Releases, ausschließlich zur Behebung kritischer und sicherheitsrelevanter Fehler.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Bei der Verwendung von Angular sollte von vornherein klar sein, dass die Realisierung eines Projekts mit der Abnahme vieler Entscheidungen über Architektur und des Renderings verbunden ist. Dies hat den Vorteil, dass sich das Projektteam zu 100% auf die Umsetzung von Features konzentrieren kann und nicht die grundlegende Architektur eigenständig aufbauen muss.</p>



<p>Durch die sehr einheitliche Struktur von Angular Anwendungen lassen sich gute Entwickler sehr schnell in das Projekt integrieren, da Angular Anwendungen stets einer gewissen Struktur folgen. Dies vereinfacht die Skalierbarkeit des Teams als auch des Projektes selbst als vergleichsweise bei Individuallösungen der Architektur in anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>.</p>



<p>Generell ist es für Enterprise Projekte sicherlich eine gute Wahl. Dennoch sollte man andere <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a> und VueJS nicht außer Acht lassen, über die ich in den kommenden Tagen schreibe.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/21/erklaerung-angular/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1210</post-id>	</item>
		<item>
		<title>Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</title>
		<link>https://ceosbay.com/2023/03/11/erklaerung-cucumber/</link>
					<comments>https://ceosbay.com/2023/03/11/erklaerung-cucumber/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 11 Mar 2023 20:08:00 +0000</pubDate>
				<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Driven]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Gherkin]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Verhaltensgetrieben]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1117</guid>

					<description><![CDATA[<p>Cucumber ist ein Open Source (BDD-Framework) Behavior-Driven-Development-Werkzeug bzw. Framework (Siehe &#8222;Verhaltensgetriebene Softwareentwicklung&#8220; – Thematisiere ich definitiv und explizit in einem zukünftigen Beitrag) zur textuellen Spezifikation von Anforderungen an Software und zum automatisierten Testing bzw. mit &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/11/erklaerung-cucumber/">Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Cucumber ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> (BDD-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>) Behavior-Driven-Development-Werkzeug bzw. <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (Siehe &#8222;Verhaltensgetriebene Softwareentwicklung&#8220; – Thematisiere ich definitiv und explizit in einem zukünftigen Beitrag) zur textuellen Spezifikation von Anforderungen an Software und zum automatisierten Testing bzw. mit dem sich (unter anderem) sehr gut lesbare, gut zu wartbare und elegante Akzeptanz-Tests für Web-Anwendungen schreiben lassen.</p>



<p>Cucumber wurde ursprünglich in der Programmiersprache <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a> für Ruby-Anwendungen geschrieben. In der Zwischenzeit unterstützt es aber auch andere Programmiersprachen wie Java und alle anderen auf der Java <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">Virtual Machine</a> gängigen Programmiersprachen sowie C++ und <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>. Darüber hinaus gibt es Projekte, die Cucumber noch für weitere Programmiersprachen zur Verfügung stellen und sich als Teil der Cucumber-Familie sehen. Darunter beispielsweise SpecFlow, eine Implementierung für C#.</p>



<h3 class="wp-block-heading">Wie funktioniert Cucumber?</h3>



<p>Wie auch bei den meisten anderen BDD-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> werden in Cucumber Funktionalitäten mittels der Beschreibungssprache „Gherkin“ beschrieben. Gherkin verwendet natürliche Schriftsprache als Grundlage. Lediglich bestimmte Schlüsselwörter werden besonders behandelt.</p>



<h3 class="wp-block-heading">Gherkin</h3>



<p>Gherkin ist die Sprache, die Cucumber verwendet, um Testfälle zu definieren. Sie ist so konzipiert, dass sie sich nicht-technisch und für den Menschen lesbar gestaltet. Es beschreibt Anwendungsfälle in Bezug auf ein Softwaresystem. Der Zweck hinter der Gherkin-Syntax ist die Förderung verhaltensorientierter Entwicklungspraktiken in einem Entwicklungsteam, einschließlich Geschäftsanalysten und Managern. Sie zielt darauf ab, bereits in den ersten Phasen der Anforderungsdefinition durch die Geschäftsleitung und in anderen Phasen des Entwicklungslebenszyklus einer Anwendung feste, eindeutige Anforderungen durchzusetzen.</p>



<h3 class="wp-block-heading">Syntax</h3>



<p>Die Syntax ist ähnlich wie bei <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a> zeilenorientiert aufgebaut. Die Struktur einer Datei wird durch Leerzeichen und andere Steuerzeichen definiert. # wird als Zeilen bzw. Kommentarzeichen verwendet und kann an jeder beliebigen Stelle in einer Datei stehen. Anweisungen sind jede nicht leere und nicht kommentierte Zeile. Sie bestehen aus einem konkreten Gherkin-Schlüsselwort, gefolgt von einer Zeichenkette.</p>



<p>Alle Gherkin-Dateien haben die Dateierweiterung .feature. Sie enthalten eine einzelne Feature-Definition für das zu testende System und sind ein ausführbares Testskript.</p>



<p>Neben der Bereitstellung eines Skripts für automatisierte Tests ist die Syntax von Gherkin so konzipiert, dass sie eine einfache Dokumentation des zu testenden Codes ermöglicht. Gherkin unterstützt derzeit Schlüsselwörter in Dutzenden von Sprachen.</p>



<h3 class="wp-block-heading">Schlüsselwörter der Gherkin Sprache</h3>



<ul class="wp-block-list">
<li>Feature: Name bzw. die Bezeichnung des Features</li>



<li>Rule: Regeln des Features</li>



<li>Example oder Scenario: Die Bezeichnung des Szenarios (Beispielsweise &#8222;Die erfolgreiche Anmeldung mit gültigen Anmeldeinformationen.&#8220;)</li>



<li>Given, When, Then, And, But für die steps (oder *)- Vorbedingungen (Gegeben sei), die Aktion, die ausgeführt wird bzw. die Erweiterung durch andere Schlüsselwörter um die Aktion die ausgeführt wird zu ergänzen bzw. zu erweitern. (Der User gibt beispielsweise seine Zugangsdaten, Username and Password ein), gefolgt von der erwarteten Reaktion des Systems (Beispielsweise die Nachricht, bei einem erfolgreichen Login.)</li>



<li>Background &#8211; Ein Background ermöglicht es einem, den nachfolgenden Scenarios einen gewissen Kontext hinzuzufügen. Es kann einen oder mehrere Vorgegebene Schritte enthalten, die vor jedem Scenario aber nach jedem Before hook ausgeführt werden.</li>



<li>Scenario Outline oder Scenario Template &#8211; Damit lässt sich dasselbe Szenario mehrmals mit unterschiedlichen Wertekombinationen ausführen.</li>



<li>Examples oder Scenarios &#8211; Eine Scenario Outline muss einen oder mehrere Abschnitte mit Examples bzw. Scenarios enthalten. Sie dienen als Steps bzw. Interpretationsvorlage, die nie direkt ausgeführt werden. Stattdessen wird die Szenariogliederung einmal für jede Zeile mit den darunter liegenden Abschnitten von Examples ausgeführt.</li>
</ul>



<h3 class="wp-block-heading">Gherkin in deutscher Sprache</h3>



<p>Um eine Funktionalität auf Deutsch zu schreiben, muss am Beginn des Features # language: de angegeben werden. Damit sind u.A. folgende deutsche Schlüsselwörter verfügbar:</p>



<ul class="wp-block-list">
<li>Funktionalität</li>



<li>Grundlage</li>



<li>Szenario</li>



<li>Szenariogrundriss</li>



<li>Beispiele</li>



<li>Angenommen</li>



<li>Gegeben sei</li>



<li>Wenn</li>



<li>Dann</li>



<li>Und und Aber, sowie *</li>
</ul>



<h3 class="wp-block-heading">Die Command line (CL)</h3>



<p>Cucumber verfügt über eine integrierte Kommandozeilenschnittstelle, die eine umfassende Liste von Anweisungen enthält. Wie die meisten Kommandozeilen-Tools bietet Cucumber die Option &#8211;help an, die eine Zusammenfassung der Befehle liefert, die diese Command Line akzeptiert.</p>



<pre class="wp-block-code"><code>$ cucumber --help
        -r, --require LIBRARY|DIR        Require files before executing the features.
        --i18n LANG                      List keywords for in a particular language.
                                         Run with "--i18n help" to see all languages.
        -f, --format FORMAT              How to format features (Default: pretty).
        -o, --out &#91;FILE|DIR]             Write output to a file/directory instead of
        ...</code></pre>



<h3 class="wp-block-heading">Fazit</h3>



<p>Gherkin ist nicht nur zum Schreiben von automatisierten Tests geeignet. Man kann Gherkin grundsätzlich auch dazu verwenden, um strukturierte Tests zu erstellen, die man später als Projektdokumentation verwendet kann. Erst die Eigenschaft, strukturiert zu sein, gibt uns die Möglichkeit zu automatisieren.</p>



<p>Sowohl die Sprache Gherkin wie auch das Tool Cucumber, bieten weitaus mehr Funktionalitäten, die ich hier nicht thematisiert habe. Zumal ich auch recht frisch in dieses Thema eingestiegen bin. So ist beispielsweise ein Datengetriebenes Szenario mithilfe von Tabellen möglich. Fernab können verschiedene Schritte, die im Prinzip das Gleiche tun, über Platzhalter definiert werden.</p>



<p>Um solche und weitere Vorteile zu nutzen, ist neben Cucumber oder anderen Testtools vor allem Disziplin beim Verfassen der Dokumentation bzw. der Gherkin Dokumente gefragt. Gleichzeitig müssen die formulierten Schritte präzise genug sein, um die gewünschten Verhaltensweisen ausreichend genau zu beschreiben. Ansonsten zerfällt die Abstraktion und Gherkin Dokumente werden lediglich zu etwas besser lesbaren Testskripten statt dem Ansatz des BDD zu folgen.</p>



<p>Cucumber lässt sich auch mit IntelliJ nutzen. Aber darüber gibt es dann in naher Zukunft einen weiteren Beitrag.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/11/erklaerung-cucumber/">Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/11/erklaerung-cucumber/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1117</post-id>	</item>
		<item>
		<title>jQuery &#8211; Die schnelle und leichte Werkzeug Bibliothek</title>
		<link>https://ceosbay.com/2023/03/09/erklaerung-jquery/</link>
					<comments>https://ceosbay.com/2023/03/09/erklaerung-jquery/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 09 Mar 2023 21:00:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Applikationen]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Bibliothek]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[Dokument]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Erweiterung]]></category>
		<category><![CDATA[Erweiterungen]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[leistungsfähig]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[Webanwendungen]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1146</guid>

					<description><![CDATA[<p>jQuery ist eine Open Source JavaScript-Bibliothek, die es Entwicklern erleichtert, interaktive Webanwendungen zu erstellen. Es wurde erstmals im Jahr 2006 veröffentlicht und ist seitdem zu einer der am häufigsten verwendeten JavaScript-Bibliotheken geworden. jQuery ermöglicht es &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/09/erklaerung-jquery/">jQuery &#8211; Die schnelle und leichte Werkzeug Bibliothek</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>jQuery ist eine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliothek, die es Entwicklern erleichtert, interaktive Webanwendungen zu erstellen. Es wurde erstmals im Jahr 2006 veröffentlicht und ist seitdem zu einer der am häufigsten verwendeten <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliotheken geworden. jQuery ermöglicht es Entwicklern, häufig wiederkehrende Aufgaben mit weniger Code auszuführen und unterstützt sie dabei, plattformübergreifende Anwendungen zu entwickeln.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>jQuery wurde im Jahr 2006 von John Resig entwickelt. Resig war ein Entwickler bei Mozilla und arbeitete an der Entwicklung von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>. Er erkannte jedoch, dass die vorhandenen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> zu umfangreich und schwerfällig waren und dass es schwierig war, plattformübergreifende Anwendungen zu entwickeln, die auf verschiedenen Browsern und Geräten funktionieren.</p>



<p>Um diese Herausforderung zu lösen, begann Resig damit, eine neue <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliothek zu entwickeln, die schlanker und schneller als vorhandene <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> war. Er nannte diese Bibliothek &#8222;jQuery&#8220; und veröffentlichte sie im Januar 2006.</p>



<p>Das Ziel war es, Entwicklern eine einfache und intuitive Methode zu bieten, um mit dem DOM (Document Object Model) zu arbeiten und interaktive Webanwendungen zu erstellen. jQuery sollte auch die Entwicklung von plattformübergreifenden Anwendungen erleichtern und dafür sorgen, dass Anwendungen auf allen gängigen Browsern gleich aussehen und funktionieren.</p>



<p>Dank seiner schlanken und schnellen Natur wurde jQuery schnell zu einer der am häufigsten verwendeten <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliotheken in der Webentwicklung. Es hat die Art und Weise, wie Entwickler <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Code schreiben und Webanwendungen entwickeln, grundlegend verändert.</p>



<p>Heute ist es weiterhin eine der am häufigsten verwendeten <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliotheken und wird von einer großen Entwicklergemeinschaft unterstützt, die ständig neue Funktionen und Erweiterungen entwickelt.</p>



<h3 class="wp-block-heading">Funktionen von JQuery</h3>



<p>Einer der Hauptvorteile von jQuery ist die Fähigkeit, das Schreiben von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Code zu vereinfachen. Es bietet eine Vielzahl von Funktionen, die das Schreiben von Code für häufige Aufgaben wie DOM-Manipulationen, Event-Handling und AJAX-Anfragen erleichtern. Durch die Verwendung von jQuery können Entwickler schneller und effizienter arbeiten und so die Entwicklungsdauer ihrer Anwendungen verkürzen.</p>



<p>jQuery bietet auch eine Cross-Browser-Unterstützung, die es Entwicklern ermöglicht, plattformübergreifende Anwendungen zu entwickeln, ohne sich um Browser-Inkompatibilitäten kümmern zu müssen. Die Bibliothek stellt sicher, dass Anwendungen auf allen gängigen Browsern gleich aussehen und funktionieren.</p>



<p>Ein weiterer Vorteil von jQuery ist die umfangreiche Dokumentation und die große Entwickler-Community. Die Bibliothek ist seit vielen Jahren in der Webentwicklung im Einsatz und es gibt eine Vielzahl von Dokumentationen, Tutorials, Foren und anderen Ressourcen, die Entwicklern helfen, die Bibliothek zu nutzen. Die Community bietet auch eine Vielzahl von Plugins und Erweiterungen, die Entwickler verwenden können, um ihre Anwendungen zu erweitern.</p>



<p>jQuery bietet auch eine große Anzahl von Plugins und Erweiterungen, die Entwickler verwenden können, um ihre Anwendungen zu erweitern. Diese Plugins bieten zusätzliche Funktionen und ermöglichen es Entwicklern, die Bibliothek weiter anzupassen und zu erweitern.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Alles in allem ist jQuery eine sehr nützliche und leistungsfähige <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Bibliothek, die es Entwicklern ermöglicht, Webanwendungen schneller und effizienter zu entwickeln. Es bietet eine Vielzahl von Funktionen und Unterstützung für plattformübergreifende Anwendungen. Durch die sehr umfangreiche Dokumentation und die große Entwickler-Community ist es auch relativ einfach zu erlernen bzw. am Ende des Tages zu verwenden. Wenn man Webanwendungen entwickelt, kann man es durchaus in Betracht ziehen, jQuery in die Tool-Box aufzunehmen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/09/erklaerung-jquery/">jQuery &#8211; Die schnelle und leichte Werkzeug Bibliothek</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/09/erklaerung-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1146</post-id>	</item>
		<item>
		<title>AJAX &#8211; Dynamische und interaktive Webanwendungen mit kurzen Ladezeiten</title>
		<link>https://ceosbay.com/2023/03/08/erklaerung-ajax/</link>
					<comments>https://ceosbay.com/2023/03/08/erklaerung-ajax/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 08 Mar 2023 21:32:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Effizienz]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Geschwindigkeit]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Interaktiv]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Modern]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1267</guid>

					<description><![CDATA[<p>AJAX steht für &#8222;Asynchronous JavaScript and XML&#8220; und bezieht sich auf eine Open Source Technologie, die es ermöglicht, Webanwendungen dynamischer und interaktiver zu gestalten, indem sie asynchron Daten zwischen dem Server und der Client-Seite austauscht. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/08/erklaerung-ajax/">AJAX &#8211; Dynamische und interaktive Webanwendungen mit kurzen Ladezeiten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AJAX steht für &#8222;Asynchronous <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> and <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>&#8220; und bezieht sich auf eine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Technologie, die es ermöglicht, Webanwendungen dynamischer und interaktiver zu gestalten, indem sie asynchron Daten zwischen dem Server und der Client-Seite austauscht. Dies vor allem, ohne dass man eine Website vollständig neu laden muss. AJAX wurde erstmals 2005 von Jesse James Garrett in einem Artikel für Adaptive Path beschrieben und hat seitdem die Art und Weise, wie man Webanwendungen entwickelt, grundlegend verändert.</p>



<h3 class="wp-block-heading">Funktionsweise und Vorteile von AJAX</h3>



<p>Eine der wichtigsten Vorteile von AJAX ist die Möglichkeit, Webanwendungen zu entwickeln, die schneller und reaktionsfähiger sind. Durch die Verwendung von AJAX müssen Benutzer nicht mehr warten, bis die gesamte Seite neu geladen ist, um Änderungen zu sehen. Stattdessen lädt man nur die benötigten Daten asynchron vom Server und zeigt diese aktualisierten Inhalte dann auf der Seite. Dies führt zu einer verbesserten Benutzererfahrung und einer höheren Interaktion der User.</p>



<p>Es arbeitet mit einer Kombination aus <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, CSS und dem <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>httpsRequest-Objekt (XHR), um Daten asynchron zwischen dem Server und der Client-Seite auszutauschen. Das <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>httpsRequest-Objekt ist eine API, die es <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> ermöglicht, Daten über https oder https asynchron abzurufen oder zu senden, ohne die Seite neu zu laden. Mit Hilfe des XHR-Objekts können Entwickler Daten im <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>-, <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>&#8211; oder Textformat abrufen oder senden.</p>



<p>Ein weiterer Vorteil von AJAX ist die Fähigkeit, auf Ereignisse und Interaktionen der Benutzer in Echtzeit zu reagieren. Entwickler können es verwenden, um Benutzeraktionen wie das Klicken auf Schaltflächen oder Links abzufangen und bestimmte Funktionen auszuführen, ohne die Seite neu zu laden. Dies ermöglicht es Entwicklern, dynamische und interaktive Benutzeroberflächen zu erstellen, die reaktionsschnell und benutzerfreundlich sind.</p>



<h3 class="wp-block-heading">Neben vielen Vorteilen gibt es auch einige Nachteile</h3>



<p>Nicht alle Browser unterstützen es vollständig. Einige ältere Browser können Probleme bei der Verarbeitung von AJAX-Code haben, was dazu führen kann, dass die Webanwendung nicht wie erwartet funktioniert. Entwickler müssen daher sicherstellen, dass man ihre Anwendungen auf allen gängigen Browsern testet, um eine optimale Funktionalität sicherzustellen. Da AJAX es ermöglicht, Daten in Echtzeit zwischen Server und Client zu übertragen, können Sicherheitsrisiken entstehen, wenn man nicht die richtigen Vorkehrungen trifft. Unzureichende Validierung von Benutzereingaben und unsichere Datenübertragungen können zu Sicherheitslücken führen, die böswillige Angreifer ausnutzen könnten. </p>



<p>Die Implementierung von AJAX kann sich relativ komplex gestalten. Insbesondere bei komplexen Anwendungen, die viele Interaktionen und eine große Datenverarbeitung erfordern. Entwickler müssen sorgfältig planen und organisieren, um sicherzustellen, dass ihre Anwendungen effizient und zuverlässig funktionieren.</p>



<p>Die Verwendung von AJAX kann zu Barrierefreiheitsproblemen führen, da einige Benutzer möglicherweise Probleme haben, auf dynamische Inhalte zuzugreifen, die man dann in Echtzeit aktualisiert. Entwickler müssen sicherstellen, dass ihre Anwendungen barrierefrei sind und für alle Benutzer gleichermaßen zugänglich sind.</p>



<p>Suchmaschinen können Schwierigkeiten haben, AJAX-basierte Inhalte zu indizieren und zu durchsuchen, was zu SEO-Problemen führen kann. Entwickler müssen sicherstellen, dass ihre Anwendungen für Suchmaschinen optimiert sind und dass die Indexierung der gesamten Inhalte möglich ist.</p>



<h3 class="wp-block-heading">Wo findet AJAX Einsatz?</h3>



<p>AJAX wird heute in einer Vielzahl von Anwendungen eingesetzt, darunter in sozialen Netzwerken, E-Commerce-Websites, Echtzeit-Chat-Anwendungen und auch in Spielen.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Zusammenfassend ist AJAX eine leistungsstarke Technologie, die die Art und Weise, wie man Webanwendungen entwickelt, grundlegend verändert. Durch die Verwendung von AJAX kann man Webanwendungen schneller und reaktionsfähiger machen. Es ermöglicht auch die Entwicklung von interaktiven Webanwendungen, die in Echtzeit auf Benutzeraktionen reagieren können, und bietet Plattformunabhängigkeit. Insgesamt bietet AJAX eine leistungsstarke Technologie für die Entwicklung moderner und interaktiver Webanwendungen. Es ist eine wichtige Technologie, die von vielen Webentwicklern und Unternehmen auf der ganzen Welt genutzt wird, um bessere Webanwendungen zu erstellen, die eine bessere Benutzererfahrung bieten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/08/erklaerung-ajax/">AJAX &#8211; Dynamische und interaktive Webanwendungen mit kurzen Ladezeiten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/08/erklaerung-ajax/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1267</post-id>	</item>
		<item>
		<title>Jest &#8211; Test-Framework für Testautomatisierung</title>
		<link>https://ceosbay.com/2023/03/07/erklaerung-jest/</link>
					<comments>https://ceosbay.com/2023/03/07/erklaerung-jest/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 07 Mar 2023 20:03:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Ausführung]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Christoph]]></category>
		<category><![CDATA[Codeabdeckung]]></category>
		<category><![CDATA[Codes]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jest]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[Nakazawa]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Snapshot]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Stub]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1075</guid>

					<description><![CDATA[<p>Jest ist ein Open Source JavaScript-Testframework, dass speziell für die Verwendung mit React, Vue.js, Angular und anderen modernen JavaScript&#8211;Frameworks und -Bibliotheken entwickelt wurde. Das Framework hat Facebook, um genau zu sein, Christoph Nakazawa entworfen und &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/07/erklaerung-jest/">Jest &#8211; Test-Framework für Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Jest ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Testframework, dass speziell für die Verwendung mit <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, Vue.js, <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/" target="_blank" rel="noreferrer noopener">Angular</a> und anderen modernen <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> und -Bibliotheken entwickelt wurde. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> hat Facebook, um genau zu sein, Christoph Nakazawa entworfen und entwickelt. Wobei man bei der Entwicklung den Schwerpunkt auf die Einfachheit und die Unterstützung von großen Webanwendungen gesetzt hat. Heute nutzen es viele Entwickler sowie Unternehmen weltweit.</p>



<p>Es bietet eine Reihe von Funktionen und Tools, die es Entwicklern erleichtert, effektive und zuverlässige Tests für ihre <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen zu schreiben. Zu den Funktionen von Jest gehören unter anderem:</p>



<p><strong>Automatisierte Testausführung:</strong></p>



<p>Jest führt Tests automatisch aus, wenn es Codeänderungen erkennt. Dies beschleunigt den Entwicklungsprozess und sorgt dafür, dass man häufiger bzw. effektiver Tests ausführen kann. Dies steigert am Ende des Tages die Qualität der Anwendungen grundsätzlich.</p>



<p><strong>Snapshot-Tests:</strong></p>



<p>Mit Jest können Entwickler Snapshot-Tests durchführen. Dadurch stellt man sicher, dass das Rendering der Komponenten oder Funktionen konsistent stattfindet. Dies kann auch dabei helfen, visuelle Fehler in der Benutzeroberfläche zu identifizieren und zu beheben.</p>



<p><strong>Mocking:</strong></p>



<p>Jest erleichtert das Erstellen von Mocks und Stubs für Abhängigkeiten, die man in den zu entwickelnden Anwendungen verwendet. Dies kann Entwicklern dabei helfen, ihre Tests zu isolieren und sicherzustellen, dass die Ausführung unabhängig voneinander stattfindet.</p>



<p><strong>Codeabdeckung:</strong></p>



<p>Jest bietet eine integrierte Codeabdeckungsfunktion. Dies ermöglicht den Entwicklern die Überprüfung, wie viel des Codes während der Testausführung abgedeckt ist. Dies kann helfen, Lücken in der Testabdeckung zu identifizieren und die Qualität der Anwendung insgesamt zu verbessern.</p>



<p><strong>Parallele Testausführung:</strong></p>



<p>Jest kann Tests parallel ausführen, was die Testdauer verkürzt, und die Gesamtgeschwindigkeit des Entwicklungsprozesses erhöht.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Insgesamt ist Jest ein leistungsstarkes Testframework für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen, dass eine breite Palette von Funktionen bietet, um Entwicklern dabei zu helfen, effektive und zuverlässige Tests für ihre Anwendungen zu schreiben. Es ist eine wichtige Technologie für die Entwicklung moderner <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen und viele Entwickler sowie Unternehmen weltweit nutzen es.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/07/erklaerung-jest/">Jest &#8211; Test-Framework für Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/07/erklaerung-jest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1075</post-id>	</item>
		<item>
		<title>Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</title>
		<link>https://ceosbay.com/2022/12/26/erklaerung-pact-io/</link>
					<comments>https://ceosbay.com/2022/12/26/erklaerung-pact-io/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 26 Dec 2022 17:30:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Alternativen]]></category>
		<category><![CDATA[Änderungen]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Broker]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Consumer]]></category>
		<category><![CDATA[Contracts]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[pact]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[Type]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1049</guid>

					<description><![CDATA[<p>Pact ist ein Open Source Code-First-Tool zum Testen von https- und Nachrichtenintegrationen mithilfe von Contract Tests. Diese stellen sicher, dass die Nachrichten zwischen den Anwendungen mit einem gemeinsamen Verständnis übereinstimmen, dass in einem Contract dokumentiert &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/26/erklaerung-pact-io/">Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Pact ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Code-First-Tool zum Testen von https- und Nachrichtenintegrationen mithilfe von Contract Tests. Diese stellen sicher, dass die Nachrichten zwischen den Anwendungen mit einem gemeinsamen Verständnis übereinstimmen, dass in einem Contract dokumentiert ist. Die Alternative zu Contract Tests, sind Integrationstests, auf die ich in späteren Beiträgen eingehen werde. Alles in allem sind sie dafür da, um sicherzustellen, dass die Anwendungen korrekt zusammenarbeiten.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Bis zum Aufkommen der Microservice-Architekturen wurde Software klassischerweise als Monolith entworfen. Dabei gab es keinerlei interne Schnittstellen, da alle Informationen im Monolithen weitergereicht werden konnten. Dementsprechend konnte man sich im Testing nur auf die Stufen Unittests, Integrationstests und End-to-End-Tests konzentrieren. Mit dem Aufkommen der Microservice-Architekturen existiert nun eine Vielzahl an internen Schnittstellen und damit entsteht die Notwendigkeit, diese zu testen. Die Kommunikation der Services untereinander geschieht dabei nicht zufällig, sondern folgt klar definierten Regeln, den sogenannten Schnittstellen-Contracts.</p>



<h3 class="wp-block-heading">Was ist Contract Testing?</h3>



<p>Wie bereits angesprochen, wurde die korrekte Zusammenarbeit von API und Consumer meist durch Integrationstests sichergestellt. Da diese allerdings eine lauffähige Systemlandschaft benötigen, können Fehler erst relativ spät erkannt werden. Bei der Entwicklung ist es jedoch von Vorteil, das Feedback so früh wie möglich zu erhalten. Hinzu kommt, dass Integrationstests eigentlich zum Prüfen der Fachlichkeit dienen. In heutigen Testlandschaften stellen sie strenggenommen &#8222;nur nebenher&#8220; fest, wenn es technische Probleme an der Schnittstelle gibt. Das kann sowohl bedeuten, dass der Aufwand bei der Fehlersuche steigt, weil neben fachlichen Problemen auch technische Ursachen zum Fehlschlag des Tests führen können, als auch der Wartungsaufwand der Tests sich erhöht.</p>



<p>Macht also Sinn, dedizierte Tests zu nutzen, um Fehler an Schnittstellen zu finden. Hier bietet sich Contract Testing, genauer gesagt, Consumer Driven Contract Testing (CDCT) an. Verträge für Softwarekomponenten. Der Zusatz &#8222;Consumer Driven&#8220; bedeutet, der Consumer bestimmt den Vertrag (Aus diesem Grund nennt man es auch Consumer Contract) und das sich die API nach dessen Vorgaben richten muss.</p>



<p>Neben Consumer Contracts gibt es die etwas verbreiteteren Provider Contracts wie WSDL-/XML-Schemata von SOAP-APIs oder Werkzeuge wie Swagger im Kontext von <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/" target="_blank" rel="noreferrer noopener">REST-Services</a>.</p>



<p>Auch wenn sich die Funktionsweise von <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zu <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> unterscheidet, bleibt die Idee dahinter gleich. Der Provider erfüllt den vom Consumer definierten Vertrag.</p>



<p>Der Vertrag enthält die API samt Parameter und die erwartete (minimale) Antwort. Dabei kann die Beschreibung der Parameter durch den Einsatz von regulären Ausdrücken beliebig präzise sein. So kann der Consumer erwarten, beim Aufruf der API einen unbestimmten String-Parameter oder einen bestimmten String-Parameter aus einem vordefinierten Set zu übergeben. Der zweite Fall ist äußerst hilfreich, wenn der Provider diesen String-Parameter in einen Enum-Wert übersetzt.</p>



<h3 class="wp-block-heading">Der Consumer Test mit Pact</h3>



<p>Sämtliche Verträge zwischen dem Consumer und dem Provider werden in einer JSON-Datei, auch Pact-Datei genannt, definiert. Der Consumer generiert diese Pact-Datei beim Ausführen seiner Pact-Tests und veröffentlicht sie auf dem Pact-Broker. Bei den Tests handelt es sich um gewöhnliche Unit-Tests und sie basieren auf einem der vielen von Pact unterstützen Test-Frameworks wie JUnit oder Jest. In dem Test ruft der Consumer die zu testende API inklusive Parameter auf. Der Aufruf wird von einem Mock-Provider, der vom Pact-Framework zur Verfügung gestellt wird, entgegengenommen. Der Mock-Provider prüft, ob dieser Aufruf mit dem Aufruf aus dem Vertrag übereinstimmt. Sind keine Abweichungen gefunden, antwortet der Mock-Provider mit der minimalen Antwort, die ebenfalls aus dem Vertrag stammt. Der Consumer empfängt in seinem Test die Antwort und vergleicht sie mit seiner Erwartung. Stimmen sie überein, ist der Test erfolgreich. Auf diesem Weg stellt der Pact-Test sicher, dass der Consumer den Aufruf tätigen und die Antwort verarbeiten kann.</p>



<p>Der Pact-Broker ist ein Webserver, der sowohl vom Consumer als auch vom Provider erreichbar sein muss. Er verwaltet die Verträge, indem er sie versioniert ablegt, sie dem Provider zur Verfügung stellt und die Testergebnisse speichert. Die Art und Weise wie der Consumer die Verträge auf dem Pact-Broker veröffentlicht, ist abhängig von der eingesetzten Programmiersprache der Tests und/oder dem eingesetzten Dependendency-Management. Für Maven beispielsweise gibt es ein spezielles Pact-Plugin, das den publish-Goal anbietet, für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> existiert hingegen eine spezielle Pact-Version mit dem Namen Pact-js.</p>



<h3 class="wp-block-heading">Der Provider Test</h3>



<p>Analog zum Consumer-Test ist der Provider-Test auch ein Unit-Test und wird im Rahmen der restlichen Unit-Tests ausgeführt. Hierbei werden alle Verträge, die der Provider mit seinen Consumern abgeschlossen hat, vom Pact-Broker heruntergeladen. Der Aufruf der APIs erfolgt lokal, sodass ein Aufruf durch den Consumer simuliert wird. Der Provider verarbeitet den Aufruf und generiert seine Antwort, die mit der erwarteten Antwort aus dem Vertrag verglichen wird. Sollten sie gleich sein, hat der Provider den Pact-Test bestanden. Ansonsten gilt der Test als fehlgeschlagen und das Artefakt des Providers kann nicht ordnungsgemäß gebaut werden. Die Ursache für Fehlschläge sind in den meisten Fällen Code-Änderungen am Provider ohne den Consumer entsprechend angepasst zu haben oder die Erwartungshaltung des Consumers ist fehlerhaft. In beiden Fällen wird durch CDCT ein Missstand aufgedeckt, der erst zur Laufzeit bemerkbar gewesen wäre.</p>



<h3 class="wp-block-heading">Alternativen zu Pact</h3>



<p>Natürlich ist Pact nicht das einzige Framework zum Implementieren von CDCT, wenn auch aktuell eines der am weitesten verbreiteten. Neben Pact existieren noch ein paar weitere Möglichkeiten für das vertragsbasierte Testen wie Postman, Spring Cloud Contract Project oder Dredd, auf die ich noch in zukünftigen Beiträgen eingehen werde. Aus diesem Grund erfolgt auch das Fazit erst, wenn ich ein paar Vergleiche aufstellen kann.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/26/erklaerung-pact-io/">Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/26/erklaerung-pact-io/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1049</post-id>	</item>
		<item>
		<title>Selenium &#8211; Zur Automatisierung von Web-Tests für zuverlässige Webanwendungen</title>
		<link>https://ceosbay.com/2022/11/25/selenium/</link>
					<comments>https://ceosbay.com/2022/11/25/selenium/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 25 Nov 2022 12:36:09 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CD]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Core]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Selenium Core]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Web-Dev]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=685</guid>

					<description><![CDATA[<p>Selenium ist ein Open Source Framework für automatisierte Softwaretests von Webanwendungen. Entwickelt und von der Firma ThoughtWorks unter der Apache-2.0-Lizenz veröffentlicht. Mit Selenium kann man Interaktionen, in der Regel Testsequenzen, mit einer Webanwendung aufnehmen und &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/25/selenium/">Selenium &#8211; Zur Automatisierung von Web-Tests für zuverlässige Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Selenium ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Framework für automatisierte Softwaretests von Webanwendungen. Entwickelt und von der Firma ThoughtWorks unter der <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" rel="noreferrer noopener">Apache-2.0-Lizenz</a> veröffentlicht.</p>



<p>Mit Selenium kann man Interaktionen, in der Regel Testsequenzen, mit einer Webanwendung aufnehmen und diese Tests automatisiert beliebig oft wiederholen. Es nimmt vor allem Entwicklern sehr viel Arbeit ab, da beispielsweise beim Ausfüllen von Webformularen das Testen wesentlich schneller, flexibler und verlässlicher abläuft.</p>



<p>Selenium basiert rein auf HTML und JavaScript. Für einen schnellen Einstieg kann man direkt die Selenium-IDE z. B. als Browser-Add-on installieren und mit dem Testing beginnen. Der Benutzer interagiert ausschließlich mit Firefox, während Selenium die Aufnahme und das Abspielen der Tests übernimmt.</p>



<h3 class="wp-block-heading">Eine kurze Zeitreise</h3>



<p>Im Jahr 2003 fing Jason Huggins, der bereits einige Testing Tools entwickelt hatte, mit der Entwicklung von Selenium an.</p>



<p>Damals war ThoughtWorks weltweit vertreten, aber jeder, der sich außerhalb des Hauptsitzes befand, hatte mit enormen Latenzzeiten zu kämpfen. Allein die Erfassung von Stundenzetteln dauerte eine Ewigkeit. Um diese Einschränkungen zu überwinden, beschloss Jasons Team, JavaScript im Browser zu verwenden, um die Arbeit zu erledigen, anstatt den Server zu verwenden.</p>



<p>Zu dem Zeitpunkt war JavaScript noch nicht zum Standard geworden. Der von Jason geschriebene Code lief zwar in dem Browser Internet Explorer aber nicht auf Mozilla. Die Anpassung des Codes für Mozilla, hätten den Code für Internet Explorer beschädigen können und umgekehrt. Ganz abgesehen von all den zukünftigen Updates für beide Browser gleichzeitig. Dies hätte mehr Schaden als Nutzen verursacht.</p>



<p>Jasons Team brauchte eine zuverlässige Methode, um die Anwendung in den Browsern zu testen. Also recherchierten Jason und zwei weitere Kollegen bei ThoughtWorks ob es irgendwelche Tools gab, die sie verwenden konnten. Wie es meistens so ist, war nichts zu finden, was den eigenen Anforderungen entsprach. So ging es an die Entwicklung von Selenium. Das Tool, welches sie programmiert hatten, konnte Daten eingeben und Schaltflächen auf einer Reihe von Webseiten anklicken, um verschiedene Testszenarien zu durchlaufen dies in mehreren Browsern gleichzeitig.</p>



<p>Im Laufe der Zeit schlossen sich immer mehr Mitarbeiter von ThoughtWorks seiner Arbeit an, bis Paul Hammant dem Team beitrat und die Entwicklung des Programms in die Richtung des heutigen &#8222;Selenium Remote Control&#8220; (RC) leitete. Dabei handelt es sich mittlerweile um ein veraltetes Modul.</p>



<p>2007 wechselte Huggins zum Softwarekonzern Google, wo er die Weiterentwicklung und die Fehlerausbesserung des Programms zusammen mit anderen Programmierern vorantrieb. Zur gleichen Zeit entwickelte Simon Stewart bei ThoughtWorks die Browsersteuerung Webdriver (Darüber schreibe ich voraussichtlich auch noch einen Beitrag). Da es für die Entwickler beider Projekte nicht sinnvoll erschien, zwei separate Projekte voranzutreiben, beschlossen sie die beiden Projekte zu &#8222;Selenium Webdriver&#8220; bzw. &#8222;Selenium 2.0&#8220; zu vereinen.</p>



<p>2008 entwickelte Philippe Hanrigou &#8222;Grid&#8220;, welches die Ausführung multipler Instanzen ermöglichte. So konnte man das Tool auf einer unbegrenzten Anzahl von Rechnern laufen lassen. Dies führte dazu, dass die Ausführungszeit für große Teststrukturen drastisch verkürzt wurde.</p>



<h3 class="wp-block-heading">Randnotiz 😀</h3>



<p>Der Name Selenium entstand aus einer scherzhaften Bemerkung von Huggins, der in einer E-Mail seine Mitbewerber Mercury damit verspottete, dass eine Quecksilbervergiftung (Mercury poisoning) durch die Einnahme von Selenium geheilt werden kann.</p>



<h3 class="wp-block-heading">Bestandteile von Selenium</h3>



<h4 class="wp-block-heading">Selenium Core</h4>



<p>Das Core-Modul enthält die komplette Basisfunktionalität von Selenium. Die Testbefehl-API und den TestRunner. Unter Verwendung des Core-Modules kann die TestRunner.html-Webseite mit verschiedenen Browsern geöffnet werden. Dadurch werden Kompatibilitätstests mit verschiedenen Browsertypen ermöglicht.</p>



<h4 class="wp-block-heading">Selenium IDE</h4>



<p>Das Selenium IDE ist ein Add-on für Google Chrome und Mozilla Firefox, mit dem man direkt im Browser durch die Interaktion mit einer Webanwendung Testfälle aufnehmen und wieder abspielen kann. Neben der reinen Capture-Replay-Funktionalität lassen sich weitere Überprüfungen mittels „verify“ und „assert“ einbinden. Zudem wird das schrittweise Abspielen von Testfällen, das Setzen von Breakpoints zur Überprüfung der Testfälle und die Wiederverwendung von geteilten Testabläufen unterstützt. Einzelne Testfälle lassen sich zu Testsuites kombinieren und wiederverwenden.</p>



<h4 class="wp-block-heading">Selenium WebDriver</h4>



<p>Selenium WebDriver ist der Nachfolger von Remote Control. Auf Remote Control werde ich nicht weiter eingehen, da dieses Modul veraltet ist. Es akzeptiert Befehle in Selenese oder über die Client-API und leitet diese an den jeweiligen Browser weiter. Eine Besonderheit bildet HtmlUnit. Ab Version 3.0 ist HtmlUnit nicht mehr Bestandteil des WebDrivers. Es handelt sich dabei um einen Webbrowser ohne grafische Anzeige (Headless). Der Selenium WebDriver ist über den Browser Driver implementiert, wodurch die gängigsten Browser unterstützt werden.</p>



<h4 class="wp-block-heading">Selenium Grid</h4>



<p>Selenium Grid ist eine Erweiterung von RC und ermöglicht die parallele Ausführung von Tests auf mehreren Servern, um die Dauer der Testdurchführung zu verkürzen. Der Client-Treiber verbindet sich dabei mit dem Hub anstatt mit dem Server. Der Hub wiederum leitet die Tests auf freie Selenium-Server weiter.</p>



<h4 class="wp-block-heading">Fazit</h4>



<p>Selenium ermöglich, wie mehrfach angesprochen, das direkte Aufzeichnen diverser Test-Szenarien. Bei der Aufzeichnung solcher Testszenarien ist auf jeden Fall Vorsicht geboten, da sich bei einer unkonzentrierten Arbeitsweise Fehler einschleichen können, die einem nachfolgend eventuell nicht auffallen. Die Nutzung von Testsuites kann Sinn machen, da man dadurch eine Gliederung in separate Module erreicht. Die Auswirkungen von Änderungen innerhalb der Applikation können so einfacher auf bestehende Tests übertragen werden, was zu einer besseren Wartung und Wiederverwendbarkeit führt. Sicherlich kann man auch die Arbeit damit wesentlich optimierter und angenehmer realisieren, indem man einiges automatisiert. Aber dazu vielleicht in der Zukunft mehr.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/25/selenium/">Selenium &#8211; Zur Automatisierung von Web-Tests für zuverlässige Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/25/selenium/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">685</post-id>	</item>
		<item>
		<title>JavaScript &#8211; Die Sprache für interaktive und dynamische Webanwendungen</title>
		<link>https://ceosbay.com/2022/11/12/javascript/</link>
					<comments>https://ceosbay.com/2022/11/12/javascript/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 12 Nov 2022 06:00:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Acrobat]]></category>
		<category><![CDATA[Anwendungsentwicklung]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Bibliotheken]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codestruktur]]></category>
		<category><![CDATA[Deklarativ]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Geschichte]]></category>
		<category><![CDATA[Heute]]></category>
		<category><![CDATA[Imperativ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Multiparadigmisch]]></category>
		<category><![CDATA[Multipragmatisch]]></category>
		<category><![CDATA[Objektorientiert]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Paradigmen]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Reac]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Semantik]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Thread]]></category>
		<category><![CDATA[Three]]></category>
		<category><![CDATA[ThreeJs]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=510</guid>

					<description><![CDATA[<p>JavaScript ist eine der bekanntesten Skriptsprachen für Websites. Es ist eine leichtgewichtige, interpretierte und just-in-time kompilierte Software-Sprache, die erstklassige Funktionen nutzt. Viele Nicht-Browser-Umgebungen wie Adobe Acrobat, Apache CouchDB und Node.JS® nutzen JavaScript. Diese weit verbreitete &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript &#8211; Die Sprache für interaktive und dynamische Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JavaScript ist eine der bekanntesten Skriptsprachen für Websites. Es ist eine leichtgewichtige, interpretierte und just-in-time kompilierte Software-Sprache, die erstklassige Funktionen nutzt. Viele Nicht-Browser-Umgebungen wie Adobe Acrobat, Apache CouchDB und <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/">Node.JS®</a> nutzen JavaScript. Diese weit verbreitete Software-Sprache ist prototypenbasiert, deklarativ, imperativ, stark objektorientiert, single-thread, dynamisch und multiparadigmatisch. Die genannten Begriffe werden nachfolgend erklärt aber zu einem späteren Zeitpunkt in einen anderen Beitrag, bei dem ich verschiedene Paradigmen vorstelle, verschoben.</p>



<h3 class="wp-block-heading">Prototypenbasierte Programmierung</h3>



<p>Prototypenbasierte Programmierung, auch als klassenlose Objektorientierung bekannt, ist eine Form der objektorientierten Programmierung, die auf das Sprachelement der Klasse verzichtet. Objekte werden nicht durch Instanziierung (Der&nbsp;Prozess des Lesens oder des Angebens von Informationen) einer Klasse, sondern durch Klonen bereits existierender Objekte erzeugt. Bei diesem Klonen werden alle Eigenschaften (Attribute und Methoden) des Prototyp-Objektes kopiert. Sie können aber überschrieben werden, und das neue Objekt kann mit neuen Eigenschaften versehen werden. Hierzu aber in einem anderen Beitrag mehr.</p>



<h3 class="wp-block-heading">Deklarative Programmierung</h3>



<p>In der Informatik ist die deklarative Programmierung ein Programmierparadigma &#8211; ein Stil zum Aufbau der Struktur und der Elemente von Computerprogrammen -, dass die Logik einer Berechnung ausdrückt, ohne ihren Kontrollfluss zu beschreiben. Folglich wird im Quellcode festgelegt, was in welcher Reihenfolge und wie zu tun ist: „First do this and next do that / Erst dies und dann das tun“.  Ich werde dieses Thema aber noch in einem anderen Beitrag ausführlich behandeln.</p>



<h3 class="wp-block-heading">Imperative Programmierung</h3>



<p>Die Imperative Programmierung ist ein Programmierparadigma, nach dem „ein Programm aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll. Auch dieses Thema wird später noch in einem anderen Beitrag genauer thematisiert.</p>



<h3 class="wp-block-heading">Objektorientierte Programmierung</h3>



<p>Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin, die Architektur einer Software an den Grundstrukturen desjenigen Bereichs der Wirklichkeit auszurichten, der die gegebene Anwendung betrifft. Eines der wichtigsten Programmierparadigmen unserer Zeit. Ich werde noch einige Beiträge zur objektorientierten Programmierung erstellen.</p>



<h3 class="wp-block-heading">Single-thread</h3>



<p>In der Informatik bezeichnet Thread einen Ausführungsstrang oder eine Ausführungsreihenfolge in der Abarbeitung eines Programms. Ein Thread ist Teil eines Prozesses. In meiner Jugend kannte man diesen Begriff noch in Zusammenhang mit Multithreading bei Prozessoren. War damals für uns wie ein Traum. Aber auch zu diesen Begrifflichkeit in einem anderen Beitrag mehr.</p>



<h3 class="wp-block-heading">Dynamische Programmierung</h3>



<p>Die dynamische Programmierung dient zur Lösung eines Optimierungsproblems durch algorithmische Verfahren. Das Problem wird in Teilprobleme zergliedert und es werden systematisch Zwischenergebnisse gespeichert. Auch hierzu in einem späteren Beitrag mehr.</p>



<h3 class="wp-block-heading">Multiparadigmatische Programmiersprachen</h3>



<p>Eine Multiparadigmen Programmiersprache ist eine Programmiersprache, die zur Problemlösung mit verschiedenen Programmierparadigmen die geeigneten Sprachmittel besitzt.</p>



<h3 class="wp-block-heading">Java = / ≠ JavaScript</h3>



<p>Sowohl Java als auch JavaScript sind in den USA und anderen Ländern eingetragene Marken von Oracle. Sie sind aber keineswegs identisch. Obwohl sie ähnlich klingen, sind sie in Bezug auf Syntax, Semantik und Anwendung der Sprache im wirklichen Leben sehr unterschiedlich.</p>



<h3 class="wp-block-heading">Geschichte</h3>



<p>Brendan Eich (Ein Programmierer der Netscape Communication Corporation) hat JavaScript 1995 entwickelt. Offenbar brauchte er etwa 10 Tage, um Mocha zu entwickeln. Später wurde der Name der Sprache in Mona und dann in LiveScript geändert. Derzeit ist sie allgemein als JavaScript bekannt. 1996 wurde es von der ECMA übernommen, die JavaScript mit der ECMAScript Language Specification und den ECMAScript Internationalized API Spezifikationen versah. Im Jahr 2005 traten Eich und Mozilla der ECMA bei, und die JavaScript-Gemeinschaft blühte auf. Im Jahr 2016 nutzten 92 % der Websites JavaScript, von großen Tech-Giganten wie Facebook und Google bis hin zu kleinen Start-Ups, wie <a href="https://www.coezbay.com" target="_blank" rel="noreferrer noopener">meines</a>.</p>



<h3 class="wp-block-heading">Heute</h3>



<p>Derzeit wird die Sprache immer noch überall eingesetzt und ist eine der am häufigsten verwendeten clientseitigen Skriptsprachen. Von 1995 bis heute hat JavaScript einen langen Weg zurückgelegt. Heutzutage wird es innerhalb von HTML-Elementen geschrieben, um Dynamik in Webprojekten und konventionellen Desktop-Anwendungen zu ermöglichen. So ziemlich alle Echtzeit Onlinespiele beinhalten die Sprache. Viele andere Technologien wurden auf der Grundlage von JavaScript entwickelt, zum Beispiel <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/">NodeJS®</a> &#8211; welches ich in einem anderen Beitrag kurz angeschnitten habe, React &#8211; was ich in einem anderen Beitrag thematisieren werde. JavaScript ist zwar alt und hat eine komplexe Vergangenheit, doch genau diese Tatsache haben wir es zu verdanken, dass sie auch enorm großes Spektrum an Bibliotheken und Frameworks bietet. Hierzu nachfolgend mehr.</p>



<h3 class="wp-block-heading">JavaScript-Bibliotheken</h3>



<p><a href="https://dev.to/t/discuss"></a>Um die Programmierung zu erleichtern, gibt es, wie bereits erwähnt, Unmengen an sogenannter JavaScript-Bibliotheken und -Frameworks. Diese Bibliotheken werden verwendet, um Code für komplexere Funktionalitäten schneller schreiben zu können. Sie ermöglichen es Entwicklern, vorgefertigte Code-Snippets zu nutzen und eigene Code-Snippets für die zukünftige Verwendung zu erstellen und zu speichern. Wenn man solch eine Bibliothek für seine eigenen Routinen erstellt hat und Herr dieser Daten ist, sind auch Zeit- als auch Arbeitsersparnisse die daraus resultieren immens. Beispiele für JavaScript-Bibliotheken sind: jQuery, ReactJS, Google Polymer, Dojo-Toolkit und Three.js. Wobei Three.js eine browserübergreifende JavaScript-Bibliothek und gleichzeitig eine Anwendungsprogrammierschnittstelle zur Erstellung und Anzeige animierter 3D-Computergrafiken in einem Webbrowser mit WebGL darstellt. Letzteres ist eines meiner Lieblingsdinge, mit denen ich mich beruflich als auch privat gerne beschäftige.</p>



<h3 class="wp-block-heading">JavaScript-Frameworks</h3>



<p>JavaScript-Frameworks sind Vorlagen, die eine Codestruktur vorgeben, der man folgen kann. Dadurch wird die Entwicklung teilweise erleichtert. Doch gleichzeitig schränkt es einen auch in gewisser Weise ein, da man als Entwickler gewisse Regeln beachten muss. Beispiele für JavaScript-Frameworks sind. beispielsweise Vue.js, AngularJS und Apache Royale.</p>



<p>Übrigens: Wenn JavaScript ohne die Verwendung von Bibliotheken oder Frameworks geschrieben, wird es als „Vanilla-JavaScript“ bezeichnet.</p>



<h3 class="wp-block-heading">Clientseitiges JavaScript und serverseitiges JavaScript</h3>



<p>JavaScript kann sowohl clientseitig als auch serverseitig genutzt werden. Clientseitiges JavaScript ermöglicht die Manipulation von Browsern und Webseiten. Es führt das Skript im Browser des Nutzers aus und ist eine der häufigsten Verwendungsformen von JavaScript. Ich habe hierzu in einem anderen <a href="https://ceosbay.com/2022/10/30/aus-alt-mach-neu/">Beitrag</a> ein paar Zeilen geschrieben bzw. es findet in der Three.js Web-Anwendung statt, die im Header Bereich <a href="https://cagatayoezbay.com">meiner persönlichen Website</a> zum Einsatz kommt.</p>



<p>Serverseitiges JavaScript läuft nicht im Browser, sondern auf dem Server. Generell ist es weniger verbreitet als clientseitiges JavaScript. Ein Beispiel für ein beliebtes serverseitiges Scripting-Framework für JavaScript ist <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/">NodeJS®</a>.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>JavaScript ist eine der wichtigsten Programmiersprachen. Sie ist sehr dynamisch und wird sowohl in der Anwendungs-, Frontend- als auch in der Backend-Webentwicklung verwendet.</p>



<p>Angesichts der möglichen Auswirkungen auf die Geschwindigkeit und Performance der Anwendung oder Webseite ist es wichtig zu verstehen, wie JavaScript funktioniert. Anhand von Best Practices kann man lernen, effektiver zu programmieren und die Leistung seiner Anwendungen und Webseiten zu verbessern. Auch in Bezug auf SEO (Search Engine Optimization = Suchmaschinenoptimierung &#8211; Die Maßnahmen, die dazu dienen, um die Sichtbarkeit einer Webseite und ihrer Inhalte für Benutzer einer Suchmaschine bzw. die Auffindbarkeit zu erhöhen) spielt dies eine sehr große Rolle. Aber das Thema SEO werde ich in einem späteren Beitrag thematisieren.<br></p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript &#8211; Die Sprache für interaktive und dynamische Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/12/javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">510</post-id>	</item>
	</channel>
</rss>
