SpringBoot和Vue的工程化实践之分分合合


声明:本文转载自https://my.oschina.net/qixiaobo025/blog/1579536,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

背景

由于现在普遍的前后端分离开发 【前端vuejs 后端springboot】那么存在如下工程化问题:

  1. 目前SpringBoot采用fatjar的形式发布
  2. Vue通过nodejs运行
  3. 发布时Vue打包出来的结果没有后端支持将无法访问

存在如下的方案

  1. 开发时将前后端项目联合开发,前端代码存在后端的子目录下【不建议】
  2. 开发时vue使用vue-cli的纯粹前端方案 部署时将生成的代码copy到后端项目中
     

方案

我们建议采用方案2,但是部署时不建议copy【不利于工程化的实践】

我们采用如下方式进行工程化的实践。【将vue代码copy到static文件夹下同样道理】

  1. 我们定义vue访问时采用固定前缀【比如ui】
  2. 访问ui目录时通过SpringBoot后端重定向到指定目录文件【更好的方案在生产上建议使用cdn或者nginx】
  3. 我们考虑增加SpringBoot的Resourcehandler

代码

定义对应映射关系

resource.resource-handler-list[0].pattern=/ui/** resource.resource-handler-list[0].location=file:/Users/qixiaobo/Downloads/

定义具体对应类

/**  * @author qixiaobo  */ public class ResourceHandler {     private String pattern;     private String location;       public String getPattern() {         return pattern;     }       public void setPattern(String pattern) {         this.pattern = pattern;     }       public String getLocation() {         return location;     }       public void setLocation(String location) {         this.location = location;     } }

定义配置文件

/**  * @author qixiaobo  */ @ConfigurationProperties(prefix = "resource", ignoreUnknownFields = true) public class ResourceHandlerConfig {     private List<ResourceHandler> resourceHandlerList;       public List<ResourceHandler> getResourceHandlerList() {         return resourceHandlerList;     }       public void setResourceHandlerList(List<ResourceHandler> resourceHandlerList) {         this.resourceHandlerList = resourceHandlerList;     } }
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {     registry.addResourceHandler("swagger-ui.html")             .addResourceLocations("classpath:/META-INF/resources/");       registry.addResourceHandler("/webjars/**")             .addResourceLocations("classpath:/META-INF/resources/webjars/");     List<ResourceHandler> resourceHandlerList = resourceHandlerConfig().getResourceHandlerList();     for (ResourceHandler resourceHandler : resourceHandlerList) {         registry.addResourceHandler(resourceHandler.getPattern())                 .addResourceLocations(resourceHandler.getLocation());     }   }   @Bean public ResourceHandlerConfig resourceHandlerConfig() {     return new ResourceHandlerConfig(); }

如上我们就完成了映射关系

这样就能访问到指定的文件

本文发表于2017年11月24日 18:33
(c)注:本文转载自https://my.oschina.net/qixiaobo025/blog/1579536,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 3090 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1