UNPKG

node-web-mvc

Version:
43 lines (42 loc) 1.55 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ViewNotFoundError_1 = __importDefault(require("../../errors/ViewNotFoundError")); const View_1 = __importDefault(require("./View")); class ViewRender { constructor(viewResolverRegistry) { this.viewResolverRegistry = viewResolverRegistry; } async render(mv, servletContext) { const { request, response } = servletContext; if (response.headersSent) { // 如果前置流程已处理了返回 return; } // 查找视图 const view = this.resolveView(mv, servletContext); if (mv.status) { servletContext.response.setStatus(mv.status); } // 渲染视图 return view.render(mv.model, request, response); } resolveView(mv, servletContext) { const { request } = servletContext; const viewResolvers = this.viewResolverRegistry.viewResolvers; if (mv.view instanceof View_1.default) { return mv.view; } for (const resolver of viewResolvers) { const view = resolver.resolveViewName(mv.view, mv.model, request); if (view) { return view; } } // 如果没有查到视图,则抛出异常 throw new ViewNotFoundError_1.default(mv.view || '\'\''); } } exports.default = ViewRender;