@patrtorg/corrupti-dicta v3.9.100
Hapi JSON View 
A view engine for the hapi framework.
Installation
npm install --save @nesive/hapi-json-view
Usage
server.js:
const Hapi = require('hapi');
const HapiJsonView = require('@nesive/hapi-json-view');
const Path = require('path');
const Vision = require('vision');
const server = new Hapi.Server();
server.connection({ port: 8080 });
server.register(Vision, (err) => {
if (err) throw err;
server.views({
engines: {
js: {
module: HapiJsonView.create(),
contentType: 'application/json',
}
},
path: Path.join(__dirname, 'templates'),
});
server.route({
method: 'GET',
path: '/article',
handler: function(request, reply) {
const article = {
_id: '507f1f77bcf86cd799439011',
title: 'Node.js',
author: {
_id: '507f191e810c19729de860ea',
name: 'John Doe',
},
};
reply.view('article', { article: article });
},
});
});
templates/article.js:
json.set('title', article.title);
json.set('author', (json) => {
json.set('name', article.author.name);
});
This template generates the following object:
{
title: 'Node.js',
author: {
name: 'John Doe'
}
}
Functions
set()
It assigns a value to a key.
json.set('title', 'Node.js');
// => { title: 'Node.js' }
The value can be a function. If json.set()
is called with a key, it creates an object:
json.set('author', (json) => {
json.set('name', 'John Doe');
});
// => { author: { name: 'John Doe' } }
If json.set()
is called without a key, it assign the value to the parent key:
json.set('title', (json) => {
json.set('Node.js');
});
// => { title: 'Node.js' }
array()
It creates a new array by iterating through an existing array:
const numbers = ['one', 'two'];
json.set('numbers', json.array(numbers, (json, number) => {
json.set('number', number);
}));
// => { numbers: [{ number: 'one' }, { number: 'two' }] }
extract()
It extracts values from an object and assigns them to the result object:
const numbers = { one: 'one', two: 'two', three: 'three' };
json.extract(numbers, ['two', 'three']);
// => { two: 'two', three: 'three' }
helper()
Helpers can be registered through the engine configuration:
const Hapi = require('hapi');
const HapiJsonView = require('@nesive/hapi-json-view');
const Path = require('path');
const Vision = require('vision');
const server = new Hapi.Server();
server.connection({ port: 8080 });
server.register(Vision, (err) => {
if (err) throw err;
server.views({
engines: {
js: {
module: HapiJsonView.create(),
contentType: 'application/json',
}
},
path: Path.join(__dirname, 'templates'),
helpersPath: Path.join(__dirname, 'templates/helpers'),
});
});
They can then be used by their name:
json.set('title', json.helper('uppercase', article.title));
partial()
Partials can be registered through the engine configuration:
const Hapi = require('hapi');
const HapiJsonView = require('@nesive/hapi-json-view');
const Path = require('path');
const Vision = require('vision');
const server = new Hapi.Server();
server.connection({ port: 8080 });
server.register(Vision, (err) => {
if (err) throw err;
server.views({
engines: {
js: {
module: HapiJsonView.create(),
contentType: 'application/json',
}
},
path: Path.join(__dirname, 'templates'),
partialsPath: Path.join(__dirname, 'templates/partials'),
});
});
They can then be used by their name:
json.set('author', json.partial('author', { author: article.author }));
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
10 months ago
11 months ago
11 months ago
10 months ago
10 months ago
11 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago