UNPKG

zyf-server

Version:

A modern HTTP static file server with Vue SSR directory listing, built for developers

59 lines 1.94 kB
"use strict"; /** * 模板引擎 * 处理EJS模板和Vue SSR渲染 */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TemplateEngine = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const ejs_1 = __importDefault(require("ejs")); const vue_server_renderer_1 = require("vue-server-renderer"); class TemplateEngine { ssrTemplate; ejsTemplate; vueRenderer; constructor() { // 读取模板文件 this.ssrTemplate = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../templates/template.ssr.html'), 'utf8'); this.ejsTemplate = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../templates/template.html'), 'utf8'); // 读取Vue SSR bundle const serverBundle = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../../../build/server.bundle.js'), 'utf8'); // 创建Vue SSR渲染器 this.vueRenderer = (0, vue_server_renderer_1.createBundleRenderer)(serverBundle, { template: this.ssrTemplate, }); } /** * 渲染EJS模板 */ async render(template, data) { return ejs_1.default.render(template, data); } /** * 渲染Vue SSR */ async renderVueSSR(context) { return new Promise((resolve, reject) => { this.vueRenderer.renderToString(context, (err, html) => { if (err) { reject(err); } else { resolve(html); } }); }); } /** * 渲染目录列表(使用EJS) */ async renderDirectoryListing(dirs) { return this.render(this.ejsTemplate, { dirs }); } } exports.TemplateEngine = TemplateEngine; //# sourceMappingURL=TemplateEngine.js.map