带有Node API的Vue App:项目结构

时间:2018-11-05 11:07:36

标签: node.js vue.js google-cloud-platform

对于我的第一篇文章,我想征询您有关使用API​​使用Node的Vue App的意见。

对于一个小型项目,我在两个文件夹中进行本地处理: -客户(VueJs) -服务器(节点)

然后使用npm分别运行它们: -npm运行开发 -npm run watch

直到现在,一切都很好,因为我可以开发我的应用程序...但是有关部署,我有点迷失了。

对于VueJs端,我使用以下命令构建用于生产的应用程序:npm run build 我的应用程序已在client / dist中创建

对于我的服务器,我可以使用Forever,Nodemon或其他任何东西...

但是,这是我的问题: 如何将两者部署在同一实例中?

直到现在,我虽然可以在构建它时将dist文件夹移到服务器端。

但是我要使用两个不同的端口将它们分开:一个用于api,一个用于客户端。

我一个人学习时,我不知道最佳实践,因此任何技巧都会令人感激。

(顺便说一句,我试图将其部署在Google Cloud Instance上,但我也迷失了)

感谢您阅读

3 个答案:

答案 0 :(得分:2)

位于最底端的行,您无法将前端和后端部署在不同的端口上,并希望它们彼此通信。浏览器安全模型将启动并阻止客户端回滚。

也就是说,您可以将它们分别部署在同一域上(尽管它们可以是不同的子域,例如www.example.com和api.example.com),您可以单独部署。

这在某种程度上取决于您使用的是什么Google云资源,但是一个常见的版本是从Google Cloud Compute获得一台虚拟机,将客户端和服务器都推送到其中,然后设置一个Web服务器,例如NGINX既可以在一个路径或子域上提供客户端文件,又可以在另一路径或子域上充当api的反向代理。这是一个非常有据可查的方法/体系结构。

答案 1 :(得分:0)

我没有尝试使用Google Cloud,但是最佳实践是:一台服务器用于前端,另一台服务器用于后端。例如,通过这种方式,您可以使用相同的API使用不同的前端。您应该考虑的另一件事是身份验证,以向api发送请求。如果需要,我有一个Vuejs样板,可以在Heroku上完全部署。

答案 2 :(得分:0)

您可以在同一端口下为它们提供服务。基本上,您可以构建前端,并让NodeJS服务器(正在运行API)从client / dist文件夹提供前端文件。

如果您使用的是ExpressJS,则可以提供如下静态文件:

// relative to where you run the node app
app.use(express.static("path/to/client/dist"));

文档: https://expressjs.com/en/starter/static-files.html

对于开发而言,如果您正在运行webpack / VueJS开发服务器,它将变得有些棘手,因为它在与NodeJS api不同的端口上运行。如果您将Vue-CLI用于VueJS应用,请考虑使用webpack的devServer代理:https://cli.vuejs.org/config/#devserver-proxy

对于生产而言,理想情况下,您需要在NodeJS之前放置一个Web服务器(如Nginx)以提供静态/ dist文件-减少NodeJS应用程序的负载。