Skip to content

linaGirl/ee-templates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#EE-Templates Templating integration for Nunjucks (Middleware)

##Middleware The middleware can be hooked into the application stack and will append a render(status, headers, data, callback) method to the original http response (or any kind of response which adheres to the interface defined for response in ee-webserver). The renderer method contains a renderer resolved based on the accept headers, which renders the passed content into an appropriate representation for the http protocol (properly supperted at the moment: text/html or application/json).

##Renderers Currently there are only two supported renderers: HTML and JSON. The environments (nunjucks) are application specific and need to be passed to the middleware.

###HTMLRenderer The HTMLRenderer is a wrapper for nunjucks. It creates a new environment based on the domain of the request and loads the template which has to be set on the request (in our case resolved by the rewriting middleware).

###DefaultRenderer The DefaultRenderer uses JSON.stringify and converts the passed data to a string.

##Templating Extensions The templating extensions originally provided by this package were moved to their own packages ee-soa-extension-api and ee-soa-extension-locale. Since environments now are passed into the middleware, the dependency is removed and extensions are directly attached by the running application.

##Todo

  • Add a better loader which allows loading the templates asynchronously
  • Improve handling of the mapping between the accept header and the renderer.

##Media Types Further readings

##Changelog

v0.2.0

  • the render method of the response now directly writes the data back to the original response
  • the renderers now directly write their assigned content type to the response
  • the renderers directly create server errors if the rendering created an error
  • therefore the API has slightly changed from render(data, callback) to render(status, headers, data, callback)