File size: 938 Bytes
ba2906a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)
    }
  }
}()