当项目开启 server.ssr 时,Modern.js 生成一个默认的 Server-Side 入口。示例代码如下:
import {
renderString,
createRequestHandler,
} from '@modern-js/runtime/ssr/server';
const handleRequest = async (request, ServerRoot, options) => {
const body = await renderString(request, <ServerRoot />, options);
return new Response(body, {
headers: {
'content-type': 'text/html; charset=utf-8',
},
});
};
export default createRequestHandler(handleRequest);如果用户需自定义 Server-Side Rendering 入口,可以在 src/entry.server.ts、src/{entryName}/entry.server.ts 中自定义 server 入口。
import {
renderString,
createRequestHandler,
} from '@modern-js/runtime/ssr/server';
import type { HandleRequest } from '@modern-js/runtime/ssr/server';
const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
// do something before rendering
const body = await renderString(request, <ServerRoot />, options);
const newBody = body + '<div>Byte-Dance</div>';
return new Response(newBody, {
headers: {
'content-type': 'text/html; charset=UTF-8',
'x-custom-header': 'abc',
},
});
};
export default createRequestHandler(handleRequest);