<?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>agimatec &#187; Prototype</title>
	<atom:link href="http://www.agimatec.de/blog/tag/prototype/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agimatec.de/blog</link>
	<description>Clash of realities</description>
	<lastBuildDate>Tue, 22 Dec 2009 16:50:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mitten aus dem Alltag</title>
		<link>http://www.agimatec.de/blog/2008/05/mitten-aus-dem-alltag/</link>
		<comments>http://www.agimatec.de/blog/2008/05/mitten-aus-dem-alltag/#comments</comments>
		<pubDate>Wed, 14 May 2008 11:14:44 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/blog/?p=111</guid>
		<description><![CDATA[Da war es wieder, eine übliche Aufgabe, die man möglichst elegant hinter sich bringen will. Heute: ein Objekt aus einem Array entfernen. pures Javascript mit for-Iterator und splice die passende Prototype-Funktion finden bekannte Prototype-Funktion entsprechend erweitern Die erste Möglichkeit hat meist noch einmal mehr Fallstricke als eigentlich gedacht. Auch in Java denkt man beim Löschen [...]]]></description>
			<content:encoded><![CDATA[<p>Da war es wieder, eine übliche Aufgabe, die man möglichst elegant hinter sich bringen will.<br />
<strong>Heute:</strong> ein Objekt aus einem Array entfernen.</p>
<ol>
<li>pures Javascript mit for-Iterator und splice</li>
<li>die passende Prototype-Funktion finden</li>
<li>bekannte Prototype-Funktion entsprechend erweitern</li>
</ol>
<p>Die erste Möglichkeit hat meist noch einmal mehr Fallstricke als eigentlich gedacht. Auch in Java denkt man beim Löschen von Elementen mit einem Iterator etwas um die Ecke. Prototype hat zwar eine Funktion <em>without</em>, diese funktioniert aber nicht bei verschiedenen Objekten, die attributweise gleich sind. Java-Konstrukte wie die Implementierung eines Interfaces Comparable sind nicht vorhanden, also bleibt eine nette Prototype-Funktion entsprechend abzuwandeln.</p>
<pre name="code" class="javascript">
this.value = this.value.reject(function(tmpValue) {
    return tmpValue[this.idProperty] === valueObject[this.idProperty];
}.bind(this));
</pre>
<p>Liest sich eigentlich ganz gut, wenn man sich schon an die ganzen Javascript-Konstrukte wie anonyme Funktionen und bind gewöhnt hat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/05/mitten-aus-dem-alltag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript-Frameworks: heute Prototype</title>
		<link>http://www.agimatec.de/blog/2008/04/javascript-frameworks-heute-prototype/</link>
		<comments>http://www.agimatec.de/blog/2008/04/javascript-frameworks-heute-prototype/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 15:44:11 +0000</pubDate>
		<dc:creator>Simon Tiffert</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://www.agimatec.de/wordpress/?p=5</guid>
		<description><![CDATA[Das Javascript-Framework Prototype stellt für uns ein Schweizer Taschenmesser in der Javascript-Entwicklung dar. Es erweitert Javascript um nützliche Methoden und Features ohne eine Lösung für alles bieten zu wollen. Wenn man Javascript programmiert, fehlen an manchen Stellen Funktionen oder Shortcuts, um schnell zu einer Lösung zu kommen. Ein Framework ist an dieser Stelle hilfreich, da [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000003390866xsmall.jpg" title="Schweizer Taschenmesser"><img src="http://www.agimatec.de/blog/wp-content/uploads/2008/04/istock_000003390866xsmall.jpg" alt="Schweizer Taschenmesser" /></a></p>
<p>Das Javascript-Framework <a href="http://www.prototypejs.org/">Prototype</a> stellt für uns ein Schweizer Taschenmesser in der Javascript-Entwicklung dar. Es erweitert Javascript um nützliche Methoden und Features ohne eine Lösung für alles bieten zu wollen. Wenn man Javascript programmiert, fehlen an manchen Stellen Funktionen oder Shortcuts, um schnell zu einer Lösung zu kommen. Ein Framework ist an dieser Stelle hilfreich, da es die Entwicklungszeit verkürzt und Fehler auch auf verschiedenen Browserplattformen vermeidet.</p>
<p><span id="more-5"></span></p>
<p>Das wohl bekannteste Element in Prototype ist das <em>$-Zeichen</em>, mit dem auf HTML-Elemente, die mit einer Id versehen sind, sehr einfach zugegriffen werden kann. Gerade wenn DOM-Manipulationen sehr häufig eingesetzt werden, erleichtert dies die  Arbeit, wenn der Code nicht zusätzlich durch <em>document.getElementById</em>() aufgebläht wird. Zudem erweitert die $-Funktion das gefundene HTML-Element um zusätzliche Prototype-Funktionen. Dazu zählt zum Beispiel die Methode <em>update()</em>, mit der der Inhalt eines DOM-Elements sauber geändert werden kann und im String enthaltene Scripte ausgeführt werden. Oft ist es bei dem Seiltanz mit Javascript ein Sicherheitsnetz, welches schwer auffindbare Fehler vermeidet. So werden Elemente auf <em>null</em> oder <em>undefined</em> überprüft, was ansonsten je nach Browser zu seltsamem Verhalten führen kann. <a href="http://www.prototypejs.org/api/utility/dollar">&#8230; mehr</a></p>
<p>Da wir häufig mit HTML-Formularen im Javascript arbeiten, sind auch in diesem Bereich die Erweiterungen von Prototype sehr willkommen.  Über die <em>$-Funktion</em> kann ein mit Id versehenes Form-Element geholt werden. Dieses wird schon vor der Rückgabe mit Formular-spezifischen Methoden angereichert. Somit können über die Methode <em>getInputs </em>alle Eingabeelemente des Formulars ausgelesen werden. Diese Form-Elemente sind wiederum von Prototype angereichert worden, weswegen über <em>getValue</em> und<em> setValue </em>direkt auf die Werte zugegriffen werden kann. Das selbe Ergebnis lässt sich auch ohne Framework erreichen, ist aber wesentlich aufwendiger. Jede Zeile weniger Code enthält auch weniger Fehler. Deswegen kann nur empfohlen werden, sich selber für häufig genutzte Bereiche Helper-Methoden zu erstellen.  Wir haben uns einen Helper erstellt, der ein Javascript-Objekt durchläuft und Daten der Attribute entweder in ein Formular schreibt oder in ein Formular ausliest. So können auch größere verschachtelte Objektgeflechte sehr einfach in Formulare übernommen werden. <a href="http://www.prototypejs.org/api/form/element">&#8230; mehr</a></p>
<p>Prototype hat auch eine einfache Template-Engine integriert. Damit ist es möglich wiederkehrende Elemente als Schablone zu hinterlegen, diese über Prototype auszulesen, mit Werten zu füllen und in den DOM zu integrieren. So kann die Logik fertig gestellt werden, während ein Webdesigner noch am Markup feilen kann. <a href="http://www.prototypejs.org/api/template">&#8230; mehr</a></p>
<p>Mächtige Stringoperationen sind immer ein wertvolles Feature einer Programmiersprache. Auch hier erweitert Prototype das Objekt <em>String </em>um weitere Funktionen. So kann zum Beispiel über die Methode <em>escapeHTML </em>das HTML für eine Ausgabe im Frontend aufbereitet werden. Über die Methode <em>stripTags </em>könnten die Tags entfernt werden, bzw. mit <em>stripScripts </em>können Skripte aus einem String entfernt werden. Zudem bietet sich sehr viel <a href="http://en.wikipedia.org/wiki/Syntactic_sugar">syntactical sugar</a> an, wie die Methoden <em>empty</em>, <em>startsWith </em>oder <em>times </em>verlauten lassen. <a href="http://www.prototypejs.org/api/string">&#8230; mehr</a></p>
<p>Wie bei allen Frameworks ist die Frage, wie sich Nutzen und die Last ausbalancieren. Entwickelt man größere Teile in Javascript, so ist Prototype ein sehr gutes Framework für die Erweiterung der Basics.</p>
<p>Neben Prototype setzen wir <a href="http://developer.yahoo.com/yui/">YUI (Yahoo User Interface)</a> für Widgets und <a href="http://getahead.org/dwr">DWR (Direct Web Remoting)</a> für den Austausch von Objekten zwischen Java und Javascript über Ajax ein. Dazu mehr in folgenden Einträgen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agimatec.de/blog/2008/04/javascript-frameworks-heute-prototype/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
