feat: add SSR and prerendering support #7
@@ -4,8 +4,13 @@ import {
|
||||
isMainModule,
|
||||
writeResponseToNodeResponse,
|
||||
} from '@angular/ssr/node';
|
||||
import { AngularAppEngine } from '@angular/ssr';
|
||||
import * as http from 'node:http';
|
||||
|
||||
// Enable serving prerendered static HTML from disk. Without this flag the
|
||||
// engine falls back to SSR for every route, ignoring the prerendered output.
|
||||
AngularAppEngine.ɵallowStaticRouteRender = true;
|
||||
|
||||
/**
|
||||
* Public routes prerendered at build time (SSG — Static Site Generation).
|
||||
* These five routes are compiled to static HTML during `ng build` and
|
||||
@@ -53,7 +58,7 @@ function getEngine(): AngularNodeAppEngine {
|
||||
* as pre-generated static HTML from the build output. All other routes
|
||||
* fall back to server-side rendering (SSR) or the fallback 404 handler.
|
||||
*/
|
||||
export default createNodeRequestHandler(async (req, res, next) => {
|
||||
const requestHandler = createNodeRequestHandler(async (req, res, next) => {
|
||||
try {
|
||||
const prerendered = isPrerenderedRoute(req.url || '/');
|
||||
if (prerendered) {
|
||||
@@ -76,11 +81,12 @@ export default createNodeRequestHandler(async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
export default requestHandler;
|
||||
|
||||
if (isMainModule(import.meta.url)) {
|
||||
const httpServer = http.createServer();
|
||||
httpServer.on('request', async (req: http.IncomingMessage, res: http.ServerResponse) => {
|
||||
const handler = (await import('./server.js')).default;
|
||||
handler(req, res, () => {
|
||||
requestHandler(req, res, () => {
|
||||
res.statusCode = 404;
|
||||
res.end('Not Found');
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user