Angular学习笔记
Angular学习笔记
相关信息
以下内容全部基于Angular 17
appShell
在Angular 17中,appShell的实现方式进行了改为了服务端预渲染的方式生成,但文档尚未更新。 使用ng generate app-shell
会得到类似下面的输出:
1
2
3
4
5
6
7
8
9
10
CREATE src/main.server.ts (264 bytes)
CREATE src/app/app.config.server.ts (652 bytes)
CREATE src/app/app-shell/app-shell.component.html (24 bytes)
CREATE src/app/app-shell/app-shell.component.spec.ts (611 bytes)
CREATE src/app/app-shell/app-shell.component.ts (245 bytes)
CREATE src/app/app-shell/app-shell.component.css (0 bytes)
UPDATE angular.json (2697 bytes)
UPDATE tsconfig.app.json (307 bytes)
UPDATE package.json (1109 bytes)
UPDATE src/app/app.config.ts (347 bytes)
该命令做了如下操作:
- 修改
angular.json
,在/projects/MoreFactory/architect/build/options
处增加了"server": "src/main.server.ts"
- 修改
tsconfig.app.json
,在/files
数组增加了一项src/main.server.ts
- 创建
src/main.server.ts
和src/app/app.config.server.ts
,这是用于服务端运行的入口和配置文件 - 创建
app-shell
组件 - 安装
@angular/platform-server
依赖
该命令会判断
angular.json
是否存在"server": "src/main.server.ts"
,如果存在则尝试修改src/app/app.config.server.ts
而非创建。
在目前版本中(17.0.6),如果设置了通配符路由会导致app-shell渲染的是通配符路由的结果,这是因为
app.config.server.ts
中默认生成的代码中 有一段合并主配置的代码mergeApplicationConfig(appConfig, serverConfig)
,这里将应用主配置作为优选项进行合并,导致通配符路由的优先级高于shell路由。 因此需要改成mergeApplicationConfig(serverConfig,appConfig)
才能让app-shell正常生效。(如果应用主配置定义了名为shell的路由也会导致同样的问题)
本文由作者按照 CC BY-NC-SA 4.0 进行授权