Angular Universal Server Side Rendering 会 return 更多 HTML 根据请求呈现
Angular4 Universal Server Side Rendering would return more HTML rendered on request
我正在尝试使用 universal 和 angular4..一切正常,也可以直接通过哈希路由访问..但问题是请求总是显示 <body><demo-app></demo-app></body>
我希望在 <demo-app></demo-app>
中包含一些 html 标签和信息
我是这样实现的:
@NgModule({
bootstrap: [AppComponent],
imports: [
BrowserModule.withServerTransition({
appId: 'my-app-id'
}),
ServerModule,
ServerTransferStateModule,
AppModule
]
})
export class ServerAppModule {
constructor(private transferState: TransferState,
private translateService: TranslateService){
translateService.use('en');
}
// Gotcha
ngOnBootstrap = () => {
this.transferState.inject();
}
}
app.engine('html', ngExpressEngine({
bootstrap: ServerAppModule
}));
app.set('view engine', 'html');
app.set('views', 'src');
app.get("*", (req, res) => {
console.time(`GET: ${req.originalUrl}`);
res.render('../dist/index', {
req: req,
res: res
});
console.timeEnd(`GET: ${req.originalUrl}`);
});
我的版本是 "@angular/common": "^4.0.0"
使用 https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts 和 import { ngExpressEngine } from '@nglibs/universal-express-engine'
测试
在这个讨论之后我可以看到这是一个新的实现
尝试按照提示导入,但不起作用(命名空间不存在)
- 从'@universal/ng-express-engine'
导入{ngExpressEngine}
已按照此拉取请求中的建议使用版本 rc.5 进行测试。
最后,按照这个link
https://github.com/angular/universal/tree/master/modules/ng-express-engine
用这个库测试得到相同的结果:
import { ngExpressEngine } from '@nguniversal/express-engine';
至少这个项目是 运行,所以我可以继续编码和使用它..但期待有一个完整的服务器端渲染。
谢谢!
For Angular 4+ with platform-server, use the official @nguniversal/express-engine
, 另一个看起来像是旧版本的 express-engine有人出于某种原因发布了?
命名空间现在将是 @nguniversal
,所以试一试,你应该没问题!
您可以在此处找到有关最新通用快速引擎(适用于 Angular 4+ 和平台服务器)的 文档:
https://github.com/angular/universal/tree/master/modules/ng-express-engine
感谢@mark-pieszak 的关注与支持!
我可以使用 https://github.com/clbond/angular-ssr 使它工作,使用 angular-material 和一切..非常好 =)
我正在尝试使用 universal 和 angular4..一切正常,也可以直接通过哈希路由访问..但问题是请求总是显示 <body><demo-app></demo-app></body>
我希望在 <demo-app></demo-app>
我是这样实现的:
@NgModule({
bootstrap: [AppComponent],
imports: [
BrowserModule.withServerTransition({
appId: 'my-app-id'
}),
ServerModule,
ServerTransferStateModule,
AppModule
]
})
export class ServerAppModule {
constructor(private transferState: TransferState,
private translateService: TranslateService){
translateService.use('en');
}
// Gotcha
ngOnBootstrap = () => {
this.transferState.inject();
}
}
app.engine('html', ngExpressEngine({
bootstrap: ServerAppModule
}));
app.set('view engine', 'html');
app.set('views', 'src');
app.get("*", (req, res) => {
console.time(`GET: ${req.originalUrl}`);
res.render('../dist/index', {
req: req,
res: res
});
console.timeEnd(`GET: ${req.originalUrl}`);
});
我的版本是 "@angular/common": "^4.0.0"
使用 https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts 和 import { ngExpressEngine } from '@nglibs/universal-express-engine'
在这个讨论之后我可以看到这是一个新的实现
尝试按照提示导入,但不起作用(命名空间不存在)
- 从'@universal/ng-express-engine' 导入{ngExpressEngine}
已按照此拉取请求中的建议使用版本 rc.5 进行测试。
最后,按照这个link
https://github.com/angular/universal/tree/master/modules/ng-express-engine
用这个库测试得到相同的结果:
import { ngExpressEngine } from '@nguniversal/express-engine';
至少这个项目是 运行,所以我可以继续编码和使用它..但期待有一个完整的服务器端渲染。
谢谢!
For Angular 4+ with platform-server, use the official @nguniversal/express-engine
, 另一个看起来像是旧版本的 express-engine有人出于某种原因发布了?
命名空间现在将是 @nguniversal
,所以试一试,你应该没问题!
您可以在此处找到有关最新通用快速引擎(适用于 Angular 4+ 和平台服务器)的 文档:
https://github.com/angular/universal/tree/master/modules/ng-express-engine
感谢@mark-pieszak 的关注与支持!
我可以使用 https://github.com/clbond/angular-ssr 使它工作,使用 angular-material 和一切..非常好 =)