@srejs/vue
Version:
@srejs/vue是一个轻量级服务端渲染骨架工具,为koa社区的nodejs开发框架提供具有服务端渲染能力的工具包,使得类似umajs类的web开发框架可以更方便实现前后端同构的服务端渲染能力。特点:轻量级,模板式调用页面进行服务端渲染,不限制后端路由。
39 lines (38 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sendHTML = sendHTML;
var _etag = require("etag");
var _fresh = require("fresh");
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function sendHTML(ctx, html, _ref) {
var generateEtags = _ref.generateEtags;
var req = ctx.req,
res = ctx.res;
function isResSent(res) {
return res.finished || res.headersSent;
}
if (isResSent(res)) return;
if (_typeof(html) == 'object') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html; charset=utf-8');
ctx.body = html;
} else {
var etag = generateEtags ? _etag(html) : undefined;
if (_fresh(req.headers, {
etag: etag
})) {
res.statusCode = 304;
res.end();
return;
}
if (etag) {
res.setHeader('ETag', etag);
}
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('Content-Length', Buffer.byteLength(html));
res.end(req.method === 'HEAD' ? null : html);
}
}