[toc]

开发环境

IDEA V2018.5

npm v6.4.x

vue-cli v2.9.x

创建项目

IDEA > Create New Project > Gradle

2018-10-27.10.40.49-image.png

此处的 Frameworks全部取消勾选,接着就一直 Next,提示填写的地方填写,不需要填写的就用默认配置就 ok。

项目创建成功,项目结构应该是这样的。

2018-10-27.10.48.48-image.png

创建后台模块

▼ 项目 > 右键 > New > Module

2018-10-28.00.50.19-image.png

▼ Spring Initializr

2018-10-28.00.52.21-image.png

▼ 这一步按照正常项目信息填写。

注意:Type 属性需要选择 Gradle Config

2018-10-28.00.54.47-image.png

▼ 按照自己需要的依赖进行选取

2018-10-28.00.57.14-image.png

▼ 下一步默认,然后 Finish。之后需要等待 Gradle 进行模块的初始化,如果是首次创建 SpringBoot 项目,此处初始化可能需要比较长的时间,需要耐心和良好的网络环境。

2018-10-28.01.03.54-image.png

成功后是如上所示结构,之后我们需要手动完善一些结构和配置

配置后台模块

一、配置模块依赖

在根项目的settings.gradle文件中增加 include 'server'

2018-10-28.01.08.45-image.png

二、完善 server 项目工程结构

server 目录默认创建出来只有一个build.gradle文件,我们需要手工完善项目结构

2018-10-28.01.15.43-image.png

如上图所示,可以看到,我们其实建立出来的就是一个标准的 java 工程结构。

src 目录下游 main 目录,正常情况此处src 下还需要有 test 目录,这里演示就略过了。

main 下面创建 java 和 resources 。

java 下面创建对应的包结构和 SpringBoot 的启动类,代码如图的右边区域,非初次接触 SpringBoot 对这个代码应该不陌生。

resources 目录下暂时就只创建配置文件application.yml。

三、配置后台数据源

加入了数据源的 SpringBoot 项目需要在application.yml中配置数据源信息,否则项目会启动失败。

2018-10-28.02.32.31-image.png

# 配置项目的数据源

spring:

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false

password: root

username: root

到此后台模块创建配置完成

创建前端模块

▼ 项目 > 右键 > New > Module

2018-10-28.01.25.41-image.png

前端模块这里选择 Gradle,然后注意右边 Frameworks 这里需要取消 java 的勾选

2018-10-28.01.28.34-image.png

这一步只需要填写一下 ArtifactId,名字可以自己定义,不一定要照搬我的命名习惯。然后一直下一步 直到 Finish。

2018-10-28.01.30.37-image.png

模块完成初始化后,结构如上图所示,多出一个 client 目录,也是只有一个 build.gradle 文件。由于这个我们之间选择的新增 Gradle 的模块,所以在 settings.gradle 文件中,工具自动帮我们把 include 补全了。

▼▼▼接下来就是比较关键的步骤了,敲黑板.....▼▼▼

我们需要将 client 模块初始化为 vue 项目。这里我们用到的 vue 提供的vue-cli模块。

关于 vue-cli 的安装请参考百度。

初始化 vue 项目

打开 idea 底部的 Terminal

2018-10-28.01.38.58-image.png

在控制台输入:

vue init webpack client

注意: 此处的项目名称一定需要和你的创建前端模块的名称一致。例如我的前端模块目录是 client,我这里就是vue init webpack client。然后其他的配置,的配置选项就是正常的 vue 初始化过程了。我这里选择的构建工具是 Yarn,不是 npm。此处的选择不影响后面的构建。

2018-10-28.01.46.08-image.png

这一步完成后,基本的前端模块算初始化完成。接下来,我们需要将前端模块整合道 Gradle 中便于统一编译和管理。

配置前端模块

一、clinet/build.gradle配置

2018-10-28.01.54.54-image.png

将clinet/build.gradle内容修改为如下:

plugins {

id "com.moowork.node" version "1.2.0"

}

node {

version = '8.7.0'

yarnVersion = '1.3.2'

download = true

}

task bootRun(dependsOn: 'start') {

group = 'application'

description = 'Run the client app (for use with gradle bootRun -parallel)'

}

task start(type: YarnTask, dependsOn: 'yarn') {

group = 'application'

description = 'Run the client app'

args = ['run', 'start']

}

task build(type: YarnTask, dependsOn: 'yarn') {

group = 'build'

description = 'Build the client bundle'

args = ['run', 'build']

}

此处主要是为Gradle 配置了几个任务。大致意思就是用 Gradle 来代理执行前端的编译命令。

二、build.gradle配置

这里需要配置是根项目下的build.gradle

2018-10-28.02.01.29-image.png

在build.gradle 中追加下面代码

task copyHtml(type: Copy) {

group = 'build'

description = '复制编译后的index.html到 server 的 resource 目录'

from 'client/dist/index.html'

into 'server/build/resources/main/static'

}

task copyStatic(type: Copy, dependsOn: 'copyHtml') {

group = 'build'

description = '复制编译后的静态文件到 server 的 resource 目录'

from 'client/dist/static'

into 'server/build/resources/main/static/static'

}

copyStatic.mustRunAfter('client:build')

task mergeBuild(dependsOn: ['client:build', ':copyStatic', 'server:bootJar']) {

group = 'build'

description = '合并编译输出'

}

task independentBuild(dependsOn: ['client:build', 'server:bootJar']) {

group = 'build'

description = '独立编译输出'

}

此处主要解释一下mergeBuild和independentBuild

mergeBuild:合并编译输出

合并编译输出输出的意思,表示前后端开发的时候是分模块分离开发,但是最终编译到发布项目的时候,会将前端编译的静态内容和html 复制道后台SpringBoot 项目的静态资源目录中,从而达到一体发布。

