添加静态预渲染到 ng add @nguniversal/express-engine
Add static pre-rendering to ng add @nguniversal/express-engine
我按照 Angular 文档 here.
向我的 Angular 项目添加了服务器端渲染
我发现 运行 静态预渲染 npm run build:prerender
和 npm run serve:prerender
的命令在使用 CLI 后不存在命令:
ng add @nguniversal/express-engine --clientProject [angular.projet]
我想知道Universal是否还支持静态预渲染?生成的代码都是关于动态SSR的。
这很奇怪,因为我在 universal-starter.
上找到了这些命令
有人知道这方面的信息吗?另外,如何在我的 angular 项目中添加静态预渲染?
要重现,运行 在终端:
ng new foo
开始新项目
ng add @nguniversal/express-engine --clientProject foo
添加通用
感谢您的帮助。
我找到了手动添加静态预渲染的方法。
对于那些感兴趣的人,手动添加静态预渲染的所有步骤 ng add @nguniversal/express-engine
:
ng add @nguniversal/express-engine --clientProject [your project name]
初始化服务端app模块,app.server.module.ts
在 server.ts
旁边的项目的根级别创建文件 prerender.ts
和 static.paths.ts
将 https://github.com/angular/universal-starter/blob/master/prerender.ts 的内容复制到您的 prerender.ts
文件中
按照示例 https://github.com/angular/universal-starter/blob/master/static.paths.ts
在 static.paths.ts
中创建路线
在您的webpack.server.config.js
中添加预呈现条目:
module.exports = {
mode: 'none',
entry: {
server: './server.ts',
prerender: './prerender.ts'
},
在 package.json
:
添加预渲染脚本
"scripts": {
...
"build:prerender": "npm run build:client-and-server-bundles && npm run compile:server && npm run generate:prerender",
"generate:prerender": "cd dist && node prerender",
"serve:prerender": "cd dist/browser && http-server"
}
由
编辑您的 prerender.ts
的第 17 行
const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
安装包 http-server 以服务预渲染构建:
npm install http-server --save-dev
您现在可以开始了!
npm run build:prerender && npm run serve:prerender
Starting up http-server, serving ./
Available on:
http://127.0.0.1:8080
http://192.168.0.10:8080
Hit CTRL-C to stop the server
[编辑]
降级到 版本 0.9.0 实际上似乎是最好的选择。
如果您是使用版本 .0.11.0。 ecstatic 在 0.11.0 版本中存在一个错误。如果您遇到问题,请阅读讨论帖 here 并查看一些解决方案。如果您遇到此问题并且不想升级 http-server,请降级您的 ecstatic 版本,或者明确导航到 index.html 以呈现您的页面。
我很高兴能够启动 SSR 并 运行ning,但是 运行 进入这个问题并且它确实耗费了一些时间。希望对您有所帮助。
我按照 Angular 文档 here.
向我的 Angular 项目添加了服务器端渲染我发现 运行 静态预渲染 npm run build:prerender
和 npm run serve:prerender
的命令在使用 CLI 后不存在命令:
ng add @nguniversal/express-engine --clientProject [angular.projet]
我想知道Universal是否还支持静态预渲染?生成的代码都是关于动态SSR的。
这很奇怪,因为我在 universal-starter.
上找到了这些命令有人知道这方面的信息吗?另外,如何在我的 angular 项目中添加静态预渲染?
要重现,运行 在终端:
ng new foo
开始新项目ng add @nguniversal/express-engine --clientProject foo
添加通用
感谢您的帮助。
我找到了手动添加静态预渲染的方法。
对于那些感兴趣的人,手动添加静态预渲染的所有步骤 ng add @nguniversal/express-engine
:
ng add @nguniversal/express-engine --clientProject [your project name]
初始化服务端app模块,app.server.module.ts在
server.ts
旁边的项目的根级别创建文件 将 https://github.com/angular/universal-starter/blob/master/prerender.ts 的内容复制到您的
prerender.ts
文件中按照示例 https://github.com/angular/universal-starter/blob/master/static.paths.ts
在 在您的
webpack.server.config.js
中添加预呈现条目:module.exports = { mode: 'none', entry: { server: './server.ts', prerender: './prerender.ts' },
在
添加预渲染脚本package.json
:"scripts": { ... "build:prerender": "npm run build:client-and-server-bundles && npm run compile:server && npm run generate:prerender", "generate:prerender": "cd dist && node prerender", "serve:prerender": "cd dist/browser && http-server" }
由
编辑您的prerender.ts
的第 17 行const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
安装包 http-server 以服务预渲染构建:
npm install http-server --save-dev
您现在可以开始了!
npm run build:prerender && npm run serve:prerender Starting up http-server, serving ./ Available on: http://127.0.0.1:8080 http://192.168.0.10:8080 Hit CTRL-C to stop the server
prerender.ts
和 static.paths.ts
static.paths.ts
中创建路线
[编辑] 降级到 版本 0.9.0 实际上似乎是最好的选择。
如果您是使用版本 .0.11.0。 ecstatic 在 0.11.0 版本中存在一个错误。如果您遇到问题,请阅读讨论帖 here 并查看一些解决方案。如果您遇到此问题并且不想升级 http-server,请降级您的 ecstatic 版本,或者明确导航到 index.html 以呈现您的页面。
我很高兴能够启动 SSR 并 运行ning,但是 运行 进入这个问题并且它确实耗费了一些时间。希望对您有所帮助。