node.js - 如何将 Angular(前端)和 Node.js(服务器)应用程序打包在一起

标签 node.js angular express

我正在构建一个 Angular 8 前端应用程序,以及一个使用 Express 框架作为应用程序后端的 Node.js Web 应用程序。基于 Express 的服务器端 Web 应用程序将公开一个 REST API,该 API 将由 Angular 应用程序使用,而 Angular 应用程序又可以对外部服务进行 HTTP 调用。

由于特定原因,我需要将这两个应用程序一起分发。我还想将这两个应用程序的开发作为一个项目来管理。我在网上搜索了一些好的做法,看到了几种方法,例如:

  • 为 Angular 应用程序提供服务,就像在 Node.js Web 应用程序的目录中提供一组静态文件一样
  • 通过在顶级文件夹的 package.json 文件中定义脚本,使用concurrently 之类的包同时运行 Angular 和 Node.js 应用程序。

我想有多种方法可以实现这一目标,我希望有人可以使用相同或相似的堆栈来分享一种常见的方法。

2019 年 10 月 21 日更新 我想提供一些有关我的具体要求的背景信息。我不打算将其托管在外部服务器上。最终,我的目标是创建一个封装前端和 Web 应用程序的 Electron 应用程序。我目前正在为此进行原型(prototype)设计以供本地开发和执行,并分发给一些用户进行审查。

最佳答案

部署 Angular 应用程序时,应将其作为静态 Assets 文件(html、js、css - 或 bundle )交付,然后由常规 Web 服务器提供服务。所以你的第一种方法看起来是正确的。当访问您自己的后端时,您不必关心 CORS 问题,因为请求将是同源的。

第二个想法看起来像是您想要使用 Angular CLI 开发服务器,这对于生产来说不是一个好主意。所以我不会走那条路。

作为替代方案,您可以使用容器并为前端提供一个 Angular 容器(例如使用 nginx 来提供 Assets ),并为 Node 应用程序提供第二个容器。这些可以使用正确配置的反向代理进行集成,或者作为前面有 Ingress 的 pod 部署到 kubernetes(毕竟是反向代理)。

关于node.js - 如何将 Angular(前端)和 Node.js(服务器)应用程序打包在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476447/

相关文章:

node.js - 无法在 WebStorm 中调试 "bad option: --expose_debug_as=v8debug"

javascript - 区域.js : Uncaught RangeError: Maximum call stack size exceeded

javascript - node.js 中间件检查强制参数

javascript - 使用 Express 从提交中删除 .gitignore API key 的最佳实践是什么?

javascript - 使用 Node.js 和 Express.js 在 MySQL 中删除给定值数组的多行

javascript - 在node.js中从客户端了解本地ip服务器

javascript - node/express - 如何将用户输入呈现到页面?

node.js - 分离网络服务器和处理服务器

javascript - 从 angularfire 2 observable 获取单个值

angular2 指令 `Cannot read property ' 使用输出元数据订阅“未定义”