independentBuild:独立编译输出

独立编译输出区别于mergeBuild是不会复制前端文件到SpringBoot端来,所以我们在部署项目的时候,需要单独部署前端服务。

三、配置前端开发模式代理

2018-10-28.02.12.45-image.png

client/config/index.js 修改proxyTable和port两处配置,如图所示。端口修改是因为,SpringBoot 运行的默认端口也是8080,为了不冲突,前端修改端口。proxyTable表示在开发阶段,前端所有已/server开头的请求,都代理到http://localhost:8080后台服务进行处理,pathRewrite意思是代理的转发时,剔除/server部分。

例:

前台请求:http://localhost:8081/server/user/list

实际代理执行请求:http://localhost:8080/user/list

端口和路径都发生了变化

到此项目的初始配置就基本完成。

最后:如何运行项目

2018-10-28.02.22.52-image.png

找到 idea 右边栏上的 Gradle 选项卡,打开找到 vueb 下面的 Tasks>appplication>bootRun 右键选择Create 'vueb [bootRun]'...

2018-10-28.02.24.32-image.png

在 Arguments 中增加-parallel参数,然后 ok。

2018-10-28.02.26.27-image.png

最后在运行栏中可以看到配置的启动项。点击旁边的三角形就可以同时启动前端和后端服务。

2018-10-28.02.27.45-image.png

最后可以看到控制台提示两个启动成功的信息,则表示项目构建成功。

2018-10-28.02.36.03-image.png

上图所示,表示 SpringBoot 项目启动成功

2018-10-28.02.36.17-image.png

上图所示,前端项目启动成功,我们可以访问http://localhost:8081

2018-10-28.02.38.04-image.png

Over

node vue 合并项目_吐血整理最佳实践:SpringBoot整合Vue前后端分离开发相关推荐

  1. 【转】Vue.js入门教程(一)从静态页面到前后端分离开发

    第一章:基础知识 我能看懂吗? 只要你现在能用html+css+js制作一个静态页面,相信我,你100%可以读懂这篇文章. 本文尤其适合那些想要了解前后端分离开发技术,或者刚刚脱离传统MVC开发模式的 ...

  2. sm4 前后端 加密_这7个开源的Spring Boot前后端分离项目整理给你

    来源|公众号:江南一点雨 前后端分离已经开始逐渐走进各公司的技术栈,不少公司都已经切换到前后端分离开发技术栈上面了,因此建议技术人学习前后端分离开发以提升自身优势.同时,也整理了 7 个开源的 Spr ...

  3. springboot jwt token前后端分离_基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目...

    一.前言 最近整合Spring Boot+Spring Security+JWT+Vue 完成了一套前后端分离的基础项目,这里把它开源出来分享给有需要的小伙伴们 功能很简单,单点登录,前后端动态权限配 ...

  4. springboot jwt token前后端分离_「转」七个开源的 Spring Boot 前后端分离项目,建议收藏加转载...

    其实前后端分离本身并不难,后段提供接口,前端做数据展示,关键是这种思想.很多人做惯了前后端不分的开发,在做前后端分离的时候,很容易带进来一些前后端不分时候的开发思路,结果做出来的产品不伦不类,因此松哥 ...

  5. 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java

    SpringBoot2+Vue+AntV前后端分离开发项目实战 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独特的培训思 ...

  6. 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  7. springboot jwt token前后端分离_7个开源的 Spring Boot 前后端分离项目,一定要收藏!...

    前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年 ...

  8. elementui datetimepicker 移动端_在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了

    作为 2019 年 Gitee 上最受欢迎的开源项目,权限管理系统 RuoYi 已经在 Gitee 上获得了超过 11K 的 Star. 这次作者若依推出了基于 SpringBoot + Vue + ...

  9. springboot flask php,使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发(二)

    使用Vue完成前后端分离开发(二) Bravery never goes out of fashion. 勇敢永远不过时. 前面简单说了一下 Vue 项目的搭建和项目的大致页面,这里讲一下 Djang ...

最新文章

  1. java快排算法解读,java 快排的思路与算法
  2. python dicom 器官分割_python+opencv阈值分割
  3. 组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H
  4. java环境变量javac不能成功 win7_配置Java环境
  5. java 有序map_Java有序的Hash集合:LinkedHashMap
  6. setuptools清华源_setuptools与pip的依赖关系解决方案之间的差异
  7. Android5.0和6.0之后新增的控件说明
  8. 五秒原则,做一件事之前数 5 秒,1,2,3,4,5 立马去做。比如睡觉:数五秒,立马放下手机,闭眼。...
  9. java总结体会_Java课程总结心得体会
  10. 5种设计有效按钮的最佳做法
  11. STM32F407读取ADS1115数据
  12. 围绕禅道介绍公司流程
  13. 基于Transformer的数字子母翻译
  14. 无线网关服务器搭建教程,【树莓派】简易LoRa网关搭建+服务器设置一条龙教程(the things network)...
  15. [bzoj5473]仙人掌
  16. 3 个 Linux 中快速检测端口的小技巧
  17. java知识串讲_java基础知识串讲
  18. python --机器学习(基本算法详解)SciPy、Numpy、Matplotlib
  19. Numerical Optimization Ch10. Least-Squares Problems
  20. Python PEP8规范整理

热门文章

  1. Python数据分析之一元线性回归
  2. C# 杀掉指定进程
  3. 玩转“网上邻居”之网络配置(一)
  4. centOS7.6安装MySQL8
  5. 关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;...
  6. hadoop中的helloword
  7. Android系统--输入系统(八)Reader线程_使用EventHub读取事件
  8. C# DataTable怎么合计字段
  9. sersync2 安装,配置
  10. 转:PHP中实现非阻塞模式