waveorb
Version:
Waveorb Javascript web app development framework
35 lines (26 loc) • 770 B
JavaScript
const lodash = require('lodash')
const compile = require('./compile.js')
module.exports = async function page($) {
const name = $.req.route
let page = name && lodash.get($.app.pages, name.split('/'))
// Check for 404 page
if (!page && $.res.getHeader('content-type')?.startsWith('text/html')) {
page = lodash.get($.app.pages, '404')
}
if (!page) return
// Set up content
$.page = { name }
$.page.content = await page($)
if ($.req.redirecting) return ''
if ($.page.layout !== false) {
const layoutName = $.page.layout || 'main'
const layout = lodash.get($.app.layouts, layoutName)
if (layout) {
$.page.content = await layout($)
}
}
if ($.app.config?.env?.compile) {
compile($)
}
return $.page.content
}