角度4。分离 renderModuleFactory 和前端代码

Angular4. separate renderModuleFactory and front end code

我们可以将 angular 中的 renderModuleFactory 和前端本身分开吗? 我有一个前端项目,我想用 renderModuleFactory/Platform-server(新的 Angular 通用)

的力量来提升它

但我想将 universal 添加为一个单独的项目。

我想在一台主机 (S3) 中提供我的 UI 项目,但在另一台 NodeJS 服务器中提供 renderModuleFactory。 我想从该服务器 (S3)

向 NodeJS 提供我的模板和 JS 文件

但我很困惑,我们如何配置平台服务器以从外部主机请求文件?

任何guidance/links非常感谢


ps。基于此 post:https://www.softwarearchitekt.at/post/2017/03/07/server-side-rendering-with-angular-4.aspx 在 [function ngExpressEngine] 中,我们可以创建自己的逻辑来连接到另一个服务器 (s3)

有没有更简单或者更成熟的方案?

我找到了解决方案

感谢@FrozenPandaz,在这个 repo 中:https://github.com/FrozenPandaz/ng-universal-demo

您可以按如下方式修改 Webpack,它将起作用

在 client.config 中用于 Webpack

更改输出部分

  output: {
    path: root('dist'),
    filename: 'static/[name]-[chunkhash].js',
    chunkFilename: 'static/chunk-[chunkhash]-[id].js'
  },

和 GlobCopyWebpackPlugin

    new GlobCopyWebpackPlugin({
      patterns: [
        {glob: 'assets', output: 'static'},
        {glob: 'manifest.json', output: 'static'},
        {glob: 'favicon.ico', output: 'static'}
      ],
      globOptions: {
        cwd: root('src'),
        dot: true,
        ignore: '**/.gitkeep'
      }
    }),

它将客户端文件移动到名为 static 的子目录 但服务器端文件将保留在 dist 文件夹中 并且 index.html 将按预期从 NodeJS 提供服务器(因为 SSR 要求)

in common.config for webpack ExtractTextPlugin 应该再次更改并加上 static 前缀,将 css 文件移动到静态文件夹

现在所有的链接和文件夹结构都是正确的

静态文件夹可以从 S3 或任何其他静态文件托管服务 dist 文件夹中的其他文件是从 NodeJS

提供服务的最小文件

希望它对其他人有帮助