Skip to content

Commit c30e369

Browse files
committed
refactor(@angular/ssr): remove express engine
This removes the util function for express, instead the "CommonEngine" is called directly infuture before this package is final we might rename the "CommonEngine" to something else.
1 parent f9372ac commit c30e369

File tree

7 files changed

+83
-120
lines changed

7 files changed

+83
-120
lines changed

packages/angular/ssr/public_api.ts

-5
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,3 @@
77
*/
88

99
export { CommonEngine, CommonEngineRenderOptions } from './src/common-engine';
10-
export {
11-
ngExpressEngine,
12-
NgExpressEngineOptions,
13-
NgExpressEngineRenderOptions,
14-
} from './src/express-engine';

packages/angular/ssr/schematics/ng-add/files/server.ts.template

+17-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'zone.js/node';
22

33
import { APP_BASE_HREF } from '@angular/common';
4-
import { ngExpressEngine } from '@angular/ssr';
4+
import { CommonEngine } from '@angular/ssr';
55
import * as express from 'express';
66
import { existsSync } from 'node:fs';
77
import { join } from 'node:path';
@@ -11,12 +11,11 @@ import <% if (isStandalone) { %>bootstrap<% } else { %>{ AppServerModule }<% } %
1111
export function app(): express.Express {
1212
const server = express();
1313
const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
14-
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
14+
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
15+
? join(distFolder, 'index.original.html')
16+
: join(distFolder, 'index.html');
1517

16-
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine)
17-
server.engine('html', ngExpressEngine({
18-
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>
19-
}));
18+
const commonEngine = new CommonEngine();
2019

2120
server.set('view engine', 'html');
2221
server.set('views', distFolder);
@@ -28,12 +27,18 @@ export function app(): express.Express {
2827
maxAge: '1y'
2928
}));
3029

31-
// All regular routes use the Universal engine
32-
server.get('*', (req, res) => {
33-
res.render(indexHtml, {
34-
url: req.originalUrl,
35-
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
36-
});
30+
// All regular routes use the Angular engine
31+
server.get('*', (req, res, next) => {
32+
commonEngine
33+
.render({
34+
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
35+
documentFilePath: indexHtml,
36+
url: req.originalUrl,
37+
publicPath: distFolder,
38+
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
39+
})
40+
.then((html) => res.send(html))
41+
.catch((err) => next(err));
3742
});
3843

3944
return server;

packages/angular/ssr/schematics/ng-add/index_spec.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,8 @@ describe('Universal Schematic', () => {
111111
const filePath = '/projects/test-app/server.ts';
112112
const content = tree.readContent(filePath);
113113
expect(tags.oneLine`${content}`).toContain(tags.oneLine`
114-
ngExpressEngine({
115-
bootstrap: AppServerModule
116-
}));
114+
.render({
115+
bootstrap: AppServerModule,
117116
`);
118117
});
119118
});
@@ -150,9 +149,8 @@ describe('Universal Schematic', () => {
150149
const filePath = '/projects/test-app/server.ts';
151150
const content = tree.readContent(filePath);
152151
expect(tags.oneLine`${content}`).toContain(tags.oneLine`
153-
ngExpressEngine({
154-
bootstrap
155-
}));
152+
.render({
153+
bootstrap,
156154
`);
157155
});
158156
});

packages/angular/ssr/src/express-engine.ts

-47
This file was deleted.

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts

