【问题标题】:Angular deploying application server needed?需要 Angular 部署应用程序服务器?
【发布时间】:2018-04-18 17:16:22
【问题描述】:

我想到了一个关于 Angular 项目的问题,但我找不到令人满意的答案。当我用谷歌搜索它时,我只想出了如何部署应用程序而不是回答我的具体问题的答案。

通常在开发 Angular 应用程序时,我们可以运行 ng serve 以获得开发服务器。然后,当我们访问 dev 服务器时,我们会获得以下 SPA 所需的文件。

开发服务器为我们唯一的静态 HTML 资产提供 index.html 文件和运行我们的应用程序所需的已编译 Angular 代码包。

当我们部署一个 Angular 应用程序时,Angular 应用程序是否还需要一个服务器来为该应用程序提供服务?或者我们可以只从后端提供这些文件包吗?

【问题讨论】:

  • 您只需要生成的文件。将它们放在您的 Web 服务器的根目录中,它应该可以正常工作。
  • 生成的文件是指问题图片中的文件?
  • 是的,通常它们位于名为 build 或 dist 的文件夹中
  • 好的,如果我理解正确的话:在 nodeJS express 应用程序中,我通过对根 URL 的 GET 请求提供这些文件
  • 实际上,如果你把它们放在你的 web 服务器的根目录下(var/www/ 如果你使用 linux 和 apache)它会自动挂接到 index.html 并且 index.html 会加载休息。

标签: javascript angular deployment web-deployment


【解决方案1】:

您需要使用$ ng build 命令生成您的应用程序文件。构建工件将存储在 dist/ 目录中。然后您可以使用像Surge 这样的服务作为静态网络发布或其他网络服务器。
另一方面,如果您的应用程序使用Angular Router,我上面所说的就不会很好地工作。您需要添加一个中间件。
例如,如果您使用 Express,则需要添加如下内容:

// server.js
const path = require('path');
app.get('/*all', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/index.html'));
});

希望我能帮上忙!

【讨论】:

  • 好的,如果我发送这个索引文件,它会自动包含使其能够正常运行的脚本(作为脚本标签)?
  • 是的,所有资源和脚本将作为构建的一部分自动复制。
猜你喜欢
  • 2021-01-17
  • 2016-04-09
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多