You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Vue.js与Quarkus微服务架构下前后端开发部署方式咨询

Quarkus + Vue 微服务架构:前后端开发部署方案解析

Hey there! 作为刚接触微服务和Quarkus+Vue技术栈的新手,你的问题其实是很多入门开发者都会纠结的点,我来给你拆解清楚两种场景下的最佳实践:

一、开发模式:优先分开运行在不同端口

几乎所有团队在开发阶段都会选择让Quarkus(后端)和Vue(前端)分别运行在不同端口(比如你说的localhost:8080localhost:8081),原因主要有这几点:

  • 互不干扰的热重载:Quarkus的dev模式支持代码修改后快速重启,Vue的开发服务器则能实时刷新前端页面,分开运行的话,两者的热更新流程完全独立,不会互相拖慢。
  • 贴近生产的调用逻辑:生产环境中前后端大概率是分开部署的,开发时用跨域请求的方式调用接口,能提前适配真实场景。你可以在Vue项目里配置代理,避免浏览器的跨域限制——比如在vue.config.js里加这段配置:
    module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: 'http://localhost:8080',
            changeOrigin: true
          }
        }
      }
    }
    
    这样前端代码里写axios.get('/api/users'),就会自动转发到后端的8080端口,不用写完整的域名。
  • 独立调试更高效:前端用浏览器DevTools调试样式、接口请求,后端用IDE断点调试业务逻辑,分开端口后各自的日志、调试流程不会混乱,排查问题更方便。

二、生产部署:两种方案可选

方案1:完全分开部署(微服务架构主流方案)

这是微服务模式下最推荐的部署方式:

  • 后端Quarkus打包成可执行jar或者Native镜像,部署在独立的服务器、Kubernetes Pod或者Docker容器中;
  • 前端Vue执行npm run build打包成静态文件(生成dist目录),部署在Nginx、CDN或者专门的静态资源服务器上。
  • 核心优势:
    • 独立扩容:如果后端接口压力大,可以单独给后端加实例;前端则可以通过CDN全球加速,两者扩容互不影响。
    • 技术栈独立迭代:Quarkus升级、Vue框架更新,都不需要考虑对方的依赖,各自维护成本更低。
    • 安全隔离:后端接口可以通过API网关做权限校验、流量控制,前端静态资源直接暴露在外,降低后端服务直接暴露的风险。

方案2:整合部署(适合小型项目/特定场景)

如果你负责的是小型项目,或者团队不想维护两套部署流程,也可以把前后端整合在一起部署:

  • 先把Vue打包成静态文件,然后将dist目录下的所有文件复制到Quarkus项目的src/main/resources/META-INF/resources目录中;
  • 打包Quarkus应用后,启动服务时,访问根路径(比如localhost:8080)就会加载Vue的页面,接口请求依然指向/api开头的路径,不用处理跨域。
  • 适合场景:项目规模小,团队人手有限;或者需要快速部署一个单体式的微服务实例。
  • 缺点:扩容时需要同时扩容整个应用,前后端耦合度变高,升级其中一方需要重新打包整个项目。

总结

  • 开发阶段强烈建议分开运行在不同端口,用代理解决跨域,既方便调试,又能提前模拟生产环境的调用逻辑;
  • 生产阶段优先选择完全分开部署,符合微服务的设计理念,灵活性和可维护性更高;如果是小型项目或有特殊需求,再考虑整合部署。

内容的提问来源于stack exchange,提问作者kinzkowski

火山引擎 最新活动