+14-10
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,16 @@ describe('Serve SSR Builder', () => {
2626
'src/main.server.ts': `
2727
import 'zone.js/node';
2828
29-
import { ngExpressEngine } from '@angular/ssr';
29+
import { CommonEngine } from '@angular/ssr';
3030
import * as express from 'express';
31-
import { resolve } from 'node:path';
31+
import { resolve, join } from 'node:path';
3232
import { AppServerModule } from './app/app.module.server';
3333
3434
export function app(): express.Express {
3535
const server = express();
3636
const distFolder = resolve(__dirname, '../dist');
37-
38-
server.engine('html', ngExpressEngine({
39-
bootstrap: AppServerModule
40-
}));
37+
const indexHtml = join(distFolder, 'index.html');
38+
const commonEngine = new CommonEngine();
4139
4240
server.set('view engine', 'html');
4341
server.set('views', distFolder);
@@ -46,10 +44,16 @@ describe('Serve SSR Builder', () => {
4644
maxAge: '1y'
4745
}));
4846
49-
server.get('*', (req, res) => {
50-
res.render('index', {
51-
url: req.originalUrl,
52-
});
47+
server.get('*', (req, res, next) => {
48+
commonEngine
49+
.render({
50+
bootstrap: AppServerModule,
51+
documentFilePath: indexHtml,
52+
url: req.originalUrl,
53+
publicPath: distFolder,
54+
})
55+
.then((html) => res.send(html))
56+
.catch((err) => next(err));
5357
});
5458
5559
return server;

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts

+14-10
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,16 @@ describe('Serve SSR Builder', () => {
2626
'src/main.server.ts': `
2727
import 'zone.js/node';
2828
29-
import { ngExpressEngine } from '@angular/ssr';
29+
import { CommonEngine } from '@angular/ssr';
3030
import * as express from 'express';
31-
import { resolve } from 'node:path';
31+
import { resolve, join } from 'node:path';
3232
import { AppServerModule } from './app/app.module.server';
3333
3434
export function app(): express.Express {
3535
const server = express();
3636
const distFolder = resolve(__dirname, '../dist');
37-
38-
server.engine('html', ngExpressEngine({
39-
bootstrap: AppServerModule
40-
}));
37+
const indexHtml = join(distFolder, 'index.html');
38+
const commonEngine = new CommonEngine();
4139
4240
server.set('view engine', 'html');
4341
server.set('views', distFolder);
@@ -46,10 +44,16 @@ describe('Serve SSR Builder', () => {
4644
maxAge: '1y'
4745
}));
4846
49-
server.get('*', (req, res) => {
50-
res.render('index', {
51-
url: req.originalUrl,
52-
});
47+
server.get('*', (req, res, next) => {
48+
commonEngine
49+
.render({
50+
bootstrap: AppServerModule,
51+
documentFilePath: indexHtml,
52+
url: req.originalUrl,
53+
publicPath: distFolder,
54+
})
55+
.then((html) => res.send(html))
56+
.catch((err) => next(err));
5357
});
5458
5559
return server;

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts

+34-30
Original file line numberDiff line numberDiff line change
@@ -23,40 +23,44 @@ describe('Serve SSR Builder', () => {
2323

2424
host.writeMultipleFiles({
2525
'src/main.server.ts': `
26-
import 'zone.js/node';
27-
28-
import { ngExpressEngine } from '@angular/ssr';
29-
import * as express from 'express';
30-
import { resolve } from 'node:path';
31-
import { AppServerModule } from './app/app.module.server';
32-
33-
export function app(): express.Express {
34-
const server = express();
35-
const distFolder = resolve(__dirname, '../dist');
36-
37-
server.engine('html', ngExpressEngine({
38-
bootstrap: AppServerModule
39-
}));
40-
41-
server.set('view engine', 'html');
42-
server.set('views', distFolder);
43-
44-
server.get('*.*', express.static(distFolder, {
45-
maxAge: '1y'
46-
}));
47-
48-
server.get('*', (req, res) => {
49-
res.render('index', {
26+
import 'zone.js/node';
27+
28+
import { CommonEngine } from '@angular/ssr';
29+
import * as express from 'express';
30+
import { resolve, join } from 'node:path';
31+
import { AppServerModule } from './app/app.module.server';
32+
33+
export function app(): express.Express {
34+
const server = express();
35+
const distFolder = resolve(__dirname, '../dist');
36+
const indexHtml = join(distFolder, 'index.html');
37+
const commonEngine = new CommonEngine();
38+
39+
server.set('view engine', 'html');
40+
server.set('views', distFolder);
41+
42+
server.get('*.*', express.static(distFolder, {
43+
maxAge: '1y'
44+
}));
45+
46+
server.get('*', (req, res, next) => {
47+
commonEngine
48+
.render({
49+
bootstrap: AppServerModule,
50+
documentFilePath: indexHtml,
5051
url: req.originalUrl,
51-
});
52-
});
52+
publicPath: distFolder,
53+
})
54+
.then((html) => res.send(html))
55+
.catch((err) => next(err));
56+
});
5357
54-
return server;
55-
}
58+
return server;
59+
}
5660
57-
app().listen(process.env['PORT']);
61+
app().listen(process.env['PORT']);
5862
59-
export * from './app/app.module.server';
63+
export * from './app/app.module.server';
6064
`,
6165
});
6266
});

0 commit comments

Comments
 (0)