yahoi
Version:
Yet Another Highly Opinionated Isomorphic Framework
140 lines (115 loc) • 2.78 kB
JavaScript
import { Controller } from 'yahoi';
const ExampleLinks = [
{
title: 'Render-String-1',
url: '/examples/render-string-1?name=World'
},
{
title: 'Render-String-2',
url: '/examples/render-string-2?name=World'
},
{
title: 'Render-Json-1',
url: '/examples/render-json-1'
},
{
title: 'Render-Json-2',
url: '/examples/render-json-2'
},
{
title: 'Render-View-1',
url: '/examples/render-view-1/World'
},
{
title: 'Render-View-2',
url: '/examples/render-view-2/World'
},
{
title: 'Redirect',
url: '/examples/redirect'
},
{
title: 'React Rlient',
url: '/examples/client'
},
];
export default class ExampleController extends Controller {
constructor(props) {
super(props);
this.config.environment = this.getEnvironment();
}
IndexAction(parameters) {
//todo (what if view is not found?)
this.sendView('Examples/index', {});
}
// String Renderer
async RenderString1Action(parameters) {
// Parameter validation
this.require({
name: this.Joi.string().min(3).required()
});
if(parameters.areValid()) {
let string = await this.renderString("Hello {{ name }}", { name: parameters.get('name')});
this.send(string);
}
}
RenderString2Action(parameters) {
// Parameter validation
this.require({
name: this.Joi.string().min(3).required()
});
if(parameters.areValid()) {
this.sendString("Hello {{ name }}", { name: parameters.get('name') });
}
}
//Json
async RenderJson1Action(parameters) {
let json = await this.renderJson({
payload: {
id: 100,
progress: 37,
status: 'initiated'
}
});
this.send(json);
}
RenderJson2Action(parameters) {
this.sendJson({
payload: {
id: 100,
progress: 37,
status: 'initiated'
}
});
}
//View
async RenderView1Action(parameters) {
// Parameter validation
this.require({
name: this.Joi.string().min(3).required()
});
if(parameters.areValid()) {
let view = await this.renderView('Examples/exampleView', { name: parameters.get('name') });
this.send(view);
}
}
RenderView2Action(parameters) {
// Parameter validation
this.require({
name: this.Joi.string().min(3).required()
});
if(parameters.areValid()) {
this.sendView('Examples/exampleView', { name: parameters.get('name') });
}
}
//Client
ClientAction(parameters) {
this.sendClient({ state: { Example: {
exampleLinks: ExampleLinks
}}})
}
//Redirect
RedirectAction(parameters) {
this.redirect('http://www.google.com');
}
}