Frameworks, frameworks, frameworks…

Ongelooflijk om je nog eens te verdiepen in de “hippe” front-end frameworks. Meestal JavaScript-based, wat toch een ander programming model (asynchroon, event-based) is waar even aan gewend moet worden.

Hoewel ik eerst dacht er met node.js en een DB-module voor MongoDB te zullen geraken, bleek dat vrij naïef. Om niet zelf een webserver te moeten opzetten werd Express ingeschakeld, wat eigenlijk een beetje een standaard lijkt te zijn bij het werken met Node. Om HTML te renderen, gebruikt Express standaard een template engine, Jade genaamd. Deze voert echter een andere syntax in, die dan omgezet wordt in HTML. Het voordeel daarvan ontgaat me volledig, en de syntax is dan nog eens positie-gevoelig (als je een indent van 3 spaties ipv 2 spaties gebruikt kan hij er al niet meer aan uit), waardoor ik er al helemaal niet aan wou beginnen. Gelukkig kan je in Express andere template engines opgeven, waarvan Hogan me het meeste leek aan te staan. Eigenlijk schrijf je gewoon HTML, en voeg je variabele waarden toe volgens de Moustache.js manier (ook dat framework moest dan eens bekeken worden). Eigenlijk een makkelijke manier van redeneren als je server-side PHP gewoon bent.

De UI leek dus in orde te komen. Langs de DB-kant is er ook wat gezocht. Er lijken 3 voorname package-opties te zijn voor het gebruik van MongoDB binnen Node.js: mongodb, monk en mongoose. mongodb deed me het meeste denken aan een gewone DB-driver, waarbij je letterlijk vanuit node je DB aansprak. Het tegenovergestelde leek Mongoose te zijn, wat voorgesteld wordt als een echte object-relational mapper (ORM). Monk zit er wat tussenin. Voorlopig ben ik gesetteld voor Mongoose. Deze leek het simpelste in configuratie en gebruik, hoewel hij ook zijn eigen complexiteit meebrengt.

Op basis van deze frameworks begon ik de ebook-server op te bouwen. Al snel had ik een REST-api voor de DB draaiende, op basis van Node, Express en Mongoose. So far so good. Bij het ontwikkelen van de UI bleek toch dat de opbouw die ik in gedachten had tot een vrij complexe structuur leidde, die me niet ideaal leek. Veel van wat in de UI gebeurde, werd terug naar de server gestuurd, die een nieuwe template moest renderen, enz. Het leek logischer om meer van die template-logica bij de UI in de browser te houden. Vandaar: nieuw framework: Knockout.js. Dit levert een variant op het Model-View-Controller patroon, wat ze een model-view-viewmodel noemen. Op deze manier kan ik aan de DB-kant enkel de REST-services doen, en de UI-kant hier koppelen via AJAX-calls.

De huidige koers ligt dus voor de server-side: node + express + mongoose (en hogan, maar die doet eigenlijk niets), en voor de client-side: jquery + knockout + bootstrap (voor snelle styling).

Zoals gezegd, ik wou wat bijleren, maar moest ik bij Apache, MySQL, PHP en HTML gebleven zijn zou het al wel lang klaar geweest zijn 🙂 Natuurlijk, dan waren er geen REST services of one-page-apps. En minder fun 🙂

Advertisements
Frameworks, frameworks, frameworks…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s