Heute neigt sich unser diesj\u00e4hriger Sprint dem Ende. Am Dienstag sind wir gen Norden auf die Insel R\u00fcgen gefahren, um uns f\u00fcr 3 Tage intensiv dar\u00fcber zu unterhalten, wie wir in Zukunft Software entwickeln wollen. Der Fokus lag dabei auf der Client-Seite, also dem Teil der Anwendung, der im Browser ausgef\u00fchrt wird. Hier wollen wir weitere Erfahrung sammeln und Konzepte suchen, wie man wart- und testbaren, strukturierten Code schreibt.<\/p>\n
Im Vorfeld haben wir uns auf drei JavaScript Frameworks\/Bibliotheken geeinigt, die wir uns dann am Mittwoch in drei Gruppen \u00e0\u00a0zwei Personen intensiv\u00a0angeschaut haben:\u00a0Ember<\/a>, Obviel<\/a>\u00a0und\u00a0Backbone<\/a>. Neben Dokumentation lesen und Tutorials ausprobieren haben wir auch gegen einen selbst-gestrickten “Spielserver” programmiert, um durch die praktische Erfahrung ein Gef\u00fchl f\u00fcr die Konzepte hinter dem Framework zu bekommen und einsch\u00e4tzen zu k\u00f6nnen, inwieweit sich das Framework in unserem Alltag einsetzen l\u00e4sst.<\/p>\n
Ember<\/strong> hat uns f\u00fcr den Einsatz bei “Gr\u00fcne Wiese”-Projekten begeistert. Durch die strikte Trennung von Model, View und Controller (MVC) schreibt man nicht nur automatisch saubereren, sondern auch testbaren Code. Das Objekt-Modell bringt automatisierte, bidirektionale Aktualisierung zwischen Model und View mit, und f\u00fcr die Speicherung auf dem Server gibt es ein kleines, gut integriertes\u00a0REST-Plugin<\/a>. Der Aufwand, eine funktionierende CRUD-Anwendung, die \u00c4nderungen automatisch an den Server propagiert, zu entwickeln, ist mit Ember erstaunlich gering. Auch wie Ember es erlaubt, seine Klassen zu beerben, ist uns positiv aufgefallen. Leider haben wir es nicht geschafft, zwei Ember-Anwendungen auf einer Seite zu laden. Auch ist die Dokumentation<\/a> noch recht d\u00fcnn, was daran liegen d\u00fcrfte, dass Ember noch ein junges Produkt ist.<\/p>\n
Hilfreiche Links zu Ember:<\/p>\n
Obviel<\/strong> ist streng genommen unser eigenes “Kind”, denn erste Ideen dazu\u00a0entstanden im Jahre 2008 bei gocept. Obviel ist ein Client-seitiges Web-Framework f\u00fcr jQuery mit einem einfachen, aber genialen Prinzip: f\u00fcr ein JavaScript-Ob<\/strong>jekt rendert man einen Vi<\/strong>ew in einem El<\/strong>ement. Dreh- und Angelpunkt bei Obviel sind die\u00a0Interfaces<\/em>, die definieren, wie ein View Objekte, die das Interface implementieren, rendert. Entwickler, die mit der Komponenten-Architektur von Zope<\/a> vertraut sind, werden keine Probleme haben, Obviel zu verstehen. Weiterhin l\u00e4sst sich Obviel problemlos in bestehende Projekte integrieren, es enth\u00e4lt Unterst\u00fctzung f\u00fcr Internationalisierung (i18n), Forms mit Validierung, verschiedene Template-Engines, Subviews, \u2026<\/p>\n
Backbone\u00a0<\/strong>unterst\u00fctzt den Entwickler bei der Strukturierung seiner Webanwendungen durch in Code gegossene Konventionen. Es wirkt sehr fokussiert, denn es tut nicht wirklich viel, aber das Wenige tut es sehr sinnvoll. Backbone ist, im Gegensatz zu Ember, sehr gut dokumentiert<\/a>, l\u00f6st aber im Moment keines unserer Probleme. Da Backbone insbesondere keine Unterst\u00fctzung f\u00fcr data binding bietet, haben wir noch Knockout <\/strong>und\u00a0Rivets\u00a0<\/strong>ins Spiel gebracht. F\u00fcr ersteres steht mit Knockback <\/strong>der \u201eGlue-Code\u201c, um die Frameworks miteinander zu verheiraten,\u00a0schon zur Verf\u00fcgung, f\u00fcr letzteres mussten wir ihn uns aus der Dokumentation<\/a> und dem Issue-Tracker<\/a> des Projekts zusammensuchen.<\/p>\n
Weiterf\u00fchrende Links:<\/p>\n
Ein\u00a0Fazit<\/strong> zu ziehen f\u00e4llt uns nicht leicht: Ember behalten wir f\u00fcr das n\u00e4chste “Gr\u00fcne Wiese”-Projekt auf jeden Fall im Auge. Da uns Backbone und Knockout\/Rivets nicht \u00fcberzeugen konnten, haben wir uns noch spontan AngularJS<\/strong> angeschaut – aber auch hier ist im Moment die Ern\u00fcchterung gro\u00df: Persistieren von Daten ist ein ungel\u00f6stes Problem, die Watcher auf dem Model (data binding) feuern nur unregelm\u00e4\u00dfig oder viel zu oft<\/a>.\u00a0Nach l\u00e4ngerem Probieren haben wir herausgefunden, dass wir eine eigene Direktive<\/a>\u00a0schreiben m\u00fcssen, die sich um die Persistierung k\u00fcmmert.<\/p>\n
<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"
Heute neigt sich unser diesj\u00e4hriger Sprint dem Ende. Am Dienstag sind wir gen Norden auf die Insel R\u00fcgen gefahren, um uns f\u00fcr 3 Tage intensiv dar\u00fcber zu unterhalten, wie wir in Zukunft Software entwickeln wollen. Der Fokus lag dabei auf der Client-Seite, also dem Teil der Anwendung, der im Browser ausgef\u00fchrt wird. Hier wollen wir … Continue reading “Notizen aus dem Norden”<\/span><\/a><\/p>\n","protected":false},"author":2072375,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[70186],"tags":[199864,457,22272],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pFP3y-4w","jetpack-related-posts":[{"id":252,"url":"https:\/\/blog.gocept.com\/2012\/11\/03\/gocept-developer-punsch-3\/","url_meta":{"origin":280,"position":0},"title":"gocept Developer Punsch 3","author":"Daniel Havlik","date":"November 3, 2012","format":false,"excerpt":"Nachdem wir dieses Jahr bereits zwei \"Developer-BBQs\" veranstaltet haben, laden wir am Freitag, 7.12.2012 ab 14:00 Uhr ein weiteres Mal in unser B\u00fcro ein. Jahreszeitenbedingt unter dem Titel \"Developer-Punsch\"! Die Veranstaltung richtet sich wie immer an alle (Web-)Entwickler und Sysadmins, die wie wir gerne mal \u00fcber den Tellerrand schauen. In\u2026","rel":"","context":"In "de"","block_context":{"text":"de","link":"https:\/\/blog.gocept.com\/category\/de\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":209,"url":"https:\/\/blog.gocept.com\/2012\/08\/28\/gocept-developer-bbq-2\/","url_meta":{"origin":280,"position":1},"title":"gocept-Developer-BBQ 2","author":"Daniel Havlik","date":"August 28, 2012","format":false,"excerpt":"Unser erstes BBQ (R\u00fcckblick BBQ 1) war inhaltlich und kulinarisch ein voller Erfolg, und soll nun am Freitag, 14. September ab 14 Uhr seine Fortsetzung finden. Also, alle (Web-)Entwickler und Sysadmins die wie wir gerne mal \u00fcber den Tellerrand schauen, sind herzlich eingeladen. In einem an Open Space angelehnten Format\u2026","rel":"","context":"In "de"","block_context":{"text":"de","link":"https:\/\/blog.gocept.com\/category\/de\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":187,"url":"https:\/\/blog.gocept.com\/2012\/05\/31\/einladung-zu-unkonferenzcampmeetup-und-bbq-am-29-6-2012\/","url_meta":{"origin":280,"position":2},"title":"Einladung zu Un(konferenz|camp|meetup) und BBQ am 29.6.2012","author":"Daniel Havlik","date":"May 31, 2012","format":false,"excerpt":"(We are addressing a local audience near our offices so we are keeping this post in German. Sorry. Basically we want developers and admins in our area to meet up, exchange ideas, and enjoy BBQ and beer.)