node.js - 带有 Node API 的 Vue 应用程序:项目结构
问题描述
在我的第一篇文章中,我想征求您对 Vue App with an Node using API 的意见。
对于一个小项目,我在两个文件夹中进行本地工作:-客户端(VueJs)-服务器(节点)
并使用 npm 单独运行它们: - npm run dev - npm run watch
到现在为止,一切都很好,因为我可以开发我的应用程序......但是关于部署,我有点迷茫。
对于 VueJs 方面,我使用以下命令构建我的生产应用程序: npm run build 我的应用程序已在 client/dist 中创建
对于我的服务器,我可以使用 Forever、Nodemon 或任何东西......
但是,这是我的问题:如何在同一个实例中部署两者?
到目前为止,我虽然可以在构建它的同时将我的 dist 文件夹移动到服务器端。
但我想将它们分开,使用两个不同的端口:一个用于 api,一个用于客户端。
由于我一个人学习,我不知道最佳实践,任何提示将不胜感激。
(顺便说一句,我正在尝试将它部署在 Google Cloud Instance 上,但我也迷路了)
感谢您阅读
解决方案
最重要的是,您不能将前端和后端部署在不同的端口上并期望它们相互通信。浏览器安全模型将启动并阻止客户端返回。
也就是说,只要它们在同一个域上结束,您就可以单独部署(尽管它们可能是不同的子域,例如 www.example.com 和 api.example.com)。
这在一定程度上取决于您使用的谷歌云资源,但一个常见的版本是拥有一个来自谷歌云计算的虚拟机,您将客户端和服务器都推送到该虚拟机,然后为两者设置一个网络服务器,例如 NGINX在一个路径或子域上提供客户端文件,并通过不同的路径或子域充当您的 api 的反向代理。这是一个非常有据可查的方法/架构。
推荐阅读
- javascript - 如何避免 castArray 函数?
- mysql - 如何在 varchar 上使用 GROUP BY?
- asp.net-mvc - 无法在已发布的 Web 应用程序中创建一些记录
- node.js - NodeJS静态文件夹中的HTML无法加载具有相对路径的资产
- html - 我希望能够从 HTML 文件中提取链接到特定源的 URL
- c# - c# 中 CosmosDB DocumentDB 和 SqlAPI 的性能下降
- c# - 如何使用 Unity 在 Prism 中使用同一实例注册服务?
- for-loop - jmeter中的jsr223后处理器中的条件Json表达式和for循环
- c - 如何比较两个不同字符串中的每个字符?
- regex - 正则表达式匹配以动态字符串开头的字符串