Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dzns/es6views

View Engine for ExpressJS. Write your views using ES6 Template Strings. Simple, fast, extensible.
https://github.com/dzns/es6views

engine es6 expressjs view

Last synced: about 1 month ago
JSON representation

View Engine for ExpressJS. Write your views using ES6 Template Strings. Simple, fast, extensible.

Awesome Lists containing this project

README

        

# ES6Views
View Engine for ExpressJS. Write your views using ES6 Template Strings. Simple, fast, extensible.

### Installation
```
npm install --save es6views
```

### Usage
```js
// where ever you setup your view engine for ExpressJS
const esviews = require("es6views")
esviews.viewEngine(app)
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'es6')
```

### Templates
First off, create your base layout which will hold all the common logic for your views
```js
const Layout = require("es6views").Layout

class MyLayout extends Layout {

parse() {
let markup = `
${this._data.title}

`

markup += [this.header(), this.content(), this.footer()].join("")

markup += ``

this._markup = markup
}

header () {
const data = this.data
return `${data.title}`
}

content () {
return ``
}

footer () {
return `2008-${(new Date()).getFullYear() Dezine Zync Studios. All Rights Reserved.}`
}

}

module.exports = MyLayout
```

Then, inside a page template, you can do the following:
```js
const MyLayout = require('./mylayout.es6')

class Posts extends MyLayout {
content () {
const data = this.data
const posts = data.posts

return posts.map(post => {
return `${post.body}`
}).join("")
}
}

module.exports = Posts
```

You can then use it in your route like so:
```js
router.get('/posts', (req, res) => {
let locals = Object.assign({}, res.locals, {
posts: posts
})
res.render('projects', locals)
})
```