对于我的第一篇文章,我想征询您有关使用API使用Node的Vue App的意见。
对于一个小型项目,我在两个文件夹中进行本地处理: -客户(VueJs) -服务器(节点)
然后使用npm分别运行它们: -npm运行开发 -npm run watch
直到现在,一切都很好,因为我可以开发我的应用程序...但是有关部署,我有点迷失了。
对于VueJs端,我使用以下命令构建用于生产的应用程序:npm run build 我的应用程序已在client / dist中创建
对于我的服务器,我可以使用Forever,Nodemon或其他任何东西...
但是,这是我的问题: 如何将两者部署在同一实例中?
直到现在,我虽然可以在构建它时将dist文件夹移到服务器端。
但是我要使用两个不同的端口将它们分开:一个用于api,一个用于客户端。
我一个人学习时,我不知道最佳实践,因此任何技巧都会令人感激。
(顺便说一句,我试图将其部署在Google Cloud Instance上,但我也迷失了)
感谢您阅读
答案 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应用程序的负载。