diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..9765e25 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ + +node_modules/ +coverage/ +public/ +views/ diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/index.js b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/index.js new file mode 100755 index 0000000..853cc45 --- /dev/null +++ b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/index.js @@ -0,0 +1,52 @@ +#!/usr/bin/env node + +'use strict' + +const Koa = require('koa') +const Router = require('koa-router') +const bodyParser = require('koa-bodyparser') +const views = require('koa-views') + +const app = new Koa() +app.use(bodyParser()) +app.use(require('koa-static')('public')) + +app.use(views(`${__dirname}/views`, { extension: 'handlebars' }, { + map: { + handlebars: 'handlebars' + } +})) + +const router = new Router() + +const port = 8080 + +router.get('/', async ctx => { + await ctx.render('home') +}) + +router.get('/date', async ctx => { + const d = new Date() + const date = `${d.getDate()}/${d.getMonth()+1}/${d.getFullYear()}` + const data = { + title: 'My First Template', + today: date + } + await ctx.render('date', data) +}) + +router.get('/food', async ctx => { + const food = [ + {name: 'bread', qty: 5}, + {name: 'butter', qty: 2}, + {name: 'jam', qty: 1}, + {name: 'cheese', qty: 4} + ] + await ctx.render('food', {myFood: food}) +}) + +app.use(router.routes()) +app.use(router.allowedMethods()) +const server = app.listen(port) + +module.exports = server diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/css/style.css b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/css/style.css new file mode 100644 index 0000000..06b8fe1 --- /dev/null +++ b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/css/style.css @@ -0,0 +1,12 @@ + +p, h2 { + font-family: verdana, sans-serif; +} + +h2 { + color: #666; +} + +img { + float: right; +} \ No newline at end of file diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_big.png b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_big.png new file mode 100644 index 0000000..b10e668 Binary files /dev/null and b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_big.png differ diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_small.png b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_small.png new file mode 100644 index 0000000..dce0e2b Binary files /dev/null and b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/public/images/clock_small.png differ diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/date.handlebars b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/date.handlebars new file mode 100644 index 0000000..a4dffad --- /dev/null +++ b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/date.handlebars @@ -0,0 +1,11 @@ + + + + + {{title}} + + +

{{title}}

+

This server date is {{today}}

+ + diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/food.handlebars b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/food.handlebars new file mode 100644 index 0000000..f04541e --- /dev/null +++ b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/food.handlebars @@ -0,0 +1,15 @@ + + + + + {{title}} + + +

My Favourite Food

+
    + {{#each myFood}} +
  1. {{this.name}}
  2. + {{/each}} +
+ + diff --git a/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/home.handlebars b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/home.handlebars new file mode 100644 index 0000000..b6bb1d8 --- /dev/null +++ b/exercises/01_nodejs/01_templates_forms/simple_templating_koa/views/home.handlebars @@ -0,0 +1,12 @@ + + + + + {{name}} + + +

Handlebars

+

+

This page has been generated by the Handlebars template engine.

+ +