An OOP extension to coffee-templates


Coffee Views is an extension to coffee-templates adding template inheritance and an express.js engine.

npm i --save coffee-views

# views/ 
{Base} = require 'coffee-views'
module.exports = class Layout extends Base
  # The #render() method is automatically called when rendering the view 
  render: ->
    doctype 5
    html ->
      head ->
        title @title
      body ->
        h1 @title
  stylesheets: ->
  content: ->
# views/ 
Layout = require './layout'
module.exports = class MyView extends Layout
  content: ->
    div ->
      p 'This is my view'
View = require './views/myview'
view = new View title: 'My Site'
console.log view.render()
# using the templates in the previous example 
# ... 
app = express()
app.configure ->
  app.engine 'coffee'require('coffee-views').engine
  app.set 'view engine''coffee'
  app.set 'views'path.join(__dirname'views')
# ... 
app.get '/'(req, res)->
  res.render 'myview',
    title: 'My Site'

Due to the nature of coffee-templates, CoffeeScript's native super() method cannot be used. Instead, you can use a parent([methodName]) function:

class MyExtendedView extends MyView
  content: ->
    literal parent 'content'
    div ->
      p 'This is an extension to "MyView"'