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.tsimport { ngExpressEngine } from '@nglibs/universal-express-engine'

测试

在这个讨论之后我可以看到这是一个新的实现

尝试按照提示导入,但不起作用(命名空间不存在)

已按照此拉取请求中的建议使用版本 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 和一切..非常好 =)