Using VIE for server-side templating
In our Palsu collaborative meeting tool we’re using VIE for server-side page generation. This effectively means RDFa is our templating language. The CoffeeScript looks like the following:
# Serve the list of meetings
server.get '/dashboard', (request, response) ->
# Read our HTML template file
return fs.readFile "#{process.cwd()}/templates/index.html", "utf-8", (err, data) ->
# Prepare a JSDOM window for the template
document = jsdom.jsdom data
window = document.createWindow()
jQ = jQuery.create window
# Find RDFa entities and load them
VIE.RDFaEntities.getInstances jQ "*"
# Get the Calendar object
calendar = VIE.EntityManager.getBySubject 'urn:uuid:e1191010-5bb1-11e0-80e3-0800200c9a66'
# Query for events that have the calendar as component
events = calendar.get 'rdfcal:has_component'
events.predicate = "rdfcal:component"
events.object = calendar.id
return events.fetch
success: (eventCollection) ->
VIE.cleanup()
return response.send window.document.innerHTML
error: (collection, error) ->
VIE.cleanup()
return response.send window.document.innerHTML
While this isn’t the most elegant example of page generation with Express, the obvious benefit of RDFa as templating language is there: don’t repeat yourself. The same templating mark-up serves as templating on the server-side, client-side and for SEO and integration purposes.