GT-Manual / lib /application /setViewEngine.js
luoyutianyang's picture
Upload 786 files
ba2906a verified
import template from 'art-template'
import { resolve } from 'node:path'
import fs from 'node:fs'
import md5 from 'md5'
export default new class SetViewEngine {
viewCache = {}
handle ({ app }) {
app.engine('html', this.renderView.bind(this))
app.set('views', resolve('public'))
app.set('view engine', 'html')
app.set('x-powered-by', false)
}
renderView (filename, opt, cb) {
try {
let tmp = md5(fs.readFileSync(filename))
let cache = this.viewCache[filename]
if (cache !== tmp) template.defaults.caches.set(filename, null)
this.viewCache[filename] = tmp
template.defaults.imports.indexCfg = Server.cfg.getConfig('page/home')
opt.cfg && (opt._cfg_base64 = Buffer.from(encodeURIComponent(JSON.stringify(opt.cfg))).toString('base64'))
let render = template.compile({ filename, debug: false })
cb(null, render(opt))
} catch (err) {
cb(err)
}
}
}()